Sfoglia il codice sorgente

fix(anthropic_llm): Ignore non-text parts in the system prompt. (#11107)

-LAN- 4 mesi fa
parent
commit
1db14793fa

+ 9 - 1
api/core/model_runtime/model_providers/anthropic/llm/llm.py

@@ -461,7 +461,15 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
         first_loop = True
         for message in prompt_messages:
             if isinstance(message, SystemPromptMessage):
-                message.content = message.content.strip()
+                if isinstance(message.content, str):
+                    message.content = message.content.strip()
+                elif isinstance(message.content, list):
+                    # System prompt only support text
+                    message.content = "".join(
+                        c.data.strip() for c in message.content if isinstance(c, TextPromptMessageContent)
+                    )
+                else:
+                    raise ValueError(f"Unknown system prompt message content type {type(message.content)}")
                 if first_loop:
                     system = message.content
                     first_loop = False