curl, Python(Anthropic/OpenAI SDK), Node.js(Anthropic/OpenAI SDK), Claude Code CLI 등 다양한 호출 방법 정리 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.9 KiB
6.9 KiB
CLIProxyAPI 호출 가이드
접속 정보
| 항목 | 값 |
|---|---|
| 외부 URL | https://cliproxy.gru.farm |
| 내부 URL | http://192.168.0.17:8317 |
| API 키 | Jinie4eva! |
| 인증 방식 | Authorization: Bearer <API키> |
엔드포인트
| 용도 | 경로 |
|---|---|
| Claude 네이티브 (권장) | /api/provider/claude/v1/messages |
| OpenAI 호환 | /v1/chat/completions |
| 모델 목록 | /v1/models |
사용 가능한 모델
| 모델 ID | 설명 |
|---|---|
claude-sonnet-4-6 |
Claude Sonnet 4.6 (최신, 권장) |
claude-opus-4-6 |
Claude Opus 4.6 (최고 성능) |
claude-sonnet-4-5-20250929 |
Claude Sonnet 4.5 |
claude-opus-4-5-20251101 |
Claude Opus 4.5 |
claude-haiku-4-5-20251001 |
Claude Haiku 4.5 (경량/빠름) |
claude-sonnet-4-20250514 |
Claude Sonnet 4 |
claude-opus-4-20250514 |
Claude Opus 4 |
claude-3-7-sonnet-20250219 |
Claude 3.7 Sonnet |
claude-3-5-haiku-20241022 |
Claude 3.5 Haiku |
1. curl
기본 호출
curl -X POST https://cliproxy.gru.farm/api/provider/claude/v1/messages \
-H "Authorization: Bearer Jinie4eva!" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "안녕! 간단히 소개해줘"}
]
}'
스트리밍
curl -X POST https://cliproxy.gru.farm/api/provider/claude/v1/messages \
-H "Authorization: Bearer Jinie4eva!" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "안녕!"}
]
}'
모델 목록 조회
curl https://cliproxy.gru.farm/v1/models \
-H "Authorization: Bearer Jinie4eva!"
2. Python — Anthropic SDK
설치
pip install anthropic
기본 호출
from anthropic import Anthropic
client = Anthropic(
base_url="https://cliproxy.gru.farm/api/provider/claude",
api_key="Jinie4eva!"
)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "안녕! 간단히 소개해줘"}
]
)
print(response.content[0].text)
스트리밍
from anthropic import Anthropic
client = Anthropic(
base_url="https://cliproxy.gru.farm/api/provider/claude",
api_key="Jinie4eva!"
)
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "안녕! 간단히 소개해줘"}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
시스템 프롬프트 + 멀티턴
from anthropic import Anthropic
client = Anthropic(
base_url="https://cliproxy.gru.farm/api/provider/claude",
api_key="Jinie4eva!"
)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="당신은 친절한 한국어 AI 어시스턴트입니다.",
messages=[
{"role": "user", "content": "파이썬이 뭐야?"},
{"role": "assistant", "content": "파이썬은 프로그래밍 언어입니다."},
{"role": "user", "content": "그럼 자바스크립트는?"}
]
)
print(response.content[0].text)
3. Python — OpenAI SDK (호환 모드)
설치
pip install openai
기본 호출
from openai import OpenAI
client = OpenAI(
base_url="https://cliproxy.gru.farm/v1",
api_key="Jinie4eva!"
)
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "user", "content": "안녕!"}
]
)
print(response.choices[0].message.content)
스트리밍
from openai import OpenAI
client = OpenAI(
base_url="https://cliproxy.gru.farm/v1",
api_key="Jinie4eva!"
)
stream = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "안녕!"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
4. Node.js — Anthropic SDK
설치
npm install @anthropic-ai/sdk
기본 호출
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://cliproxy.gru.farm/api/provider/claude",
apiKey: "Jinie4eva!",
});
const response = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "안녕!" }],
});
console.log(response.content[0].text);
스트리밍
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://cliproxy.gru.farm/api/provider/claude",
apiKey: "Jinie4eva!",
});
const stream = client.messages.stream({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "안녕!" }],
});
for await (const chunk of stream) {
if (
chunk.type === "content_block_delta" &&
chunk.delta.type === "text_delta"
) {
process.stdout.write(chunk.delta.text);
}
}
5. Node.js — OpenAI SDK (호환 모드)
설치
npm install openai
기본 호출
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://cliproxy.gru.farm/v1",
apiKey: "Jinie4eva!",
});
const response = await client.chat.completions.create({
model: "claude-sonnet-4-6",
messages: [{ role: "user", content: "안녕!" }],
});
console.log(response.choices[0].message.content);
6. Claude Code CLI
export ANTHROPIC_BASE_URL=https://cliproxy.gru.farm/api/provider/claude
export ANTHROPIC_API_KEY=Jinie4eva!
claude
영구 적용 (~/.zshrc 또는 ~/.bashrc):
echo 'export ANTHROPIC_BASE_URL=https://cliproxy.gru.farm/api/provider/claude' >> ~/.zshrc
echo 'export ANTHROPIC_API_KEY=Jinie4eva!' >> ~/.zshrc
source ~/.zshrc
7. 환경변수로 관리
.env 파일:
ANTHROPIC_BASE_URL=https://cliproxy.gru.farm/api/provider/claude
ANTHROPIC_API_KEY=Jinie4eva!
Python에서 .env 사용:
from dotenv import load_dotenv
from anthropic import Anthropic
load_dotenv()
# base_url, api_key 자동으로 환경변수에서 읽음
client = Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "안녕!"}]
)
print(response.content[0].text)
주의사항
- 내부망 접근 시 URL을
http://192.168.0.17:8317로 변경 - OpenAI 호환 모드는
/v1/chat/completions를 사용하지만, Claude 네이티브 기능(extended thinking 등)은/api/provider/claude/v1/messages사용 권장 - 타임아웃 설정: 긴 응답의 경우 클라이언트 타임아웃을 600초 이상으로 설정