본문으로 건너뛰기
한국어

Anthropic SDK 연동 (Python / TypeScript)

Anthropic 공식 SDK로 1zheai 호출: base_url에 https://1zheai.com 입력, 캐시·스트리밍·도구 호출·thinking을 네이티브 지원.

Anthropic 공식 SDK는 네이티브 /v1/messages을 사용하므로 Claude의 모든 파라미터를 그대로 사용할 수 있습니다. 변경할 부분은 base_url과 api_key뿐입니다.

Python
pip install anthropic
Python
import os
import anthropic
client = anthropic.Anthropic(
base_url="https://1zheai.com",
api_key=os.environ["ONEZHE_API_KEY"],
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(message.model)
print(message.content[0].text)
print(message.usage)

base_url에 루트 주소를 입력하며, /v1을 붙이지 마세요.

Python
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首四行的诗"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

길고 고정된 내용을 system에 넣고 cache_control을 추가하세요:

Python
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": LONG_PROJECT_CONTEXT, # 每次都一样的长文本
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "根据上面的说明回答:..."}],
)
print(message.usage.cache_creation_input_tokens, message.usage.cache_read_input_tokens)

두 번째 호출 시 cache_read_input_tokens이 0보다 크면 캐시에 적중한 것입니다. 자세한 내용은 Prompt Caching을 참조하세요.

공식 SDK는 ANTHROPIC_BASE_URL과 ANTHROPIC_API_KEY을 읽으므로, 클라이언트 생성 시 파라미터를 전달하지 않아도 됩니다:

bash
export ANTHROPIC_BASE_URL="https://1zheai.com"
export ANTHROPIC_API_KEY="sk-你的Key"

그런 다음 클라이언트 생성 시 파라미터를 전달하지 않습니다:

python
client = anthropic.Anthropic() # 自动读取上面两个变量

이 기기에서 Claude Code도 이 두 변수를 읽는다면, 둘 다 1zheai로 전환됩니다. 보통 원하는 결과가 바로 이것입니다.

404?

base_url에 /v1을 과도하게 입력했습니다. Anthropic SDK가 /v1/messages을 자동으로 조합합니다.

401?

API 키(API key)를 확인하세요. 또한, 환경에 ANTHROPIC_AUTH_TOKEN(예: 이전에 Claude Code에 설정한 오래된 값)이 동시에 존재하면 SDK가 이것도 읽으므로, 오래된 값을 삭제한 후 다시 시도하세요.

system, 콘텐츠 블록, 중지 원인을 조회해야 한다면 Messages 인터페이스 상세을 확인하세요. 완전한 프로그램은 콘텐츠 블록 유형에 따라 텍스트를 읽어야 하며, 첫 번째 블록이 항상 text라고 가정하지 마세요.