Совместимость с OpenAI SDK
Anthropic предоставляет уровень совместимости, который позволяет использовать OpenAI SDK для тестирования Claude API. Внеся несколько изменений в код, вы можете оценить возможности моделей Anthropic.
Начало работы с OpenAI SDK
Чтобы использовать функцию совместимости с OpenAI SDK, вам необходимо:
- Использовать официальный OpenAI SDK.
- Изменить следующее:
- Обновите базовый URL, чтобы он указывал на Claude API.
- Замените свой ключ API на ключ Claude API из Claude Console.
- Если ваш ключ является ключом личной или сервисной учётной записи, не привязанным к рабочему пространству, также отправляйте заголовок
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-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.
- Системные сообщения и сообщения разработчика поднимаются и объединяются в поле верхнего уровня
system, где бы они ни находились в разговоре. Чтобы добавить системные инструкции в середине разговора, используйте системные сообщения в середине разговора в нативном Claude API.
Большинство неподдерживаемых полей молча игнорируются, а не вызывают ошибки. Все они задокументированы в следующих разделах.
Соображения о качестве вывода
Если вы значительно дорабатывали свою подсказку, скорее всего, она хорошо настроена именно под OpenAI. Рассмотрите возможность её переработки для Claude с помощью руководства по лучшим практикам составления подсказок.
Поднятие системных сообщений / сообщений разработчика
Большинство входных данных OpenAI SDK напрямую соответствуют параметрам Claude API, но одно явное отличие заключается в обработке системных подсказок и подсказок разработчика. В OpenAI API эти два типа подсказок могут размещаться в любом месте чат-разговора. Уровень совместимости берёт все системные сообщения и сообщения разработчика и объединяет их, разделяя одним символом новой строки (\n). Затем эта полная строка передаётся в поле верхнего уровня system, перед всеми сообщениями.
Поддержка размышлений
Вы можете включить размышления, добавив параметр thinking. На текущих моделях размышления являются адаптивными: Claude сам определяет, когда и насколько глубоко размышлять, а на моделях Claude 5 они включены по умолчанию; вручную настраиваемые расширенные размышления являются устаревшим режимом. Хотя размышления улучшают рассуждения Claude при решении сложных задач, OpenAI SDK не возвращает размышления 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 | Передаётся модели. Модели Claude 4.7 и более поздние, а также Claude Mythos Preview возвращают ошибку 400 для любого значения, кроме 0.99 (значение по умолчанию), поэтому не указывайте его. Запрос, в котором заданы и temperature, и top_p, также возвращает ошибку 400. См. Работа с сообщениями. |
parallel_tool_calls | Полностью поддерживается |
stop | Работают все стоп-последовательности, не состоящие из пробельных символов |
temperature | От 0 до 1 (включительно). Значения больше 1 ограничиваются значением 1. На моделях Claude 4.7 и более поздних, а также Claude Mythos Preview любое значение ниже 1 возвращает ошибку 400, поэтому не указывайте его. См. Работа с сообщениями. |
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. |
Поля functions[n]
| Поле | Статус поддержки |
|---|---|
name | Полностью поддерживается |
description | Полностью поддерживается |
parameters | Полностью поддерживается |
strict | Игнорируется. Для строгой проверки схемы используйте структурированные выходные данные с нативным Claude API. |
Поля массива messages
Поля для messages[n].role == "developer"
| Поле | Статус поддержки |
|---|---|
content | Полностью поддерживается, но поднимается |
name | Игнорируется |
Поля для messages[n].role == "system"
| Поле | Статус поддержки |
|---|---|
content | Полностью поддерживается, но поднимается |
name | Игнорируется |
Поля для messages[n].role == "user"
| Поле | Вариант | Подполе | Статус поддержки |
|---|---|---|---|
content | string | Полностью поддерживается | |
array, type == "text" | Полностью поддерживается | ||
array, type == "image_url" | url | Полностью поддерживается | |
detail | Игнорируется | ||
array, type == "input_audio" | Игнорируется | ||
array, type == "file" | Игнорируется | ||
name | Игнорируется |
Поля для messages[n].role == "assistant"
| Поле | Вариант | Статус поддержки |
|---|---|---|
content | string | Полностью поддерживается |
array, type == "text" | Полностью поддерживается | |
array, type == "refusal" | Игнорируется | |
tool_calls | Полностью поддерживается | |
function_call | Полностью поддерживается | |
audio | Игнорируется | |
refusal | Игнорируется |
Поля для messages[n].role == "tool"
| Поле | Вариант | Статус поддержки |
|---|---|---|
content | string | Полностью поддерживается |
array, type == "text" | Полностью поддерживается | |
tool_call_id | Полностью поддерживается | |
tool_choice | Поддерживается. Значения "required" и значения с именем функции принудительно вызывают инструмент; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 и Claude Mythos 5.1 не поддерживают принудительное использование инструментов и возвращают ошибку, поэтому на этих моделях используйте "auto". См. Принудительное использование инструментов. | |
name | Игнорируется |
Поля для messages[n].role == "function"
| Поле | Вариант | Статус поддержки |
|---|---|---|
content | string | Полностью поддерживается |
array, type == "text" | Полностью поддерживается | |
tool_choice | Поддерживается. Значения "required" и значения с именем функции принудительно вызывают инструмент; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 и Claude Mythos 5.1 не поддерживают принудительное использование инструментов и возвращают ошибку, поэтому на этих моделях используйте "auto". См. Принудительное использование инструментов. | |
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?