Anthropic
Claude — семейство передовых языковых моделей от Anthropic для решения задач анализа, генерации текста и программирования. Подробнее о моделях можно узнать в документации Anthropic.
Доступна Claude Opus 4.8 — новейшая и самая мощная версия с непревзойденными возможностями рассуждения.
Caila Anthropic Provider предоставляет нативный доступ к API Anthropic. Вы можете использовать привычные инструменты и официальные SDK, заменив только базовый URL. Сервис доступен в РФ с оплатой в рублях.
Поддерживаемые API:
Методы Files API, в частности метод загрузки файлов POST /v1/files, не поддерживаются.
Быстрый старт
-
Для запросов потребуется API-ключ. Сгенерируйте его в разделе API-ключи.
-
Отправьте первый запрос.
- Адрес для запросов:
https://caila.io/api/anthropic. - Укажите свой API-ключ Caila в заголовке
x-api-key. - Добавьте заголовок
anthropic-version: 2023-06-01.
Пример запроса:
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Привет! Расскажи о себе."}
]
}' - Адрес для запросов:
Messages
Messages — это основной интерфейс для взаимодействия с моделями Claude.
Базовый запрос: генерация текста
Отправка одиночного сообщения модели. Необходимо указать используемую модель (model) и массив сообщений (messages), который содержит роль user и текст.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Что такое машинное обучение?"}
]
}'
import anthropic
# Инициализация клиента с base_url Caila
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{"role": "user", "content": "Что такое машинное обучение?"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const message = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [
{ role: "user", content: "Что такое машинное обучение?" }
],
});
console.log(message.content[0].text);
Использование системного промта
Поле system позволяет задать глобальный контекст, роль или ограничения для модели. Это инструкция, которой модель руководствуется при генерации ответа. Поле находится на верхнем уровне JSON, вне массива messages.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"system": "Ты — опытный Python-разработчик. Отвечай кратко и только кодом.",
"messages": [
{"role": "user", "content": "Как отсортировать список?"}
]
}'
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
system="Ты — опытный Python-разработчик. Отвечай кратко и только кодом.",
messages=[
{"role": "user", "content": "Как отсортировать список?"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const message = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
system: "Ты — опытный Python-разработчик. Отвечай кратко и только кодом.",
messages: [
{ role: "user", content: "Как отсортировать список?" }
],
});
console.log(message.content[0].text);
Потоковая передача (стриминг)
Для получения ответа по мере генерации используйте параметр "stream": true. Сервис будет возвращать события Server-Sent Events (SSE). Это необходимо для создания отзывчивых интерфейсов с эффектом «печатания».
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "Напиши короткое эссе о природе."}
]
}'
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{"role": "user", "content": "Напиши короткое эссе о природе."}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const stream = client.messages
.stream({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [
{ role: "user", content: "Напиши короткое эссе о природе" }
]
})
.on("text", (text) => {
console.log(text);
});
Анализ изображений (vision)
Claude обладает мультимодальными возможностями. В массиве content можно передавать не только текст, но и объекты типа image (в формате base64 или URL).
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRg..."
}
},
{
"type": "text",
"text": "Опиши, что изображено на картинке."
}
]
}
]
}'
import anthropic
import base64
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
# Чтение изображения и кодирование в base64
with open("image.jpg", "rb") as image_file:
image_data = base64.standard_b64encode(image_file.read()).decode("utf-8")
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_data,
},
},
{
"type": "text",
"text": "Опиши, что изображено на картинке."
}
],
}
],
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
import * as fs from 'fs';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
// Чтение изображения и кодирование в base64
const imageData = fs.readFileSync('image.jpg').toString('base64');
const message = await client.messages.create({
model: 'claude-opus-4-8',
max_tokens: 1024,
messages: [
{
role: 'user',
content: [
{
type: 'image',
source: {
type: 'base64',
media_type: 'image/jpeg',
data: imageData,
},
},
{
type: 'text',
text: 'Опиши, что изображено на картинке.',
},
],
},
],
});
console.log(message.content[0].text);
Диалог с историей сообщений
API не хранит состояние диалога (stateless). Чтобы модель «помнила» предыдущие реплики, необходимо передавать всю историю переписки в каждом новом запросе, чередуя роли user и assistant.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Столица Франции?"},
{"role": "assistant", "content": "Париж."},
{"role": "user", "content": "А какое там население?"}
]
}'
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{"role": "user", "content": "Столица Франции?"},
{"role": "assistant", "content": "Париж."},
{"role": "user", "content": "А какое там население?"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const message = await client.messages.create({
model: 'claude-opus-4-8',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Столица Франции?' },
{ role: 'assistant', content: 'Париж.' },
{ role: 'user', content: 'А какое там население?' },
],
});
console.log(message.content[0].text);
Подсчет токенов
Вспомогательный метод для оценки размера запроса в токенах. Полезен для предварительного расчета стоимости или проверки на превышение контекстного окна.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages/count_tokens \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-8",
"messages": [
{"role": "user", "content": "Привет, как дела?"}
]
}'
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
count = client.messages.count_tokens(
model="claude-opus-4-8",
messages=[
{"role": "user", "content": "Привет, как дела?"}
]
)
print(count.input_tokens)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const count = await client.messages.countTokens({
model: 'claude-opus-4-8',
messages: [
{ role: 'user', content: 'Привет, как дела?' }
],
});
console.log(count.input_tokens);
Batches: пакетная асинхронная обработка
Batches API предназначен для обработки больших объемов данных: до 10 000 запросов в пакете. Запросы выполняются асинхронно, что часто дешевле стандартного синхронного вызова.
Создание пакетного запроса
Передайте массив запросов в поле requests. Обязательно указывайте custom_id для каждого элемента, чтобы сопоставить результаты с исходными данными после обработки.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages/batches \
-H "Content-Type: application/json" \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"requests": [
{
"custom_id": "req-001",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Как работает квантовый компьютер?"}]
}
},
{
"custom_id": "req-002",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Напиши SQL-запрос для отбора активных пользователей"}]
}
}
]
}'
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
batch = client.messages.batches.create(
requests=[
{
"custom_id": "req-001",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Как работает квантовый компьютер?"}]
}
},
{
"custom_id": "req-002",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Напиши SQL-запрос для отбора активных пользователей"}]
}
}
]
)
print(batch.id)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const batch = await client.messages.batches.create({
requests: [
{
custom_id: 'req-001',
params: {
model: 'claude-opus-4-8',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Как работает квантовый компьютер?' }],
},
},
{
custom_id: 'req-002',
params: {
model: 'claude-opus-4-8',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Напиши SQL-запрос для отбора активных пользователей' }],
},
},
],
});
console.log(batch.id);
Проверка статуса
Позволяет узнать состояние обработки по batch_id. Когда поле processing_status примет значение ended, результаты можно скачивать.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages/batches/<batch_id> \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01"
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
batch = client.messages.batches.retrieve("<batch_id>")
print(batch.processing_status)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
const batch = await client.messages.batches.retrieve('<batch_id>');
console.log(batch.processing_status);
Получение результатов
После завершения обработки пакета (processing_status принимает значение ended) можно получить результаты. Каждый результат содержит custom_id для сопоставления с исходным запросом.
Получение результата с помощью стандартного метода SDK messages.batches.results() временно недоступно. Используйте прямой HTTP-запрос к https://caila.io/api/anthropic.
- cURL
curl https://caila.io/api/anthropic/v1/messages/batches/<batch_id>/results \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01"
Отмена обработки
Прерывает выполнение пакета запросов, если он еще находится в процессе обработки.
Отмена с помощью стандартного метода SDK messages.batches.cancel() временно недоступна. Используйте прямой HTTP-запрос к https://caila.io/api/anthropic.
- cURL
curl -X POST https://caila.io/api/anthropic/v1/messages/batches/<batch_id>/cancel \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01"
-d '{}'
Получение списка пакетов
Возвращает историю созданных вами пакетов.
- cURL
- Python
- TypeScript
curl https://caila.io/api/anthropic/v1/messages/batches \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01"
import anthropic
client = anthropic.Anthropic(
api_key="<your_Caila_api_key>",
base_url="https://caila.io/api/anthropic"
)
# Итеративное постраничное получение
for batch in client.messages.batches.list(limit=20):
print(batch)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: '<your_Caila_api_key>',
baseURL: 'https://caila.io/api/anthropic',
});
// Итеративное постраничное получение
for await (const batch of client.messages.batches.list({
limit: 20
})) {
console.log(batch);
}
Models
Возвращает список идентификаторов моделей, доступных вашему аккаунту Caila.
Получение списка моделей с помощью стандартного метода SDK models.list() временно недоступно.
Используйте прямой HTTP-запрос к https://caila.io/api/anthropic.
Формат ответа отличается от API Anthropic.
- cURL
curl https://caila.io/api/anthropic/v1/models \
-H "x-api-key: <your_Caila_api_key>" \
-H "anthropic-version: 2023-06-01"
Стоимость обращения к моделям
Актуальные цены представлены на MLOps-платформе в разделе Цены моделей.
Дополнительные ресурсы
- Документация Anthropic API — детальное описание параметров запросов.
- Anthropic Python SDK — официальный клиент для Python.
- Anthropic TypeScript SDK — официальный клиент для TypeScript.