Вызов инструментов
Позвольте модели вызывать ваши функции через tools, tool_choice и сообщения tool.
Вызов инструментов работает как в OpenAI API. С непустым списком tools роутер отправляет запрос только на маршруты с поддержкой инструментов; их поддерживают модели с возможностью Инструменты в каталоге.
1. Опишите инструменты
{
"model": "openai/gpt-4o-mini",
"messages": [{ "role": "user", "content": "What is the weather in Kazan?" }],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather in a city",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}2. Выполните вызов, который запросила модель
Ответ заканчивается finish_reason: "tool_calls":
{
"role": "assistant",
"content": null,
"tool_calls": [
{ "id": "call_1", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\":\"Kazan\"}" } }
]
}arguments — это JSON-строка: разберите и проверьте ее, прежде чем что-либо выполнять.
3. Отправьте результат обратно
Повторите диалог с сообщением ассистента и сообщением tool для каждого вызова, затем отправьте запрос снова с теми же tools:
[
{ "role": "user", "content": "What is the weather in Kazan?" },
{ "role": "assistant", "content": null, "tool_calls": [ { "id": "call_1", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\":\"Kazan\"}" } } ] },
{ "role": "tool", "tool_call_id": "call_1", "content": "{\"temp_c\": 12, \"sky\": \"cloudy\"}" }
]Настройки
| Поле | Значения |
|---|---|
tool_choice | auto (по умолчанию), none, required или {"type": "function", "function": {"name": "get_weather"}} |
parallel_tool_calls | false — не больше одного вызова в ответе |
В потоке delta.tool_calls приходит частями: склеивайте function.arguments по index до чанка с finish_reason: "tool_calls".
Описания инструментов — часть промпта: в каждом запросе они оплачиваются как входные токены.