Skip to content

Commit db94d56

Browse files
committed
mini refactor
1 parent 1854cbb commit db94d56

1 file changed

Lines changed: 36 additions & 33 deletions

File tree

pkg/aiusechat/usechat.go

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,41 @@ func GetChatUsage(chat *uctypes.AIChat) uctypes.AIUsage {
197197
return usage
198198
}
199199

200+
func processToolResults(stopReason *uctypes.WaveStopReason, chatOpts uctypes.WaveChatOpts, sseHandler *sse.SSEHandlerCh) {
201+
var toolResults []uctypes.AIToolResult
202+
for _, toolCall := range stopReason.ToolCalls {
203+
inputJSON, _ := json.Marshal(toolCall.Input)
204+
log.Printf("TOOLUSE name=%s id=%s input=%s\n", toolCall.Name, toolCall.ID, utilfn.TruncateString(string(inputJSON), 40))
205+
result := ResolveToolCall(toolCall, chatOpts)
206+
toolResults = append(toolResults, result)
207+
if result.ErrorText != "" {
208+
log.Printf(" error=%s\n", result.ErrorText)
209+
} else {
210+
log.Printf(" result=%s\n", utilfn.TruncateString(result.Text, 40))
211+
}
212+
}
213+
214+
if chatOpts.Config.APIType == APIType_OpenAI {
215+
toolResultMsgs, err := openai.ConvertToolResultsToOpenAIChatMessage(toolResults)
216+
if err != nil {
217+
_ = sseHandler.AiMsgError(fmt.Sprintf("Failed to convert tool results to OpenAI messages: %v", err))
218+
_ = sseHandler.AiMsgFinish("", nil)
219+
} else {
220+
for _, msg := range toolResultMsgs {
221+
chatstore.DefaultChatStore.PostMessage(chatOpts.ChatId, &chatOpts.Config, msg)
222+
}
223+
}
224+
} else {
225+
toolResultMsg, err := anthropic.ConvertToolResultsToAnthropicChatMessage(toolResults)
226+
if err != nil {
227+
_ = sseHandler.AiMsgError(fmt.Sprintf("Failed to convert tool results to Anthropic message: %v", err))
228+
_ = sseHandler.AiMsgFinish("", nil)
229+
} else {
230+
chatstore.DefaultChatStore.PostMessage(chatOpts.ChatId, &chatOpts.Config, toolResultMsg)
231+
}
232+
}
233+
}
234+
200235
func RunAIChat(ctx context.Context, sseHandler *sse.SSEHandlerCh, chatOpts uctypes.WaveChatOpts) error {
201236
log.Printf("RunAIChat\n")
202237
firstStep := true
@@ -239,39 +274,7 @@ func RunAIChat(ctx context.Context, sseHandler *sse.SSEHandlerCh, chatOpts uctyp
239274
continue
240275
}
241276
if stopReason != nil && stopReason.Kind == uctypes.StopKindToolUse {
242-
var toolResults []uctypes.AIToolResult
243-
for _, toolCall := range stopReason.ToolCalls {
244-
inputJSON, _ := json.Marshal(toolCall.Input)
245-
log.Printf("TOOLUSE name=%s id=%s input=%s\n", toolCall.Name, toolCall.ID, utilfn.TruncateString(string(inputJSON), 40))
246-
result := ResolveToolCall(toolCall, chatOpts)
247-
toolResults = append(toolResults, result)
248-
if result.ErrorText != "" {
249-
log.Printf(" error=%s\n", result.ErrorText)
250-
} else {
251-
log.Printf(" result=%s\n", utilfn.TruncateString(result.Text, 40))
252-
}
253-
}
254-
255-
// Convert tool results to messages and post to chat store
256-
if chatOpts.Config.APIType == APIType_OpenAI {
257-
toolResultMsgs, err := openai.ConvertToolResultsToOpenAIChatMessage(toolResults)
258-
if err != nil {
259-
_ = sseHandler.AiMsgError(fmt.Sprintf("Failed to convert tool results to OpenAI messages: %v", err))
260-
_ = sseHandler.AiMsgFinish("", nil)
261-
} else {
262-
for _, msg := range toolResultMsgs {
263-
chatstore.DefaultChatStore.PostMessage(chatOpts.ChatId, &chatOpts.Config, msg)
264-
}
265-
}
266-
} else {
267-
toolResultMsg, err := anthropic.ConvertToolResultsToAnthropicChatMessage(toolResults)
268-
if err != nil {
269-
_ = sseHandler.AiMsgError(fmt.Sprintf("Failed to convert tool results to Anthropic message: %v", err))
270-
_ = sseHandler.AiMsgFinish("", nil)
271-
} else {
272-
chatstore.DefaultChatStore.PostMessage(chatOpts.ChatId, &chatOpts.Config, toolResultMsg)
273-
}
274-
}
277+
processToolResults(stopReason, chatOpts, sseHandler)
275278

276279
var messageID string
277280
if len(rtnMessage) > 0 && rtnMessage[0] != nil {

0 commit comments

Comments
 (0)