环境说明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等不兼容参数传入后不报错但会被忽略建议主动清除避免混淆。