An assistant message with 'tool_calls' must be followed by tool messages responding to each 'tool_call_id'
If you're working with APIs like the OpenAI one and you're passing tools
to your bots, make sure the results of a tool call are always right next to the tool call message! Otherwise the API will return a 400
response. Heads up! This a recent change in their API (they use to have functions
but is now deprecated) and the mandatory order is not mentioned in the official docs!
// It always needs to be like this
[
{
"role": "user",
"content": "Tell me the current time",
"tools": [{ "name": "current_time", "description": "Gives you the current time" }]
},
{
"role": "assistant",
"content": "",
"tool_calls": [{
"type": "function",
"id": "d8cdd56d-98e1-4dea-ae3a-2b23",
"function": { "name": "current_time", "arguments": "{}" }
}]
},
{
"role": "assistant",
"content": "Current time is 10:22 AM",
"tool_call_id": "d8cdd56d-98e1-4dea-ae3a-2b23"
},
{
"role": "system",
"content": "Just a message after the tool result"
},
]
Never do this!
[
{
"role": "user",
"content": "Tell me the current time",
"functions": [{ "name": "current_time", "description": "Gives you the current time" }]
},
{
"role": "assistant",
"content": "",
"tool_calls": [{ /* omitted */ }]
},
{
"role": "system",
"content": "Just a message between the tool call and the tool result"
},
{
"role": "assistant",
"content": "Current time is 10:22 AM",
"tool_call_id": "d8cdd56d-98e1-4dea-ae3a-2b23"
}
]