一篇文章讲清楚:中转API如何用Python调用ChatGPT
你是否遇到过这样的场景想把 ChatGPT 接入自己的应用却被模型限制、价格波动、接口差异搞得一头雾水刚写好的代码换一个模型就要重构一遍好不容易跑通了又发现前端、后端、流式输出全都要重新适配。现在这些问题可以用一个“中转 API”一次性解决。本教程将手把手带你使用神马中转API兼容 OpenAI Chat Completions 的中转 API通过 Python 快速部署一个可切换多模型的 ChatGPT 应用。无论你使用的是 OpenAI、Claude、Gemini、DeepSeek还是其他对话模型只需要 一个统一接口、一套请求格式就能完成调用。这套中转API是什么这套神马中转API接口兼容OpenAI 的 Chat Completions 格式你只需要在请求体里改 model就可以切换 OpenAI / Claude / Gemini / DeepSeek / Grok / Qwen 等模型。你给的接口是Chat(聊天)方法POST路径/v1/chat/completions准备工作Base URL 与 API Key文档说明BaseURL通常是神马中转API域名也可以在工作台页面查看API key在令牌页面获取你可以把它们放到环境变量里推荐export GPT_BEST_BASE_URL你的BaseURL例如https://api.whatai.cc export GPT_BEST_API_KEY你的API_KEY按文档拼请求Header BodyHeader文档示例里用的是Accept: application/jsonAuthorization: Bearer {{YOUR_API_KEY}}Content-Type: application/jsonBody请求体application/json文档示例包含这些字段model、messages、temperature、top_p、n、stream、stop、max_tokens、presence_penalty、frequency_penalty、logit_bias、user、response_format、seen、tools、tool_choice。最小可用通常是 model messages其他按需加。Python同步请求示例requestsimport os import requests BASE_URL os.getenv(GPT_BEST_BASE_URL) # 你的 BaseURLhttps://api.whatai.cc) API_KEY os.getenv(GPT_BEST_API_KEY) if not BASE_URL or not API_KEY: raise RuntimeError(请先设置 GPT_BEST_BASE_URL 和 GPT_BEST_API_KEY 环境变量) url f{BASE_URL.rstrip(/)}/v1/chat/completions # 接口路径 headers { Accept: application/json, Authorization: fBearer {API_KEY}, # Bearer 方式 Content-Type: application/json, } payload { model: gpt-4o-mini, # 按需替换成你要用的模型名 messages: [ {role: system, content: 你是一个严谨的编程助手。}, {role: user, content: 用Python写一个快速排序并解释时间复杂度。}, ], temperature: 0.7, top_p: 1, n: 1, stream: False, # 非流式 max_tokens: 800, } resp requests.post(url, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() # 返回格式示例choices[0].message.content print(data[choices][0][message][content]) print(usage:, data.get(usage))Python流式输出示例streamtrue文档请求体里有 stream: true 字段示例。流式一般是服务端不断返回分片常见是 SSEdata: ...。import os import json import requests BASE_URL os.getenv(GPT_BEST_BASE_URL) API_KEY os.getenv(GPT_BEST_API_KEY) url f{BASE_URL.rstrip(/)}/v1/chat/completions headers { Accept: application/json, Authorization: fBearer {API_KEY}, Content-Type: application/json, } payload { model: gpt-4o-mini, messages: [ {role: user, content: 请用三句话解释什么是递归并给一个Python例子。} ], stream: True, # 流式 temperature: 0.6, } with requests.post(url, headersheaders, jsonpayload, streamTrue, timeout60) as r: r.raise_for_status() for line in r.iter_lines(decode_unicodeTrue): if not line: continue # 常见 SSE 行data: {...} 或 data: [DONE] if line.startswith(data:): line line[len(data:):].strip() if line [DONE]: break try: chunk json.loads(line) except json.JSONDecodeError: # 如果服务端不是 SSE 格式而是纯JSON片段可在这里按需兼容 continue # OpenAI 风格流式choices[0].delta.content delta chunk.get(choices, [{}])[0].get(delta, {}) content delta.get(content) if content: print(content, end, flushTrue) print() # 换行“部署一个 ChatGPT 应用”的最小后端FastAPI转发可选这个小服务做两件事接收你自己的前端请求转发到中转 API 的 /v1/chat/completions仍然保持文档要求的 Header/Body 结构import os import requests from fastapi import FastAPI, HTTPException from pydantic import BaseModel BASE_URL os.getenv(GPT_BEST_BASE_URL) API_KEY os.getenv(GPT_BEST_API_KEY) app FastAPI() class ChatReq(BaseModel): model: str messages: list temperature: float | None None top_p: float | None None n: int | None None stream: bool | None None stop: str | None None max_tokens: int | None None presence_penalty: float | None None frequency_penalty: float | None None logit_bias: dict | None None user: str | None None response_format: dict | None None seen: int | None None tools: list | None None tool_choice: dict | None None app.post(/chat) def chat(req: ChatReq): if not BASE_URL or not API_KEY: raise HTTPException(status_code500, detailMissing GPT_BEST_BASE_URL / GPT_BEST_API_KEY) url f{BASE_URL.rstrip(/)}/v1/chat/completions # headers { Accept: application/json, Authorization: fBearer {API_KEY}, # Content-Type: application/json, } resp requests.post(url, headersheaders, jsonreq.model_dump(exclude_noneTrue), timeout60) if resp.status_code ! 200: raise HTTPException(status_coderesp.status_code, detailresp.text) return resp.json()启动示例uvicorn your_file_name:app --host 0.0.0.0 --port 8000返回结果怎么看文档给的返回示例结构是choices: 数组choices[0].message.role/contentusage.prompt_tokens / completion_tokens / total_tokens你在 Python 里通常取data[choices][0][message][content]

相关新闻

智能井盖安全监测系统的设计与实现

智能井盖安全监测系统的设计与实现

2026/7/2 22:32:16 阅读更多 →
深度测评9个论文写作工具,自考学生一键生成论文工具推荐!

深度测评9个论文写作工具,自考学生一键生成论文工具推荐!

2026/7/3 21:17:20 阅读更多 →
初学者使用 docker 快速体验 TDengine 功能

初学者使用 docker 快速体验 TDengine 功能

2026/7/3 21:17:31 阅读更多 →

最新新闻

93.CODESYS/TIA 通用!模块化 ST 电机控制系统,含故障复位与时序优化

93.CODESYS/TIA 通用!模块化 ST 电机控制系统,含故障复位与时序优化

摘要 本文面向具备基础电气或计算机背景的工程师,系统阐述可编程逻辑控制器(PLC)的核心原理与工程实践。从继电器电路到梯形图、结构化文本的映射关系切入,深入分析PLC扫描周期、内存映射、数据类型等底层机制。通过一个完整的电机启停与故障报警系统案例,提供可直接运行…

2026/7/4 3:01:45 阅读更多 →
qt启动等待动态图

qt启动等待动态图

#ifndef SPLASHSCREEN_H #define SPLASHSCREEN_H #include <QLabel> #include <QGridLayout> #include <QTimer> #include <QPainter> #include <QMouseEvent> //启动窗口 class SplashScreen : public QWidget {Q_OBJECT public:explicit Splas…

2026/7/4 3:01:45 阅读更多 →
分享一个连DeepSeek都说“颜值高”的代码截图工具

分享一个连DeepSeek都说“颜值高”的代码截图工具

作为一名程序员&#xff0c;我经常上各大社区闲逛&#xff0c;看看别人写的文章&#xff0c;当看到别人写的文章既有技术含量又美观的时候&#xff0c;心里是各种羡慕&#xff0c;心想什么时候我能写出这种文章来就好了&#xff0c;不过羡慕归羡慕&#xff0c;自己从没行动过。…

2026/7/4 3:01:45 阅读更多 →
大模型应用中的“中转层”到底解决了什么问题?

大模型应用中的“中转层”到底解决了什么问题?

过去一段时间&#xff0c;大模型应用的热度一直很高。从聊天机器人、智能客服&#xff0c;到知识库问答、代码助手、内容生成工具&#xff0c;再到企业内部自动化系统&#xff0c;越来越多应用开始接入大模型能力。但很多人在真正开发或长期使用 AI 应用时&#xff0c;会发现一…

2026/7/4 3:01:45 阅读更多 →
AI Agent平台架构设计:从概念到企业级工程实践

AI Agent平台架构设计:从概念到企业级工程实践

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 你有没有遇到过这种情况&#xff1a;想用大模型做个稍微复杂点的任务&#xff0c;比如“帮我分析一下这个季度的销售数据&#xff0c;…

2026/7/4 2:59:44 阅读更多 →
发文章-送会员活动

发文章-送会员活动

Lemomate AI举办LemoTex智能科研写作闭环平台、LemoPresentation-AI驱动的智能汇报与演示平台、Lemos-AI定义与驱动的智能图谱知识库和Lemo-AI智能大模型平台的性能和功能展示活动&#xff0c;参加成员每天在CSDN账号且我查看&#xff0c;发表一篇上述平台的使用体验和功能展示…

2026/7/4 2:57:44 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布&#xff0c;这是一个关键的安全修复版本&#xff0c;修复了多个方面的问题&#xff0c;还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出&#xff0c;mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南&#xff1a;使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL&#xff08;Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器&#xff0c;与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻