Совместимость с OpenAI SDK
Anthropic предоставляет слой совместимости, который позволяет использовать OpenAI SDK для тестирования Claude API. Внеся несколько изменений в код, вы можете быстро оценить возможности моделей Anthropic.
Начало работы с OpenAI SDK
Чтобы использовать функцию совместимости с OpenAI SDK, вам необходимо:
- Использовать официальный OpenAI SDK
- Изменить следующее
- Обновите базовый URL, чтобы он указывал на Claude API
- Замените ваш ключ API на ключ API Claude
- Если ваш ключ является персональным ключом или ключом сервисного аккаунта с доступом к нескольким рабочим пространствам, также отправляйте заголовок
anthropic-workspace-idс каждым запросом (например,default_headersв Python SDK илиdefaultHeadersв TypeScript); см. раздел Выбор рабочего пространства - Обновите название модели, чтобы использовать модель Claude
- Ознакомиться со следующими разделами, чтобы узнать, какие функции поддерживаются
Пример быстрого старта
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-5", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)Важные ограничения совместимости с OpenAI
Поведение API
Вот наиболее существенные отличия от использования OpenAI:
- Параметр
strictдля вызова функций игнорируется, что означает, что JSON при использовании инструментов не гарантированно соответствует предоставленной схеме. Для гарантированного соответствия схеме используйте нативный Claude API со структурированными выводами. - Аудиовход не поддерживается; он будет проигнорирован и удалён из входных данных
- Кэширование подсказок не поддерживается, но оно поддерживается в Anthropic SDK
- Системные сообщения и сообщения разработчика поднимаются и объединяются в начале разговора, поскольку Anthropic поддерживает только одно начальное системное сообщение.
Большинство неподдерживаемых полей молча игнорируются, а не вызывают ошибки. Все они задокументированы в следующих разделах.
Соображения о качестве вывода
Если вы много работали над настройкой вашей подсказки, скорее всего, она хорошо настроена именно под OpenAI. Рассмотрите возможность её переработки для Claude с помощью руководства по лучшим практикам составления подсказок.
Поднятие системных сообщений / сообщений разработчика
Большинство входных данных OpenAI SDK напрямую соответствуют параметрам API Anthropic, но одно заметное отличие — обработка системных подсказок / подсказок разработчика. В OpenAI эти две подсказки можно размещать в любом месте разговора в чате. Поскольку Anthropic поддерживает только начальное системное сообщение, API берёт все системные сообщения / сообщения разработчика и объединяет их, разделяя одним символом новой строки (\n). Затем эта полная строка передаётся как единое системное сообщение в начале сообщений.
Поддержка мышления
Вы можете включить мышление, добавив параметр thinking. В текущих моделях мышление является адаптивным: Claude сам решает, когда и насколько глубоко думать, а в моделях Claude 5 оно включено по умолчанию; вручную настраиваемое «extended thinking» (расширенное мышление) является устаревшим режимом. Хотя мышление улучшает рассуждения Claude при решении сложных задач, OpenAI SDK не возвращает подробный ход мыслей Claude. Для полного набора функций мышления, включая доступ к пошаговому выводу рассуждений Claude, используйте нативный Claude API.
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Who are you?"}],
extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)Ограничения скорости
Ограничения скорости соответствуют стандартным ограничениям Anthropic для конечной точки /v1/messages.
Подробная информация о поддержке OpenAI-совместимого API
Поля запроса
Простые поля
| Поле | Статус поддержки |
|---|---|
model | Используйте названия моделей Claude |
max_tokens | Полностью поддерживается |
max_completion_tokens | Полностью поддерживается |
stream | Полностью поддерживается |
stream_options | Полностью поддерживается |
top_p | Полностью поддерживается |
parallel_tool_calls | Полностью поддерживается |
stop | Работают все стоп-последовательности, не состоящие из пробельных символов |
temperature | От 0 до 1 (включительно). Значения больше 1 ограничиваются до 1. |
n | Должно быть равно ровно 1 |
logprobs | Игнорируется |
metadata | Игнорируется |
response_format | Игнорируется. Для вывода в формате JSON используйте структурированные выводы с нативным Claude API |
prediction | Игнорируется |
presence_penalty | Игнорируется |
frequency_penalty | Игнорируется |
seed | Игнорируется |
service_tier | Игнорируется |
audio | Игнорируется |
logit_bias | Игнорируется |
store | Игнорируется |
user | Игнорируется |
modalities | Игнорируется |
top_logprobs | Игнорируется |
reasoning_effort | Игнорируется |
Поля tools / functions
Поля tools[n].function
| Поле | Статус поддержки |
|---|---|
name | Полностью поддерживается |
description | Полностью поддерживается |
parameters | Полностью поддерживается |
strict | Игнорируется. Используйте структурированные выводы с нативным Claude API для строгой валидации схемы |
Поля массива messages
Поля для messages[n].role == "developer"
| Поле | Статус поддержки |
|---|---|
content | Полностью поддерживается, но поднимается |
name | Игнорируется |
Поля ответа
| Поле | Статус поддержки |
|---|---|
id | Полностью поддерживается |
choices[] | Всегда будет иметь длину 1 |
choices[].finish_reason | Полностью поддерживается |
choices[].index | Полностью поддерживается |
choices[].message.role | Полностью поддерживается |
choices[].message.content | Полностью поддерживается |
choices[].message.tool_calls | Полностью поддерживается |
object | Полностью поддерживается |
created | Полностью поддерживается |
model | Полностью поддерживается |
finish_reason | Полностью поддерживается |
content | Полностью поддерживается |
usage.completion_tokens | Полностью поддерживается |
usage.prompt_tokens | Полностью поддерживается |
usage.total_tokens | Полностью поддерживается |
usage.completion_tokens_details | Всегда пусто |
usage.prompt_tokens_details | Всегда пусто |
choices[].message.refusal | Всегда пусто |
choices[].message.audio | Всегда пусто |
logprobs | Всегда пусто |
service_tier | Всегда пусто |
system_fingerprint | Всегда пусто |
Совместимость сообщений об ошибках
Слой совместимости поддерживает форматы ошибок, согласованные с OpenAI API. Однако подробные сообщения об ошибках не будут эквивалентны. Используйте сообщения об ошибках только для логирования и отладки.
Совместимость заголовков
Хотя OpenAI SDK автоматически управляет заголовками, вот полный список заголовков, поддерживаемых Claude API, для разработчиков, которым необходимо работать с ними напрямую.
| Заголовок | Статус поддержки |
|---|---|
x-ratelimit-limit-requests | Полностью поддерживается |
x-ratelimit-limit-tokens | Полностью поддерживается |
x-ratelimit-remaining-requests | Полностью поддерживается |
x-ratelimit-remaining-tokens | Полностью поддерживается |
x-ratelimit-reset-requests | Полностью поддерживается |
x-ratelimit-reset-tokens | Полностью поддерживается |
retry-after | Полностью поддерживается |
request-id | Полностью поддерживается |
openai-version | Всегда 2020-10-01 |
authorization | Полностью поддерживается |
openai-processing-ms | Всегда пусто |
Was this page helpful?