Assistant API для моделей OpenAI
В сервисе openai-proxy поддержали Assistant API для создания AI-ассистентов. Ассистенты OpenAI предоставляют продвинутые инструменты для выполнения сложных задач — таких как поиск ответов на вопросы пользователей в предоставленных документах, написание и выполнение кода на языке Python, вызовы пользовательских функций.
Как и все сервисы на платформе Caila, openai-proxy доступен в РФ с оплатой в рублях. Сервис позволяет обращаться к любым моделям OpenAI.
Доступ к API
Для доступа к API вам потребуется токен. Создайте его на странице Моё пространство → API‑ключи. Указывайте токен в каждом запросе к API.
Базовый URL
https://caila.io/api/adapters/openai/v1
Пример использования
-
Создадим ассистента:
curl -X POST "https://caila.io/api/adapters/openai/v1/assistants" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api_token>" \
--data-raw '{
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"name": "Math Tutor",
"tools": [{"type": "code_interpreter"}],
"model": "gpt-4o"
}'Пример ответа
{
"id": "asst_ABcd1234",
"object": "assistant",
"created_at": 1741348100,
"name": "Math Tutor",
"description": null,
"model": "gpt-4o",
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"tools": [
{
"type": "code_interpreter"
}
],
"top_p": 1.0,
"temperature": 1.0,
"reasoning_effort": null,
"tool_resources": {
"code_interpreter": {
"file_ids": []
}
},
"metadata": {
"userId": "1000174642"
},
"response_format": "auto"
} -
Создадим тред, в котором пользователь будет задавать вопросы ассистенту:
curl -X POST "https://caila.io/api/adapters/openai/v1/threads" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api_token>" \
--data-raw '{}'Пример ответа
{
"id": "thread_EFgh5678",
"object": "thread",
"created_at": 1741348920,
"metadata": {
"userId": "1000174642"
},
"tool_resources": {}
} -
Отправим сообщение пользователя в тред. В строке запроса нужно указать идентификатор треда, полученный на предыдущем шаге:
curl -X POST "https://caila.io/api/adapters/openai/v1/threads/thread_EFgh5678/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api_token>" \
--data-raw '{
"role": "user",
"content": "Напиши простой калькулятор на python, у которого будут только 4 функции, сложение, вычитание, умножение и деление"
}'Пример ответа
{
"id": "msg_1fXtROYuVlVyHcD6dwJIZX8p",
"object": "thread.message",
"created_at": 1741615474,
"assistant_id": null,
"thread_id": "thread_EFgh5678",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Напиши простой калькулятор на python, у которого будут только 4 функции, сложение, вычитание, умножение и деление",
"annotations": []
}
}
],
"attachments": [],
"metadata": {
"userId": "1000174642"
}
} -
Запустим ассистента в треде, чтобы сгенерировать ответ. В строке запроса нужно указать идентификатор треда, а в теле запроса — идентификатор ассистента из п. 1.
curl -X POST "https://caila.io/api/adapters/openai/v1/threads/thread_EFgh5678/runs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api_token>" \
--data-raw '{
"assistant_id": "asst_ABcd1234",
"instructions": "Ответь на русском языке"
}'Пример ответа
{
"id": "run_Wiz8k7IFuqcMQdh3ohGQWA59",
"object": "thread.run",
"created_at": 1741615825,
"assistant_id": "asst_ABcd1234",
"thread_id": "thread_EFgh5678",
"status": "queued",
"started_at": null,
"expires_at": 1741616425,
"cancelled_at": null,
"failed_at": null,
"completed_at": null,
"required_action": null,
"last_error": null,
"model": "gpt-4o",
"instructions": "Ответь на русском языке",
"tools": [
{
"type": "code_interpreter"
}
],
"tool_resources": {},
"metadata": {
"userId": "1000174642"
},
"temperature": 1.0,
"top_p": 1.0,
"reasoning_effort": null,
"max_completion_tokens": null,
"max_prompt_tokens": null,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"incomplete_details": null,
"usage": null,
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
} -
Посмотрим результат:
curl -X GET "https://caila.io/api/adapters/openai/v1/threads/thread_EFgh5678/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api_token>"Пример ответа
{
"object": "list",
"data": [
{
"id": "msg_CpqFkV5HoeoiPlJdZSVR1b9X",
"object": "thread.message",
"created_at": 1741615827,
"assistant_id": "asst_ABcd1234",
"thread_id": "thread_EFgh5678",
"run_id": "run_Wiz8k7IFuqcMQdh3ohGQWA59",
"role": "assistant",
"content": [
{
"type": "text",
"text": {
"value": "Конечно! Ниже представлен простой калькулятор на Python, который поддерживает четыре основные арифметические операции: сложение, вычитание, умножение и деление.\n\n```python\ndef add(x, y):\n \"\"\"Функция для сложения двух чисел.\"\"\"\n return x + y\n\ndef subtract(x, y):\n \"\"\"Функция для вычитания двух чисел.\"\"\"\n return x - y\n\ndef multiply(x, y):\n \"\"\"Функция для умножения двух чисел.\"\"\"\n return x * y\n\ndef divide(x, y):\n \"\"\"Функция для деления двух чисел.\"\"\"\n if y == 0:\n return \"Ошибка: деление на ноль!\"\n return x / y\n\ndef calculator():\n print(\"Выберите операцию:\")\n print(\"1. Сложение\")\n print(\"2. Вычитание\")\n print(\"3. Умножение\")\n print(\"4. Деление\")\n\n while True:\n choice = input(\"Введите номер операции (1/2/3/4) или 'q' для выхода: \")\n\n if choice == 'q':\n print(\"Выход из калькулятора.\")\n break\n\n if choice in ['1', '2', '3', '4']:\n try:\n num1 = float(input(\"Введите первое число: \"))\n num2 = float(input(\"Введите второе число: \"))\n except ValueError:\n print(\"Ошибка: необходимо вводить числа.\")\n continue\n\n if choice == '1':\n print(f\"{num1} + {num2} = {add(num1, num2)}\")\n elif choice == '2':\n print(f\"{num1} - {num2} = {subtract(num1, num2)}\")\n elif choice == '3':\n print(f\"{num1} * {num2} = {multiply(num1, num2)}\")\n elif choice == '4':\n print(f\"{num1} / {num2} = {divide(num1, num2)}\")\n else:\n print(\"Неверный ввод. Пожалуйста, введите номер операции от 1 до 4.\")\n\nif __name__ == \"__main__\":\n calculator()\n```\n\nЭтот код реализует простой консольный калькулятор, который предлагает пользователю выбрать одну из четырёх операций, ввести два числа, и затем выводит результат. Для завершения работы калькулятора достаточно ввести 'q'.",
"annotations": []
}
}
],
"attachments": [],
"metadata": {}
},
{
"id": "msg_1fXtROYuVlVyHcD6dwJIZX8p",
"object": "thread.message",
"created_at": 1741615474,
"assistant_id": null,
"thread_id": "thread_EFgh5678",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Напиши простой калькулятор на python, у которого будут только 4 функции, сложение, вычитание, умножение и деление",
"annotations": []
}
}
],
"attachments": [],
"metadata": {
"userId": "1000174642"
}
}
],
"first_id": "msg_CpqFkV5HoeoiPlJdZSVR1b9X",
"last_id": "msg_1fXtROYuVlVyHcD6dwJIZX8p",
"has_more": false
}