Skip to content

Commit 09fd9bb

Browse files
committed
convert to role "tool" messages
1 parent a65a132 commit 09fd9bb

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

pkg/aiusechat/openaicomp/openaicomp-convertmessage.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,36 @@ func ConvertAIMessageToCompletionsMessage(aiMsg uctypes.AIMessage) (*Completions
197197
}, nil
198198
}
199199

200+
// ConvertToolResultsToNativeChatMessage converts tool results to OpenAI tool messages
201+
func ConvertToolResultsToNativeChatMessage(toolResults []uctypes.AIToolResult) ([]uctypes.GenAIMessage, error) {
202+
if len(toolResults) == 0 {
203+
return nil, nil
204+
}
205+
206+
messages := make([]uctypes.GenAIMessage, 0, len(toolResults))
207+
for _, toolResult := range toolResults {
208+
var content string
209+
if toolResult.ErrorText != "" {
210+
content = fmt.Sprintf("Error: %s", toolResult.ErrorText)
211+
} else {
212+
content = toolResult.Text
213+
}
214+
215+
msg := &CompletionsChatMessage{
216+
MessageId: toolResult.ToolUseID,
217+
Message: CompletionsMessage{
218+
Role: "tool",
219+
ToolCallID: toolResult.ToolUseID,
220+
Name: toolResult.ToolName,
221+
Content: content,
222+
},
223+
}
224+
messages = append(messages, msg)
225+
}
226+
227+
return messages, nil
228+
}
229+
200230
// ConvertAIChatToUIChat converts stored chat to UI format
201231
func ConvertAIChatToUIChat(aiChat uctypes.AIChat) (*uctypes.UIChat, error) {
202232
uiChat := &uctypes.UIChat{

pkg/aiusechat/usechat-backend.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func (b *openaiCompletionsBackend) UpdateToolUseData(chatId string, toolCallId s
145145
}
146146

147147
func (b *openaiCompletionsBackend) ConvertToolResultsToNativeChatMessage(toolResults []uctypes.AIToolResult) ([]uctypes.GenAIMessage, error) {
148-
return nil, fmt.Errorf("tools not supported in openai-comp backend")
148+
return openaicomp.ConvertToolResultsToNativeChatMessage(toolResults)
149149
}
150150

151151
func (b *openaiCompletionsBackend) ConvertAIMessageToNativeChatMessage(message uctypes.AIMessage) (uctypes.GenAIMessage, error) {

pkg/aiusechat/usechat.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,16 +422,16 @@ func RunAIChat(ctx context.Context, sseHandler *sse.SSEHandlerCh, backend UseCha
422422
chatOpts.PlatformInfo = platformInfo
423423
}
424424
}
425-
stopReason, rtnMessage, err := runAIChatStep(ctx, sseHandler, backend, chatOpts, cont)
425+
stopReason, rtnMessages, err := runAIChatStep(ctx, sseHandler, backend, chatOpts, cont)
426426
metrics.RequestCount++
427427
if chatOpts.Config.IsPremiumModel() {
428428
metrics.PremiumReqCount++
429429
}
430430
if chatOpts.Config.IsWaveProxy() {
431431
metrics.ProxyReqCount++
432432
}
433-
if len(rtnMessage) > 0 {
434-
usage := getUsage(rtnMessage)
433+
if len(rtnMessages) > 0 {
434+
usage := getUsage(rtnMessages)
435435
log.Printf("usage: input=%d output=%d websearch=%d\n", usage.InputTokens, usage.OutputTokens, usage.NativeWebSearchCount)
436436
metrics.Usage.InputTokens += usage.InputTokens
437437
metrics.Usage.OutputTokens += usage.OutputTokens
@@ -450,7 +450,7 @@ func RunAIChat(ctx context.Context, sseHandler *sse.SSEHandlerCh, backend UseCha
450450
_ = sseHandler.AiMsgFinish("", nil)
451451
break
452452
}
453-
for _, msg := range rtnMessage {
453+
for _, msg := range rtnMessages {
454454
if msg != nil {
455455
chatstore.DefaultChatStore.PostMessage(chatOpts.ChatId, &chatOpts.Config, msg)
456456
}

0 commit comments

Comments
 (0)