OpenAI API 迁移到 Claude API 完整指南:代码改动、不兼容参数、迁移检查清单

发布时间:2026/10/5 11:23:50
OpenAI API 迁移到 Claude API 完整指南:代码改动、不兼容参数、迁移检查清单 环境说明openai Python SDK ≥ 1.0 / openai npm ≥ 4.0API 服务claudeapi.comOpenAI 兼容接口地址https://gw.claudeapi.com/v1核心只需改base_url、api_key、model三个字段无需更换 SDK。一、Python 迁移1.1 初始化# 迁移前fromopenaiimportOpenAI clientOpenAI(api_keysk-openai-xxx)# 迁移后fromopenaiimportOpenAI clientOpenAI(api_keysk-claudeapi-xxx,# 换 keybase_urlhttps://gw.claudeapi.com/v1# 换接口地址)1.2 基础调用responseclient.chat.completions.create(modelclaude-sonnet-4-6,# 原来是 gpt-4omessages[{role:system,content:你是一个Python专家},{role:user,content:实现一个线程安全的单例模式}],max_tokens2048,temperature0.7)print(response.choices[0].message.content)1.3 流式输出streamclient.chat.completions.create(modelclaude-sonnet-4-6,messages[{role:user,content:解释 Python GIL}],streamTrue,max_tokens1024)forchunkinstream:deltachunk.choices[0].deltaifdelta.content:print(delta.content,end,flushTrue)1.4 异步调用importasynciofromopenaiimportAsyncOpenAI async_clientAsyncOpenAI(api_keysk-claudeapi-xxx,base_urlhttps://gw.claudeapi.com/v1)asyncdefmain():responseawaitasync_client.chat.completions.create(modelclaude-sonnet-4-6,messages[{role:user,content:写一个异步 HTTP 客户端}],max_tokens1024)print(response.choices[0].message.content)asyncio.run(main())二、Node.js 迁移2.1 初始化// 迁移前importOpenAIfromopenai;constclientnewOpenAI({apiKey:sk-openai-xxx});// 迁移后importOpenAIfromopenai;constclientnewOpenAI({apiKey:sk-claudeapi-xxx,baseURL:https://gw.claudeapi.com/v1,});2.2 基础调用constresponseawaitclient.chat.completions.create({model:claude-sonnet-4-6,messages:[{role:system,content:你是一个 JavaScript 专家},{role:user,content:实现 Promise.all 的 polyfill}],max_tokens:2048,});console.log(response.choices[0].message.content);2.3 流式输出conststreamawaitclient.chat.completions.create({model:claude-sonnet-4-6,messages:[{role:user,content:解释事件循环机制}],stream:true,});forawait(constchunkofstream){constcontentchunk.choices[0]?.delta?.content??;process.stdout.write(content);}三、Tool Use函数调用OpenAI 的tools格式完全兼容无需修改工具定义。tools[{type:function,function:{name:execute_sql,description:执行 SQL 查询并返回结果,parameters:{type:object,properties:{query:{type:string,description:SQL 查询语句},database:{type:string,description:数据库名称,enum:[production,staging,dev]}},required:[query,database]}}}]responseclient.chat.completions.create(modelclaude-sonnet-4-6,messages[{role:user,content:查询 production 库中用户总数}],toolstools,tool_choiceauto)# 解析工具调用messageresponse.choices[0].messageifmessage.tool_calls:fortool_callinmessage.tool_calls:print(f调用函数{tool_call.function.name})print(f参数{tool_call.function.arguments})四、curl 示例# 基础调用curl-shttps://gw.claudeapi.com/v1/chat/completions\-HContent-Type: application/json\-HAuthorization: Bearer YOUR_API_KEY\-d{ model: claude-sonnet-4-6, messages: [ {role: user, content: 用 Python 实现二分查找} ], max_tokens: 1024 }|python3-mjson.tool# 流式调用curl-shttps://gw.claudeapi.com/v1/chat/completions\-HContent-Type: application/json\-HAuthorization: Bearer YOUR_API_KEY\-d{ model: claude-sonnet-4-6, messages: [{role: user, content: 解释 TCP 三次握手}], stream: true }五、不兼容参数详表参数OpenAI 支持Claude 支持迁移处理n 1✅❌改为多次独立调用logprobs✅❌移除参数top_logprobs✅❌移除参数presence_penalty✅❌移除Claude 默认行为类似frequency_penalty✅❌移除seed✅❌移除Claude 无确定性输出function_call旧格式✅旧❌更新为toolstool_choiceresponse_format: json_object✅❌在 system prompt 中指定 JSON 输出格式max_tokens✅✅无需修改temperature✅✅无需修改top_p✅✅无需修改stop✅✅无需修改stream✅✅无需修改六、模型名称对照OpenAI 模型推荐 Claude 模型输入价格输出价格gpt-3.5-turboclaude-haiku-4-5-20251001$0.8/MTok$4/MTokgpt-4oclaude-sonnet-4-6$2.4/MTok$12/MTokgpt-4-turboclaude-opus-4-8$4/MTok$20/MTok价格来源claudeapi.com 控制台2026-06-25七、迁移检查清单# 快速扫描不兼容参数Python 项目grep-rnpresence_penalty\|frequency_penalty\|logprobs\|\n\:\s*[2-9]\|function_call\|seed./src逐项核查base_url已改为https://gw.claudeapi.com/v1api_key已换成 claudeapi.com 的 Keysk-开头model已换为 Claude 模型名称完整名如claude-haiku-4-5-20251001无n 1无logprobs/top_logprobs无presence_penalty/frequency_penalty无seedfunction_call旧格式已更新为tools新格式如有response_format: json_object已改为 prompt 引导如有streaming 测试通过delta.content 非空tool use 测试通过finish_reason 为 “tool_calls”错误处理逻辑无须修改HTTP 状态码体系一致八、常见错误401 Unauthorized{error: {message: Invalid API key, type: authentication_error}}API Key 错误检查 key 是否为 claudeapi.com 的 key不是 OpenAI 的 key。404 Not Foundbase_url末尾少了/v1正确写法https://gw.claudeapi.com/v1。400 Bad Requestmodel not found模型名称不完整使用完整模型名如claude-haiku-4-5-20251001。参数被静默忽略presence_penalty、seed等不兼容参数传入后不报错但会被忽略建议主动清除避免混淆。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询