diff options
| author | adamdottv <[email protected]> | 2025-04-04 14:33:46 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-04-04 14:33:55 -0500 |
| commit | 781b29618049533bdff4a86b038bb6b9aee6b7b6 (patch) | |
| tree | 8cc890f8966ac098182672bca85c2c4dac40fff0 /internal | |
| parent | 64199736677a8ed303291c763975d484ac8f7e99 (diff) | |
| download | opencode-781b29618049533bdff4a86b038bb6b9aee6b7b6.tar.gz opencode-781b29618049533bdff4a86b038bb6b9aee6b7b6.zip | |
fix(anthropic): skip empty messages
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/llm/provider/anthropic.go | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/internal/llm/provider/anthropic.go b/internal/llm/provider/anthropic.go index 2b960ebca..9e3775d33 100644 --- a/internal/llm/provider/anthropic.go +++ b/internal/llm/provider/anthropic.go @@ -258,10 +258,10 @@ func (a *anthropicProvider) convertToAnthropicTools(tools []tools.BaseTool) []an } func (a *anthropicProvider) convertToAnthropicMessages(messages []message.Message) []anthropic.MessageParam { - anthropicMessages := make([]anthropic.MessageParam, len(messages)) + anthropicMessages := make([]anthropic.MessageParam, 0, len(messages)) cachedBlocks := 0 - for i, msg := range messages { + for _, msg := range messages { switch msg.Role { case message.User: content := anthropic.NewTextBlock(msg.Content().String()) @@ -271,7 +271,7 @@ func (a *anthropicProvider) convertToAnthropicMessages(messages []message.Messag } cachedBlocks++ } - anthropicMessages[i] = anthropic.NewUserMessage(content) + anthropicMessages = append(anthropicMessages, anthropic.NewUserMessage(content)) case message.Assistant: blocks := []anthropic.ContentBlockParamUnion{} @@ -295,14 +295,17 @@ func (a *anthropicProvider) convertToAnthropicMessages(messages []message.Messag blocks = append(blocks, anthropic.ContentBlockParamOfRequestToolUseBlock(toolCall.ID, inputMap, toolCall.Name)) } - anthropicMessages[i] = anthropic.NewAssistantMessage(blocks...) + // Skip empty assistant messages completely + if len(blocks) > 0 { + anthropicMessages = append(anthropicMessages, anthropic.NewAssistantMessage(blocks...)) + } case message.Tool: results := make([]anthropic.ContentBlockParamUnion, len(msg.ToolResults())) for i, toolResult := range msg.ToolResults() { results[i] = anthropic.NewToolResultBlock(toolResult.ToolCallID, toolResult.Content, toolResult.IsError) } - anthropicMessages[i] = anthropic.NewUserMessage(results...) + anthropicMessages = append(anthropicMessages, anthropic.NewUserMessage(results...)) } } |
