summaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-04-04 14:33:46 -0500
committeradamdottv <[email protected]>2025-04-04 14:33:55 -0500
commit781b29618049533bdff4a86b038bb6b9aee6b7b6 (patch)
tree8cc890f8966ac098182672bca85c2c4dac40fff0 /internal
parent64199736677a8ed303291c763975d484ac8f7e99 (diff)
downloadopencode-781b29618049533bdff4a86b038bb6b9aee6b7b6.tar.gz
opencode-781b29618049533bdff4a86b038bb6b9aee6b7b6.zip
fix(anthropic): skip empty messages
Diffstat (limited to 'internal')
-rw-r--r--internal/llm/provider/anthropic.go13
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...))
}
}