Документация

/messages

Точка доступа, совместимая с Anthropic Messages API, для работы с сообщениями, системным промптом, инструментами и потоковой передачей.

POST
https://ai.wormsoft.ru/api/gpt/v1/messages
Для Anthropic-клиентов
В качестве базового URL укажите https://ai.wormsoft.ru/api/gpt — клиент сам добавит путь /v1/messages.

Структура запроса

  • Тело запроса соответствует формату Anthropic Messages API.
  • Обязательные основные поля: model и messages.
  • Системный промпт передаётся отдельным полем system.
  • Инструменты описываются в формате Anthropic — name, description и input_schema.
  • Поддерживаются вызовы инструментов и потоковая передача данных.

Минимальный пример запроса

curl --request POST \
  --url https://ai.wormsoft.ru/api/gpt/v1/messages \
  --header 'x-api-key: ***' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "wormsoft/code/medium",
    "max_tokens": 1024,
    "messages": [
      { "role": "user", "content": "Привет" }
    ]
  }'

Ключ можно передавать и через заголовок Authorization: Bearer YOUR_API_KEY.

Системный промпт

Инструкция для модели передаётся отдельным полем system, а не отдельным сообщением в messages.

{
  "model": "wormsoft/code/medium",
  "max_tokens": 1024,
  "system": "Ты — краткий ассистент.",
  "messages": [
    { "role": "user", "content": "Привет" }
  ]
}

Вызов инструментов

Для сценариев с агентами передавайте tools в формате Anthropic.

{
  "model": "wormsoft/code/medium",
  "max_tokens": 1024,
  "messages": [
    { "role": "user", "content": "Какая погода в Москве?" }
  ],
  "tools": [
    {
      "name": "get_weather",
      "description": "Get current weather",
      "input_schema": {
        "type": "object",
        "properties": {
          "city": { "type": "string" }
        }
      }
    }
  ]
}

Пример ответа

{
  "id": "msg_1a2b3c",
  "type": "message",
  "role": "assistant",
  "content": [
    { "type": "text", "text": "Привет! Чем помочь?" }
  ],
  "model": "wormsoft/code/medium",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 12,
    "output_tokens": 8
  }
}

Ответ с вызовом инструмента

{
  "id": "msg_4d5e6f",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "tool_use",
      "id": "call_1",
      "name": "get_weather",
      "input": { "city": "Москва" }
    }
  ],
  "model": "wormsoft/code/medium",
  "stop_reason": "tool_use",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 20,
    "output_tokens": 15
  }
}

Потоковая передача

Для поэтапного получения ответа укажите параметр stream: true и обрабатывайте поток событий в формате Anthropic: message_start, content_block_start, content_block_delta, content_block_stop, message_delta и message_stop.

Ошибки и лимиты

400
Неверный запрос пользователя
401
Неверный или отсутствует API-ключ
429
Закончились лимиты подписки
500+
Ошибка на стороне нашего сервиса
Ошибки обработки запроса возвращаются в формате Anthropic: type, error.type и error.message. Исключение — ошибки доступа: 401 при проверке API-ключа приходит в общем формате statusCode, message и timestamp.

Резервное переключение

При редких технических сбоях сервис может автоматически использовать резервный маршрут обработки запроса. Для пользователя этот процесс остаётся незаметным: в ответе указывается фактически использованная модель, которая обработала запрос.