Перейти к основному содержимому

Assistant API для моделей OpenAI

В сервисе openai-proxy поддержали Assistant API для создания AI-ассистентов. Ассистенты OpenAI предоставляют продвинутые инструменты для выполнения сложных задач — таких как поиск ответов на вопросы пользователей в предоставленных документах, написание и выполнение кода на языке Python, вызовы пользовательских функций.

Как и все сервисы на платформе Caila, openai-proxy доступен в РФ с оплатой в рублях. Сервис позволяет обращаться к любым моделям OpenAI.

Доступ к API

Для доступа к API вам потребуется токен. Создайте его на странице Моё пространство → API‑Токены. Указывайте токен в каждом запросе к API.

Базовый URL

https://caila.io/api/adapters/v1

Пример использования

  1. Создадим ассистента:

    curl -X POST "https://caila.io/api/adapters/v1/assistants" \
    -H "Content-Type: application/json" \
    -H "MLP-API-KEY: <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"
    }
  2. Создадим тред, в котором пользователь будет задавать вопросы ассистенту:

    curl -X POST "https://caila.io/api/adapters/v1/threads" \
    -H "Content-Type: application/json" \
    -H "MLP-API-KEY: <api_token>" \
    --data-raw '{}'
    Пример ответа
    {
    "id": "thread_EFgh5678",
    "object": "thread",
    "created_at": 1741348920,
    "metadata": {
    "userId": "1000174642"
    },
    "tool_resources": {}
    }
  3. Отправим сообщение пользователя в тред. В строке запроса нужно указать идентификатор треда, полученный на предыдущем шаге:

    curl -X POST "https://caila.io/api/adapters/v1/threads/thread_EFgh5678/messages" \
    -H "Content-Type: application/json" \
    -H "MLP-API-KEY: <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"
    }
    }
  4. Запустим ассистента в треде, чтобы сгенерировать ответ. В строке запроса нужно указать идентификатор треда, а в теле запроса — идентификатор ассистента из п. 1.

    curl -X POST "https://caila.io/api/adapters/v1/threads/thread_EFgh5678/runs" \
    -H "Content-Type: application/json" \
    -H -H "MLP-API-KEY: <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
    }
  5. Посмотрим результат:

    curl -X GET "https://caila.io/api/adapters/v1/threads/thread_EFgh5678/messages" \
    -H "Content-Type: application/json" \
    -H "MLP-API-KEY: <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
    }