如何將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地址

https://api.openai.com/v1/chat/completions

https://api.anthropic.com/v1/messages

主模型參數

model, messages, temperature

model, messages, max_tokens, system

消息格式

role: system/user/assistant + content

role: user/assistant + content,支持system全局提示

授權方式

Authorization: Bearer <api_key>

x-api-key: <api_key>,並需指定anthropic-version頭部

二、調用結構對比

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-keyanthropic-version頭部。
  • 消息結構調整:Anthropic不強制add“system”角色,可直接在參數中設定。
  • token限制處理:Anthropic需顯式傳max_tokens

四、實際遷移步驟

  1. 替換API Key、服務端點與模型名:如gpt-4換為claude-3-opus-20240229
  2. 重構消息體格式,兼容新接口要求。
  3. 調整鑑權Header,開放新headers並刪除舊的Authorization寫法。
  4. 充分測試返回結構,推薦使用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方案問題,歡迎評論交流!