Использование функций
Схема взаимодействия
При использовании API с вызовом функций модель никогда не выполняет функции сама. Модель просто генерирует параметры, которые могут быть использованы для вызова вашей функции (например, вызов API или сгенерировать отчет вызвав код программы).
После этого вы можете добавить результаты вашей функции как дополнение к пользовательскому запросу.
Как отправить запрос через API
- Сгенерировать API_TOKEN
- Отправить запрос на
https://api.smartbuddy.ru/v1/chat/completions
(см. примеры ниже)
Пример описания функции
Отправляем пользовательский промт и описание функции, чтобы нейросеть могла вытащить параметры из пользовательского промта в нужном нам формате.
Запрос:
import requests
import json
url = "https://api.smartbuddy.ru/v1/chat/completions"
payload = json.dumps({
"model": "openai/gpt-4o",
"messages": [
{
"role": "user",
"content": "What's the weather like in Boston?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city, e.g. San Francisco"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location"
]
}
}
}
]
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer API_TOKEN'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Ответ:
{
"id": "gen-YT6SiKy3UnmummHtszQbffrxGWQd",
"model": "openai/gpt-4o",
"object": "chat.completion",
"created": 1726132411,
"choices": [
{
"logprobs": null,
"finish_reason": "tool_calls",
"index": 0,
"message": {
"role": "assistant",
"content": null,
"refusal": null,
"tool_calls": [
{
"index": 0,
"id": "call_Pts9LrUCo3cHVi7iUSwldK9t",
"type": "function",
"function": {
"name": "get_current_weather",
"arguments": "{\"location\":\"Boston\"}"
}
}
]
}
}
],
"system_fingerprint": "fp_25624ae3a5",
"usage": {
"prompt_tokens": 75,
"completion_tokens": 15,
"total_tokens": 90
}
}
Мы получаем идентификатор функции (tool_calls.0.id
) и список параметров в tool_calls.0.function.arguments
, распарсив который, можем использовать в вызове нашей функций (API, код и т.д.).