diff --git a/chatcompletion.go b/chatcompletion.go index f00ba500..5af993d0 100644 --- a/chatcompletion.go +++ b/chatcompletion.go @@ -58,6 +58,24 @@ func AssistantMessage(content string) ChatCompletionAssistantMessageParam { } } +func AssistantToolCallMessage(toolCalls []ChatCompletionMessageToolCall) ChatCompletionAssistantMessageParam { + toolCallParams := make([]ChatCompletionMessageToolCallParam, 0, len(toolCalls)) + for _, toolCall := range toolCalls { + toolCallParams = append(toolCallParams, ChatCompletionMessageToolCallParam{ + Type: F(ChatCompletionMessageToolCallTypeFunction), + ID: F(toolCall.ID), + Function: F(ChatCompletionMessageToolCallFunctionParam{ + Name: F(toolCall.Function.Name), + Arguments: F(toolCall.Function.Arguments), + }), + }) + } + return ChatCompletionAssistantMessageParam{ + Role: F(ChatCompletionAssistantMessageParamRoleAssistant), + ToolCalls: F(toolCallParams), + } +} + func ToolMessage(toolCallID, content string) ChatCompletionToolMessageParam { return ChatCompletionToolMessageParam{ Role: F(ChatCompletionToolMessageParamRoleTool), diff --git a/examples/chat-completion-tool-calling/main.go b/examples/chat-completion-tool-calling/main.go index d82a77a7..fa59b16b 100644 --- a/examples/chat-completion-tool-calling/main.go +++ b/examples/chat-completion-tool-calling/main.go @@ -59,7 +59,7 @@ func main() { } // If there is a was a function call, continue the conversation - params.Messages.Value = append(params.Messages.Value, completion.Choices[0].Message) + params.Messages.Value = append(params.Messages.Value, openai.AssistantToolCallMessage(toolCalls)) for _, toolCall := range toolCalls { if toolCall.Function.Name == "get_weather" { // Extract the location from the function call arguments