Просмотр исходного кода

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

-LAN- 4 месяцев назад
Родитель
Сommit
1db14793fa
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      api/core/model_runtime/model_providers/anthropic/llm/llm.py

+ 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