AI Studio предоставляет Anthropic-совместимый endpoint для работы с моделями через Messages API. Это позволяет использовать официальный SDK Anthropic в ваших проектах.
Перейдите в раздел AI Studio
Нажмите «Создать ключ» для создания нового ключа, либо скопируйте существующий ключ из раздела Команды → название команды
| Параметр | Значение |
|---|---|
| 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"}
}'
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)
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.
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": "Какая погода в Москве?"}]
)
Процесс:
Определите schema функции в массиве tools
Вызовите модель
Если в ответе есть tool_use, выполните функцию
Добавьте результат как сообщение с role: "user" и повторите вызов
Для экономии токенов при длинных промптах:
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 как массив объектов вместо строки. Кэширование активируется при достижении минимального количества токенов.
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"} для поддержания активного подключения.
Параметр temperature в AI Studio имеет диапазон 0–2, в то время как в официальном Anthropic API диапазон составляет 0–1. Обратите внимание на это при миграции кода.