diff --git a/llms/googleai/googleai.go b/llms/googleai/googleai.go
index 0dffd2f2f..21a2498c9 100644
--- a/llms/googleai/googleai.go
+++ b/llms/googleai/googleai.go
@@ -23,11 +23,12 @@ var (
 )
 
 const (
-	CITATIONS = "citations"
-	SAFETY    = "safety"
-	RoleModel = "model"
-	RoleUser  = "user"
-	RoleTool  = "tool"
+	CITATIONS  = "citations"
+	SAFETY     = "safety"
+	RoleSystem = "system"
+	RoleModel  = "model"
+	RoleUser   = "user"
+	RoleTool   = "tool"
 )
 
 // Call implements the [llms.Model] interface.
@@ -208,7 +209,7 @@ func convertContent(content llms.MessageContent) (*genai.Content, error) {
 
 	switch content.Role {
 	case llms.ChatMessageTypeSystem:
-		return nil, ErrSystemRoleNotSupported
+		c.Role = RoleSystem
 	case llms.ChatMessageTypeAI:
 		c.Role = RoleModel
 	case llms.ChatMessageTypeHuman:
@@ -258,6 +259,10 @@ func generateFromMessages(ctx context.Context, model *genai.GenerativeModel, mes
 		if err != nil {
 			return nil, err
 		}
+		if mc.Role == RoleSystem {
+			model.SystemInstruction = content
+			continue
+		}
 		history = append(history, content)
 	}