Source: https://aiprimetech.io/ko/learn/openai-compatible-claude-api/ [홈](/ko/) / [학습](/ko/learn/) / OpenAI SDK로 Claude 사용하기: OpenAI 호환 엔드포인트, 스트리밍, 도구 및 제한 # 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 ; x-api-key 도 허용됩니다 | 모델 | 다음과 같은 Claude ID: claude-sonnet-5; Codex 그룹의 키를 사용하는 GPT ID ## Python 터미널복사 ``` pip install openai ``` app.py복사 ``` import 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 app.mjs복사 ``` 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.py복사 ``` 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 응답 스트리밍](/ko/blog/streaming-api-guide/). ## 함수 호출 tools.py복사 ``` 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 변경 없이 계속 작동합니다. reasoning.py복사 ``` 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 가이드](/ko/learn/anthropic-python-sdk/) 및 다음 [Vercel AI SDK 가이드](/ko/learn/use-claude-api-with-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 | 동시에 처리 중인 요청이 너무 많음 | 동시 실행 수를 제한하세요. 다음을 참고하세요 [요청 제한과 재시도](/ko/blog/rate-limits-and-retries/) | 긴 답변에서 발생하는 시간 초과 | 긴 비스트리밍 요청 | 스트리밍을 사용하거나 클라이언트 제한 시간을 늘리세요 ## 자주 묻는 질문 OpenAI SDK로 Claude를 사용할 수 있나요? 네, OpenAI 호환 엔드포인트를 통해 사용할 수 있습니다. base_url을 게이트웨이의 /v1로 설정하고, 게이트웨이 API 키와 claude-sonnet-5. 같은 Claude 모델 ID를 사용하세요. 스트리밍과 함수 호출은 OpenAI 형식으로 작동합니다. OpenAI SDK에서 Claude를 사용하려면 어떤 기본 URL을 사용해야 하나요? /v1로 끝나는 게이트웨이 URL을 사용하세요. 예: https://aiprimetech.io/v1. SDK가 /chat/completions를 덧붙입니다. OpenAI 형식을 통해 Claude의 함수 호출을 사용할 수 있나요? 네. OpenAI 형식으로 tools를 전달하면 Claude는 finish_reason이 tool_calls인 tool_calls를 반환하며, 평소처럼 tool 메시지로 응답하면 됩니다. Anthropic 네이티브 API는 언제 사용해야 하나요? 명시적인 프롬프트 캐싱, 턴 사이에 전달하는 사고 블록, PDF 입력 또는 인용이 필요할 때 사용하세요. 이 기능들은 Anthropic의 Messages 형식에 포함되어 있습니다. 몇 분 만에 Claude 사용 시작하기 API 키를 발급받으세요 — Anthropic 계정이나 대기자 명단 등록이 필요하지 않습니다.[API 키 발급받기](/register) AI Prime Tech는 독립적인 API 게이트웨이입니다. Anthropic과 제휴 관계가 없으며, Anthropic의 보증을 받거나 Anthropic의 리셀러로 활동하지 않습니다. Claude 및 관련 모델 이름은 각 소유자의 상표입니다. ## 더 많은 Claude API 가이드 [Claude API 키 발급 방법](/ko/learn/how-to-get-a-claude-api-key/)[Claude API 요금 해설](/ko/learn/claude-api-pricing-explained/)[Claude API를 가장 저렴하게 사용하는 방법](/ko/learn/cheapest-way-to-use-claude-api/)[Claude API로 Cursor 무제한 사용](/learn/use-claude-api-with-cursor/)[Claude Code 무제한 이용](/ko/learn/use-claude-api-with-claude-code/)[Claude API 게이트웨이와 Anthropic 직접 이용 비교](/ko/learn/claude-api-vs-anthropic-direct/)[Claude 모델 해설: Claude Opus, Sonnet, Haiku, Fable 비교 — 모든 Claude API 모델, Anthropic 모델 이름 및 가격 (2026)](/ko/learn/claude-api-models-compared/)[암호화폐로 Claude API 요금 결제하기](/ko/learn/claude-api-with-crypto-payment/)[대기 명단 없이 Claude API 이용하기](/ko/learn/claude-api-without-waitlist/)[Claude 토큰 사용량을 줄이는 방법](/ko/learn/how-to-reduce-claude-token-usage/)[Claude API로 Cline 무제한 사용](/ko/learn/use-claude-api-with-cline/)[Claude API로 Roo Code 무제한 사용](/ko/learn/use-claude-api-with-roo-code/)[JetBrains IDE에서 Claude 무제한 사용](/ko/learn/use-claude-api-with-jetbrains/)[게이트웨이를 통해 Claude와 함께 사용하는 Aider: ANTHROPIC_API_BASE, 구성 파일, architect 모드 및 문제 해결](/ko/learn/use-claude-api-with-aider/)[VS Code에서 Claude 무제한 사용](/ko/learn/use-claude-api-with-vscode/)[Claude용 OpenCode 구성: opencode.json 설정, 모델 및 일반적인 오류](/ko/learn/use-claude-api-with-opencode/)[게이트웨이를 통해 Claude와 함께 사용하는 Hermes Agent: 사용자 지정 제공업체 설정, 비용 관리 및 문제 해결](/ko/learn/run-hermes-agent-with-claude-api/)[Claude에서 OpenClaw 무제한 실행하기](/ko/learn/run-openclaw-with-claude-api/)[Anthropic 호환 API의 의미](/ko/learn/anthropic-compatible-api/)[Claude Code API 키 — ANTHROPIC_API_KEY: 발급 및 설정 방법과 대신 claude setup-token을 사용해야 하는 경우](/ko/learn/claude-code-api-key-setup/)[Claude Code API 비용 — 요금과 절감 방법](/ko/learn/claude-code-api-costs/)[Claude API 오류 설명: 서버 오류 500, 과부하 529, 사용량 제한 429, 잘못된 요청 400 — 각 오류의 해결 방법](/ko/learn/claude-api-errors-troubleshooting/)[Claude API 크레딧 구매 방법 — 그리고 Claude 크레딧이 어떤 "Claude 계정 구매" 상품보다 나은 이유](/ko/learn/buy-claude-api-credits/)[Claude 무료 API: 무료 Claude API 키가 있나요? 2026년에 실제로 무료인 것은 무엇인가요?](/ko/learn/claude-api-free-trial/)[Claude API와 Claude Pro/Max 구독 — 어떤 것을 선택할까요](/ko/learn/claude-api-vs-subscription/)[사용자 지정 제공업체와 함께 사용하는 Codex CLI: config.toml, GPT 및 Claude 모델, IDE 확장 프로그램 및 문제 해결](/ko/learn/use-claude-api-with-codex/)[Claude를 n8n에 연결하기](/ko/learn/use-claude-api-with-n8n/)[LiteLLM을 Claude로 라우팅하기](/ko/learn/use-claude-api-with-litellm/)[Kilo Code에서 Claude 사용하기](/ko/learn/use-claude-api-with-kilo-code/)[게이트웨이를 통해 Claude와 함께 사용하는 GitHub Copilot Chat: Custom Endpoint 설정, 에이전트 모드 및 문제 해결](/ko/learn/use-claude-api-with-github-copilot/)[게이트웨이를 통해 Zed를 Claude에 연결하기](/ko/learn/use-claude-api-with-zed/)[Cherry Studio를 Claude에 연결하기](/ko/learn/use-claude-api-with-cherry-studio/)[LangChain의 ChatAnthropic: 가져오기, base_url, 스트리밍, 도구 및 오류](/ko/learn/use-claude-api-with-langchain/)[Anthropic Python SDK: 설치, base_url 설정, 스트리밍 및 오류 처리](/ko/learn/anthropic-python-sdk/)[Vercel AI SDK로 Claude 사용하기: createAnthropic baseURL, 스트리밍 및 문제 해결](/ko/learn/use-claude-api-with-vercel-ai-sdk/)[Claude로 Factory Droid 실행하기](/ko/learn/use-claude-api-with-factory-droid/)[Claude Code API 이해하기](/ko/learn/claude-code-api/)[애플리케이션에 Claude API 통합하기](/ko/learn/claude-api-integration/)[Claude를 무제한으로 사용하는 방법 — 그리고 "Claude Code 크랙 버전"이 없는 이유](/ko/learn/get-unlimited-claude-usage/)