Tool calling
Передавайте определения инструментов модели, исполняйте вызов в своем приложении и возвращайте результат с тем же ID.
01OpenAI
OpenAI tools
json
{
"model": "gpt-5.6-luna",
"messages": [{"role": "user", "content": "What is the weather in Moscow?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}]
}Ответ может содержать message.tool_calls. Верните каждый результат сообщением роли tool с соответствующим tool_call_id.
02Anthropic
Anthropic tool_use
Сохраните блок assistant с tool_use, выполните инструмент и добавьте следующий user-блок tool_result.
json
{
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": "toolu_...",
"content": "18 C, clear"
}]
}03
Надежный цикл
- Не изменяйте tool-call ID.
- Сохраняйте порядок assistant и tool-result сообщений.
- На streaming собирайте аргументы до полного JSON.
- Продолжайте читать поток после выполнения инструмента до видимого текста или следующего tool call.