如何將OpenAI API調用遷移為Anthropic API
隨着大模型生態的不斷豐富,越來越多開發者希望將原本基於OpenAI的應用切換到Anthropic(如Claude 3等),以獲得更好的模型能力或滿足合規需求。本文將介紹OpenAI API與Anthropic API的主要差異,以及實際的代碼遷移示例,幫你高效完成API適配工作。
一、OpenAI與Anthropic API的主要區別
|
|
OpenAI(如GPT-3.5/4) |
Anthropic(如Claude 2/3) |
|
基本API地址 |
|
|
|
主模型參數 |
|
|
|
消息格式 |
role: system/user/assistant + content |
role: user/assistant + content,支持 |
|
授權方式 |
|
|
二、調用結構對比
OpenAI 示例(Python)
import openai
openai.api_key = "你的openai_api_key"
response = openai.ChatCompletion.create(
model='gpt-4',
messages=[
{"role": "system", "content": "你是助手"},
{"role": "user", "content": "你好!"}
]
)
print(response['choices'][0]['message']['content'])
Anthropic 示例(Python,使用requests庫)
import requests
API_KEY = "你的anthropic_api_key"
url = "https://api.anthropic.com/v1/messages"
headers = {
"x-api-key": API_KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json"
}
data = {
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "你好!"}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json()['content'][0]['text']) # 有可能是content,是數組
三、遷移注意事項
- 系統提示整合:OpenAI的system消息需單獨放到Anthropic的
system參數,或合併到用户消息前。 - 頭部差異:Anthropic需要
x-api-key和anthropic-version頭部。 - 消息結構調整:Anthropic不強制add“system”角色,可直接在參數中設定。
- token限制處理:Anthropic需顯式傳
max_tokens。
四、實際遷移步驟
- 替換API Key、服務端點與模型名:如
gpt-4換為claude-3-opus-20240229。 - 重構消息體格式,兼容新接口要求。
- 調整鑑權Header,開放新headers並刪除舊的Authorization寫法。
- 充分測試返回結構,推薦使用
print(response.json())觀察實際結構。
五、完整遷移案例
假設原OpenAI請求代碼如下:
import openai
openai.api_key = "sk-xxx"
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=[
{"role": "user", "content": "講個笑話"}
]
)
print(response['choices'][0]['message']['content'])
遷移為Anthropic:
import requests
headers = {
"x-api-key": "你的anthropic_api_key",
"anthropic-version": "2023-06-01",
"content-type": "application/json"
}
data = {
"model": "claude-3-haiku-20240307",
"max_tokens": 512,
"messages": [
{"role": "user", "content": "講個笑話"}
]
}
r = requests.post("https://api.anthropic.com/v1/messages", headers=headers, json=data)
print(r.json()["content"][0]["text"])
希望本文能幫助你順利完成OpenAI到Anthropic API的遷移。如需詳細支持或有其他AI方案問題,歡迎評論交流!