
都是 Python,先看示例从哪里导入
打开 AIGoCode《第一次请求》的 Python 页签,你会看到两种写法:OpenAI Compatible 示例从 openai 导入 OpenAI,Claude Messages 和 Gemini generateContent 示例则使用 json 与 urllib。它们并不是同一段程序只换个模型名。
如果你正在把示例接进一个 Python 项目,先认清调用入口,再决定把配置、请求构造和响应处理接到哪里。本文说明的是这三份官方示例各自如何组织代码,不代表其他 SDK 不支持某个协议,也没有对本机 Python 环境做实测。
OpenAI Compatible:从客户端对象发起调用
官方示例先用 from openai import OpenAI 导入客户端,然后创建 OpenAI 对象,把 api_key 和 base_url 作为初始化参数。这里示例给出的 base_url 是 https://api.aigocode.dev/v1。
后面的调用通过 client.chat.completions.create 完成,模型与 messages 放在方法参数里。初次接入时可以按这个边界阅读:初始化部分是客户端配置,create 的参数是本次请求内容。不要把模型名写进 base_url,也不要把某次完整 HTTP 请求地址未经核对地代入客户端根地址字段。
如果程序在导入 openai 时就中断,先检查当前运行项目所用的 Python 环境是否能找到这个依赖;程序还没执行到接口调用时,不能据此判断 AIGoCode 的 Key 或额度有问题。这是本地程序的排查顺序,不是服务端返回的错误类型。
跑通最小示例后,再按项目需要组织输入。模型选择可参考本站三种协议的示例模型与检查顺序,这里不重复列模型清单。
Claude Messages:显式组装 Request
Claude 的 Python 示例从 urllib.request 导入 Request 和 urlopen。它先构造 body 字典,再创建 Request:地址是完整的 https://api.aigocode.dev/v1/messages,请求方法为 POST,headers 列出 x-api-key、anthropic-version 与 Content-Type。
这里没有 OpenAI 客户端对象;认证头和完整请求地址在 Request 构造处就能看到。把这份代码移进现有项目时,可以先定位三样东西:body 从哪来、headers 在哪构造、最后调用哪个 Request。不要把另一段 SDK 示例里的 api_key 参数名直接当成这里的 HTTP 头名称。
官方将 body 通过 json.dumps 序列化,再以 UTF-8 编码后交给 data。先字典、再 JSON 字符串、再请求数据,是阅读这份示例的清晰顺序。需要加入业务内容时,可以保留这条处理顺序,避免把手工拼接的字符串和字典混在一起。
Gemini:同样使用 urllib,但 URL 构造多了一步
Gemini 的 Python 示例也使用 Request 和 urlopen,还从 urllib.parse 导入 quote。示例用 quote 对 API Key 做 URL 编码,再把它放进 generateContent 地址的 key 参数;Request 的 headers 则列出 Content-Type。
因此,两份 urllib 示例即使发送方式相似,认证信息出现的位置也不同。抽取公共发送函数之前,先保留协议各自的 URL、headers 和 body 构造逻辑。公共函数怎样设计属于你的应用实现,不能据此推断 AIGoCode 会自动替你转换协议。
调试 Gemini 示例时,别把含真实 key 参数的完整 URL 粘进日志或工单。建议记录不带参数值的地址结构,把密钥留在自己的受控配置中。这样既能说明请求走向,也不必为了排错公开凭据。
最后,分清打印的是哪种返回对象
OpenAI Compatible 的 Python 示例在调用后使用 response.model_dump_json 输出 JSON。两份 urllib 示例则在 urlopen 的上下文里用 json.load 读取结果,最后用 json.dumps 显示该结果。输出到终端时都像 JSON,不代表打印前的对象支持同样的方法。
把请求层接进现有项目时,先保留各示例原本的结果处理方式,确认得到什么对象,再与自己程序的返回接口衔接。不要因为一段代码使用 model_dump_json,就把它直接粘到 json.load 得到的结果后面。
如果完整响应已经能输出,接下来才是提取文字和交给界面。该步骤可以继续读三种响应结构怎么读。本篇解决的是 Python 示例的调用入口与对象处理边界;不会把终端打印成功当成业务系统已经接入完成。
用一张记录结束这次迁移
将示例放进项目时,建议留下四项记录:所选协议、导入的客户端或模块、配置传入位置、调用后的结果处理方法。先让同一份最小示例在项目所用环境里工作,再逐步替换输入与业务逻辑。记录只写字段名和处理顺序,不保留真实 Key。