anthropic-messages

Anthropic Messages API через AI Studio

AI Studio предоставляет Anthropic-совместимый endpoint для работы с моделями через Messages API. Это позволяет использовать официальный SDK Anthropic в ваших проектах.

Как получить API-ключ

  1. Войдите в личный кабинет на https://panel.netangels.ru/
  2. Перейдите в раздел AI Studio

  3. Нажмите «Создать ключ» для создания нового ключа, либо скопируйте существующий ключ из раздела Команды → название команды

Эндпоинт

Параметр Значение
URL https://ai.netangels.cloud/apps/anthropic
Путь /v1/messages
Метод POST
Аутентификация x-api-key: ВАШ_API_КЛЮЧ или Authorization: Bearer ВАШ_API_КЛЮЧ

Базовый запрос

Python:

import anthropic

client = anthropic.Anthropic(
    api_key="ВАШ_API_КЛЮЧ",
    base_url="https://ai.netangels.cloud/apps/anthropic"
)

message = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    system="You are a helpful assistant.",
    messages=[{"role": "user", "content": "Who are you?"}],
    thinking={"type": "disabled"}
)
print(message.content[0].text)

curl:

curl -X POST https://ai.netangels.cloud/apps/anthropic/v1/messages \
-H "x-api-key: ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.7-plus",
    "max_tokens": 1024,
    "system": "You are a helpful assistant.",
    "messages": [{"role": "user", "content": "Who are you?"}],
    "thinking": {"type": "disabled"}
}'

Потоковый вывод (Streaming)

Python:

stream = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    stream=True,
    messages=[{"role": "user", "content": "Расскажите об искусственном интеллекте."}],
    thinking={"type": "disabled"}
)
for chunk in stream:
    if chunk.type == "content_block_delta" and hasattr(chunk.delta, "text"):
        print(chunk.delta.text, end="", flush=True)

Режим рассуждений (Extended Thinking)

Python:

stream = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=2048,
    stream=True,
    thinking={"type": "enabled", "budget_tokens": 1024},
    messages=[{"role": "user", "content": "Проанализируйте перспективы квантовых вычислений."}]
)
for chunk in stream:
    if chunk.type == "content_block_delta":
        if hasattr(chunk.delta, "thinking"):
            print(chunk.delta.thinking, end="", flush=True)
        elif hasattr(chunk.delta, "text"):
            print(chunk.delta.text, end="", flush=True)

Параметр budget_tokens задаёт лимит токенов на процесс рассуждений.

Работа с изображениями и видео

Изображение:

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "source": {"type": "url", "url": "https://example.com/image.jpg"}},
        {"type": "text", "text": "Опишите содержимое изображения."}
    ]
}]

message = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    messages=messages,
    thinking={"type": "disabled"}
)
print(message.content[0].text)

Видео:

messages = [{
    "role": "user",
    "content": [
        {"type": "video", "source": {"type": "url", "url": "https://example.com/video.mp4"}},
        {"type": "text", "text": "Опишите содержимое видео."}
    ]
}]

Для работы с медиа требуются модели с поддержкой vision.

Вызов функций (Function Calling)

Python:

tools = [{
    "name": "get_weather",
    "description": "Получить информацию о погоде для указанного города",
    "input_schema": {
        "type": "object",
        "properties": {
            "city": {"type": "string", "description": "Название города"}
        },
        "required": ["city"]
    }
}]

message = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Какая погода в Москве?"}]
)

Процесс:

  1. Определите schema функции в массиве tools

  2. Вызовите модель

  3. Если в ответе есть tool_use, выполните функцию

  4. Добавьте результат как сообщение с role: "user" и повторите вызов

Кэширование промптов (Prompt Caching)

Для экономии токенов при длинных промптах:

long_text = "<Ваш длинный текст или код>" * 400
response = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": long_text,
        "cache_control": {"type": "ephemeral"}
    }],
    messages=[{"role": "user", "content": "Что делает этот код?"}]
)
print(response.usage.cache_creation_input_tokens)

Передавайте system как массив объектов вместо строки. Кэширование активируется при достижении минимального количества токенов.

Структурированный вывод (Structured Output)

Python:

message = client.messages.create(
    model="deepseek-v4-pro",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": "Извлеки информацию: Иван Иванов (ivan@example.com) интересуется Enterprise планом..."
    }],
    output_config={
        "format": {
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "email": {"type": "string"},
                    "plan_interest": {"type": "string"},
                    "demo_requested": {"type": "boolean"}
                },
                "required": ["name", "email", "plan_interest", "demo_requested"],
                "additionalProperties": False
            }
        }
    }
)

Параметры запроса

Параметр Тип Обязательный Описание
model string Да Имя модели
max_tokens int Да Лимит токенов ответа
messages array Да Массив сообщений (user/assistant)
system string/array Нет Системный промпт
stream boolean Нет Потоковый вывод (по умолчанию false)
temperature float Нет Случайность (0–2, отличается от Anthropic 0–1)
top_p float Нет Ядро выборки
top_k int Нет Лимит кандидатов на шаг
stop_sequences array Нет Строки остановки генерации
thinking object Нет Режим рассуждений ({"type": "enabled", "budget_tokens": N})
tools array Нет Schema вызываемых функций
tool_choice object Нет Стратегия выбора (auto, any, tool)
output_config object Нет Формат структурированного вывода

Формат ответа

Без потокового вывода:

{
  "id": "msg-xxxxx",
  "type": "message",
  "role": "assistant",
  "model": "qwen3.7-plus",
  "content": [
    {"type": "text", "text": "Ответ модели."}
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 15,
    "output_tokens": 50
  }
}

Потоковый вывод — последовательность событий:

Событие Описание
message_start Начало сессии
content_block_start Начало блока вывода
content_block_delta Инкрементальный текст или рассуждения
content_block_stop Завершение блока
message_delta Финальный статус и итоговая статистика
message_stop Завершение

В потоке могут присутствовать события {"type": "ping"} для поддержания активного подключения.

Важное отличие от Anthropic API

Параметр temperature в AI Studio имеет диапазон 0–2, в то время как в официальном Anthropic API диапазон составляет 0–1. Обратите внимание на это при миграции кода.

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865