
OpenAI SDK로 Claude 사용하기: OpenAI 호환 엔드포인트, 스트리밍, 도구 및 제한
OpenAI SDK용으로 작성한 코드는 다시 작성하지 않고도 Claude를 호출할 수 있습니다. 다음을 지정하세요: base_url 의 대상으로 게이트웨이의 /v1을 지정하고, 게이트웨이 키와 Claude 모델 ID를 사용하세요. 엔드포인트는 Chat Completions 요청을 수락하고 동일한 형식으로 스트리밍하며 함수 호출을 지원합니다. 일부 Claude 기능은 Anthropic의 기본 형식에서만 사용할 수 있습니다. 마지막 섹션에서는 언제 전환해야 하는지 설명합니다.
엔드포인트 정보
| 항목 | 값 |
|---|---|
| 기본 URL | https://aiprimetech.io/v1 |
| 채팅 엔드포인트 | POST https://aiprimetech.io/v1/chat/completions |
| 모델 목록 | GET https://aiprimetech.io/v1/models |
| 인증 | Authorization: Bearer <key>; x-api-key 도 허용됩니다 |
| 모델 | 다음과 같은 Claude ID: claude-sonnet-5; Codex 그룹의 키를 사용하는 GPT ID |
Python
pip install openaiimport os
from openai import OpenAI
client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"])
resp = client.chat.completions.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain idempotency keys in two sentences."},
],
)
print(resp.choices[0].message.content)
print(resp.usage)base_url 은 다음으로 끝나야 합니다: /v1: SDK가 다음을 추가합니다: /chat/completions . 다음이 없으면 /v1 요청이 웹사이트에 도달하고 HTML을 반환합니다. /v1 두 번 사용하면 다음을 반환합니다 404 page not found.
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY });
const resp = await client.chat.completions.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Write a haiku about retries." }],
});
console.log(resp.choices[0].message.content);스트리밍
stream = client.chat.completions.create(
model="claude-sonnet-5",
max_tokens=2048,
stream=True,
stream_options={"include_usage": True},
messages=[{"role": "user", "content": "Outline a zero-downtime migration."}],
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage)긴 답변은 스트리밍으로 받으세요. 비스트리밍 요청은 클라이언트의 제한 시간 안에 완료되어야 하지만, 스트리밍 요청은 그렇지 않습니다. include_usage 토큰 수가 포함된 마지막 청크를 추가합니다. 이것이 중요한 이유는 다음에서 자세히 알아보세요 LLM 응답 스트리밍.
함수 호출
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
resp = client.chat.completions.create(
model="claude-sonnet-5", max_tokens=512, tools=tools,
messages=[{"role": "user", "content": "What is the weather in Paris?"}],
)
call = resp.choices[0].message.tool_calls[0]
print(call.function.name, call.function.arguments) # get_weather {"city": "Paris"}응답에는 다음이 포함됩니다 finish_reason: "tool_calls" 그리고 OpenAI 형식의 tool_calls. 함수를 실행하고, 다음 유형의 메시지를 추가하세요: tool 결과와 일치하는 다음 값을 담은 메시지: tool_call_id. 그런 다음 OpenAI 모델을 사용할 때와 똑같이 다시 호출하세요.
추론과 사고
reasoning_effort Claude의 노력 수준 설정에 대응하며 다음 값을 허용합니다 low, medium, high, xhigh 또는 max. 다음 값은 none 거부됩니다. 모델이 사고할 때 추론 내용은 별도의 다음 필드로 전달됩니다: reasoning_content 다음 필드 옆에: content. 따라서 다음을 읽는 코드는 message.content 변경 없이 계속 작동합니다.
resp = client.chat.completions.create(
model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high",
messages=[{"role": "user", "content": "Find the bug in this function: ..."}],
)모델
| 모델 ID | 권장 용도 |
|---|---|
claude-sonnet-5 | 코딩과 에이전트 작업의 기본 선택: 빠르고 성능이 뛰어나며 가격은 중간 수준입니다. |
claude-opus-5-5 | 더 어려운 추론, 대규모 리팩터링, 장시간 에이전트 실행. |
claude-fable-5-1 | 성능이 가장 뛰어나고 가격도 가장 높습니다. 가장 어려운 작업에 사용하세요. |
claude-haiku-4-5 | 저렴하고 빠름: 제목, 요약, 분류, 간단한 단계. |
이 ID를 정확히 사용하세요. 다음과 같은 날짜가 붙은 이전 ID는 claude-3-5-sonnet-20241022 일부 모델 목록에 여전히 표시되지만 제공되지 않으며, 모델 미지원 오류를 반환합니다.
Anthropic 네이티브 API를 사용해야 하는 경우
OpenAI 형식은 채팅, 스트리밍, 도구, 이미지를 지원합니다. 명시적인 프롬프트 캐시 중단점, 턴 사이에 다시 전달하는 사고 블록, PDF 문서 또는 인용이 필요하다면 같은 게이트웨이에서 Anthropic의 자체 Messages 형식을 사용하세요. 다음 가이드에서 Anthropic Python SDK 가이드 및 다음 Vercel AI SDK 가이드 해당 방식을 설명합니다.
문제 해결
| 표시되는 내용 | 원인 | 해결 방법 |
|---|---|---|
JSON 파싱 오류, 응답이 다음으로 시작함: < | base_url 없이 /v1 | https://aiprimetech.io/v1 |
404 page not found | /v1 두 번 | 정확히 하나의 /v1 |
401 Invalid API key | 프로세스에 키가 없거나 잘못된 키가 있음 | 변수를 확인하세요. 키는 하나의 게이트웨이에 속합니다 |
| 지원되지 않는 모델 | 날짜가 붙은 이전 모델 ID 또는 오타가 있는 모델 ID | 위 표의 ID를 사용하세요 |
'none' is not supported | reasoning_effort="none" | 다음을 사용하세요: low 이상으로 설정하거나 생략하세요 |
429 Concurrency limit exceeded for user | 동시에 처리 중인 요청이 너무 많음 | 동시 실행 수를 제한하세요. 다음을 참고하세요 요청 제한과 재시도 |
| 긴 답변에서 발생하는 시간 초과 | 긴 비스트리밍 요청 | 스트리밍을 사용하거나 클라이언트 제한 시간을 늘리세요 |
자주 묻는 질문
OpenAI SDK로 Claude를 사용할 수 있나요?
OpenAI SDK에서 Claude를 사용하려면 어떤 기본 URL을 사용해야 하나요?
OpenAI 형식을 통해 Claude의 함수 호출을 사용할 수 있나요?
Anthropic 네이티브 API는 언제 사용해야 하나요?
API 키를 발급받으세요 — Anthropic 계정이나 대기자 명단 등록이 필요하지 않습니다.
API 키 발급받기AI Prime Tech는 독립적인 API 게이트웨이입니다. Anthropic과 제휴 관계가 없으며, Anthropic의 보증을 받거나 Anthropic의 리셀러로 활동하지 않습니다. Claude 및 관련 모델 이름은 각 소유자의 상표입니다.