ä¿®å¤ Python Claude API 代çèæ¬ | AIçæåç¿»è¯
é®é¢ï¼ å¦ä½ä¿®å¤è°ç¨ pincc.ai Claude API 代çç Python èæ¬ï¼ä½¿å ¶æ£ç¡®å·¥ä½ï¼
çæ¡ï¼
æ ¹æ®æ¨åäº«çææ¡£ä»¥åå®é
claude CLI çæå工使¹å¼ï¼ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKENï¼ï¼ä»¥ä¸æ¯å®æ´çåæåä¿®å¤ã
æ ¹æ¬åå åæ
pincc.ai ä»£çæ¯ä¸ä¸ª Claude Code ä¸ç»§æå¡ã仿¥å¿ä¸å¯ä»¥çå°ï¼çå®ç CLI å®ç¾å·¥ä½ï¼
ANTHROPIC_BASE_URL="https://v2-as.pincc.ai" ANTHROPIC_AUTH_TOKEN="$PINCC_API_KEY" claude --print "Hello"
# è¾åºï¼Hello! How can I help you today?
使¯ Python requests èæ¬æç»å¤±è´¥ãæå¯è½çåå ï¼
- é误ç认è¯å¤´æ ¼å¼ â 该ä¸ç»§å¯è½ææ
x-api-keyèéAuthorization: Bearer - éè¯¯çæ¨¡ååç§° â
claude-sonnet-4-6å¯è½ä¸è¢«æ¥åï¼è¯¥ä¸ç»§å¯è½éè¦ç¹å®ç模åå符串 - ç¼ºå°æé误ç
anthropic-beta头 â 该ä¸ç»§éªè¯ Claude Code 客æ·ç«¯èº«ä»½ - SSL / 请æ±åºé®é¢ â æ¥å¿ä¸ç urllib3 çæ¬è¦å
ä¿®å¤åçèæ¬
æé¡ºåºå°è¯æ¯ç§æ¹æ³ï¼
æ¹æ³ 1 â ä½¿ç¨ x-api-keyï¼æ å Anthropic æ ¼å¼ï¼
#!/usr/bin/env python3
import os
import requests
def main():
api_key = os.environ.get("PINCC_API_KEY")
if not api_key:
raise ValueError("PINCC_API_KEY environment variable not set")
response = requests.post(
"https://v2-as.pincc.ai/v1/messages",
headers={
"Content-Type": "application/json",
"anthropic-version": "2023-06-01",
"x-api-key": api_key, # â standard Anthropic header
},
json={
"model": "claude-sonnet-4-20250514", # â use full model string
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}],
},
)
print(response.status_code)
print(response.json())
if __name__ == "__main__":
main()
æ¹æ³ 2 â å®å ¨å¹é CLI åéçå 容
æ ¹æ®ææ¡£ï¼CLI ä½¿ç¨ ANTHROPIC_AUTH_TOKENï¼å®æ å°å° Authorization: Bearerãæ¥å¿ä¸çå
³é®æ´å¯æ¯ CLI è¿ä½¿ç¨ç¹å®çå¤´æ¥æ è¯èªå·±ï¼
#!/usr/bin/env python3
import os
import requests
def main():
api_key = os.environ.get("PINCC_API_KEY")
if not api_key:
raise ValueError("PINCC_API_KEY environment variable not set")
response = requests.post(
"https://v2-as.pincc.ai/v1/messages",
headers={
"Content-Type": "application/json",
"anthropic-version": "2023-06-01",
"Authorization": f"Bearer {api_key}",
"User-Agent": "claude-code/2.1.76 (external)",
"anthropic-beta": "claude-code-20250219",
"x-stainless-helper": "true", # â found in the CLI source
},
json={
"model": "claude-sonnet-4-20250514", # â full model string
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}],
},
)
print(response.status_code)
print(response.json())
if __name__ == "__main__":
main()
æ¹æ³ 3 â ä½¿ç¨ httpx é¿å
urllib3 è¦å
requests çæ¬è¦åï¼urllib3 (2.6.3) ... doesn't match a supported versionï¼ææ¶ä¼å¯¼è´ SSL é®é¢ãåæ¢å° httpxï¼
#!/usr/bin/env python3
import os
import httpx
def main():
api_key = os.environ.get("PINCC_API_KEY")
if not api_key:
raise ValueError("PINCC_API_KEY environment variable not set")
with httpx.Client() as client:
response = client.post(
"https://v2-as.pincc.ai/v1/messages",
headers={
"Content-Type": "application/json",
"anthropic-version": "2023-06-01",
"x-api-key": api_key,
},
json={
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}],
},
)
print(response.status_code)
print(response.json())
if __name__ == "__main__":
main()
æ¹æ³ 4 â 使ç¨å®æ¹ Anthropic SDKï¼æå¯é ï¼
pincc.ai ä¸ç»§æ¯ææ åç ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN é
ç½®ãæ¨å¯ä»¥ç´æ¥ä½¿ç¨ SDKï¼
#!/usr/bin/env python3
import os
import anthropic
def main():
client = anthropic.Anthropic(
base_url="https://v2-as.pincc.ai",
auth_token=os.environ.get("PINCC_API_KEY"),
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content)
if __name__ == "__main__":
main()
å®è£
å½ä»¤ï¼pip install anthropic
å¿«éè°è¯æç¤º
æå°å®æ´çé误ååºä»¥æ¥çç¡®å失败åå ï¼
print(response.status_code)
print(response.text) # raw response text, better than .json() when it fails
常è§é误å«ä¹ï¼
- 401 â API å¯é¥é误æè®¤è¯å¤´æ ¼å¼é误
- 403 â 客æ·ç«¯èº«ä»½æ£æ¥å¤±è´¥ï¼User-Agent / beta 头ï¼
- 404 â 端ç¹è·¯å¾é误
- 422 â æ¨¡ååç§°æè¯·æ±ä½æ ¼å¼é误
æ¹æ³ 4 (SDK) æ¯ææ¨èçï¼å 为å®èªå¨å¤ç认è¯ãéè¯å模åå½åï¼å¹¶ä¸å·²ç¥ä¸ä¸ç»§ä»£çå ¼å®¹ã
åèèµæï¼
