@@ -70,8 +70,9 @@ func (o *openaiClient) convertMessages(messages []message.Message) (openaiMessag
70 systemMessage = o.providerOptions.systemPromptPrefix + "\n" + systemMessage
70 systemMessage = o.providerOptions.systemPromptPrefix + "\n" + systemMessage
73− systemTextBlock := openai.ChatCompletionContentPartTextParam{Text: systemMessage}
73+ system := openai.SystemMessage(systemMessage)
74 if isAnthropicModel && !o.providerOptions.disableCache {
74 if isAnthropicModel && !o.providerOptions.disableCache {
75+ systemTextBlock := openai.ChatCompletionContentPartTextParam{Text: systemMessage}
75 systemTextBlock.SetExtraFields(
76 systemTextBlock.SetExtraFields(
76 map[string]any{
77 map[string]any{
77 "cache_control": map[string]string{
78 "cache_control": map[string]string{
@@ -79,10 +80,10 @@ func (o *openaiClient) convertMessages(messages []message.Message) (openaiMessag
83+ var content []openai.ChatCompletionContentPartTextParam
84+ content = append(content, systemTextBlock)
85+ system = openai.SystemMessage(content)
83− var content []openai.ChatCompletionContentPartTextParam
84− content = append(content, systemTextBlock)
85− system := openai.SystemMessage(content)
86 openaiMessages = append(openaiMessages, system)
87 openaiMessages = append(openaiMessages, system)
88 for i, msg := range messages {
89 for i, msg := range messages {
@@ -93,9 +94,12 @@ func (o *openaiClient) convertMessages(messages []message.Message) (openaiMessag
93 switch msg.Role {
94 switch msg.Role {
94 case message.User:
95 case message.User:
95 var content []openai.ChatCompletionContentPartUnionParam
96 var content []openai.ChatCompletionContentPartUnionParam
96 textBlock := openai.ChatCompletionContentPartTextParam{Text: msg.Content().String()}
98 textBlock := openai.ChatCompletionContentPartTextParam{Text: msg.Content().String()}
97 content = append(content, openai.ChatCompletionContentPartUnionParam{OfText: &textBlock})
99 content = append(content, openai.ChatCompletionContentPartUnionParam{OfText: &textBlock})
100+ hasBinaryContent := false
98 for _, binaryContent := range msg.BinaryContent() {
101 for _, binaryContent := range msg.BinaryContent() {
102+ hasBinaryContent = true
99 imageURL := openai.ChatCompletionContentPartImageImageURLParam{URL: binaryContent.String(catwalk.InferenceProviderOpenAI)}
103 imageURL := openai.ChatCompletionContentPartImageImageURLParam{URL: binaryContent.String(catwalk.InferenceProviderOpenAI)}
100 imageBlock := openai.ChatCompletionContentPartImageParam{ImageURL: imageURL}
104 imageBlock := openai.ChatCompletionContentPartImageParam{ImageURL: imageURL}
@@ -108,8 +112,11 @@ func (o *openaiClient) convertMessages(messages []message.Message) (openaiMessag
111−
115+ if hasBinaryContent || (isAnthropicModel && !o.providerOptions.disableCache) {
112− openaiMessages = append(openaiMessages, openai.UserMessage(content))
116+ openaiMessages = append(openaiMessages, openai.UserMessage(content))
118+ openaiMessages = append(openaiMessages, openai.UserMessage(msg.Content().String()))
114 case message.Assistant:
121 case message.Assistant:
115 assistantMsg := openai.ChatCompletionAssistantMessageParam{
122 assistantMsg := openai.ChatCompletionAssistantMessageParam{
@@ -134,13 +141,15 @@ func (o *openaiClient) convertMessages(messages []message.Message) (openaiMessag
144+ if !isAnthropicModel {
145+ assistantMsg.Content = openai.ChatCompletionAssistantMessageParamContentUnion{
146+ OfString: param.NewOpt(msg.Content().String()),
139 if len(msg.ToolCalls()) > 0 {
151 if len(msg.ToolCalls()) > 0 {
140 hasContent = true
152 hasContent = true
141− assistantMsg.Content = openai.ChatCompletionAssistantMessageParamContentUnion{
142− OfString: param.NewOpt(msg.Content().String()),
144 assistantMsg.ToolCalls = make([]openai.ChatCompletionMessageToolCallParam, len(msg.ToolCalls()))
153 assistantMsg.ToolCalls = make([]openai.ChatCompletionMessageToolCallParam, len(msg.ToolCalls()))
145 for i, call := range msg.ToolCalls() {
154 for i, call := range msg.ToolCalls() {
146 assistantMsg.ToolCalls[i] = openai.ChatCompletionMessageToolCallParam{
155 assistantMsg.ToolCalls[i] = openai.ChatCompletionMessageToolCallParam{