调用千问 3.5 Plus 做代码编程任务,最容易卡住的往往不是写提示词,而是三个基础配置:Base URL 填什么、模型名称怎么写、流式返回怎么接。这篇教程就按这三步拆开讲。
下面的内容面向已经拿到 API Key、准备把代码助手接进自己项目的开发者。示例统一使用 Python 与 OpenAI 兼容的调用方式,因为这种方式迁移成本低、社区资料多。需要提前说明的是:模型的具体名称、接口地址、是否支持流式以及计费规则,都要以你所用平台控制台和文档里实际显示的内容为准,本文示例中的参数只代表结构,不代表某个平台的固定取值。
一、代码编程场景对 API 接入的三个基本要求
代码编程和普通对话不太一样。它通常要处理长文件、多轮上下文、结构化输出和较长的生成结果,因此接入时有三个基本要求:
- 上下文要放得下:一次贴进来的文件、依赖、报错日志往往很长,需要确认所选模型的上下文长度和单次输入上限。
- 输出要能流式返回:补全代码、生成单元测试这类任务输出较长,流式返回可以让用户在首屏就看到内容,而不是等几十秒后一次性出现。
- 结果要能复核:模型生成的代码必须经过编译、测试和人工 review,不能直接进生产分支。
当你的项目里同时要用到对话模型、代码模型甚至图像和语音能力时,可以考虑用 AI 中转站这类聚合方式统一接入。例如 通联AI中转站 采用 OpenAI 兼容协议方向,一个 Base URL、一个 API Key 就能管理多个模型的调用配置,减少在多套 SDK 和多份密钥之间来回切换的成本。是否包含你需要的模型,请在模型广场中按实时列表确认。
二、接入前准备清单与配置项核对
在写第一行 Python 之前,建议先把下面这张表填满。很多人报错 404 或 401,问题其实都出在这几项没核对清楚。
| 配置项 | 作用 | 检查方法 |
|---|
| Base URL | 决定请求发往哪个接口域名与路径前缀 | 与控制台文档中的接口地址逐字符比对,注意结尾是否带 /v1 |
| API Key | 身份与额度凭据 | 确认未过期、未超额、未被删除,且环境变量已正确加载 |
| 模型名称 | 指定实际路由到哪个模型 | 直接复制控制台模型列表里的标识符,不要手写或猜测大小写 |
| SDK 版本 | 影响流式参数与返回对象结构 | 打印版本号,确认支持 stream=True 与增量块解析 |
三、Python 调用千问 3.5 Plus 代码编程 API 的最小示例
3.1 安装依赖
pip install --upgrade openai
3.2 先跑通一次非流式请求
调试阶段建议先关闭流式,因为非流式的报错信息更直观,返回体也更容易打印检查。
import os from openai import OpenAI client = OpenAI( api_key=os.environ["API_KEY"], base_url=os.environ["BASE_URL"], # 以控制台给出的地址为准 ) resp = client.chat.completions.create( model="your-model-id", # 以控制台模型列表为准 messages=[ {"role": "system", "content": "你是一名严谨的代码助手,只输出可直接运行的代码。"}, {"role": "user", "content": "用 Python 写一个带超时重试的 requests 封装函数。"}, ], ) print(resp.choices[0].message.content)
这段代码跑通,说明 Key、Base URL、模型名称三项都是对的。接下来再开流式,问题会少很多。
四、流式输出配置:让代码一块一块出现
4.1 打开 stream 参数
stream = client.chat.completions.create( model="your-model-id", messages=[{"role": "user", "content": "解释这段代码的时间复杂度,并给出优化版本。"}], stream=True, ) for chunk in stream: delta = chunk.choices[0].delta if delta and delta.content: print(delta.content, end="", flush=True)
4.2 流式处理的四个注意点
- 增量拼接而非整体替换:每个 chunk 只包含新增片段,前端要把片段累积成完整字符串,避免后到的片段覆盖前面内容。
- 处理空 delta:部分 chunk 的
content 可能为空,直接取值会报错,先判断再输出。 - 设置超时与中断:流式连接容易被网络波动打断,建议给客户端设置合理的超时,并在异常时保留已生成内容,方便用户续写。
- 记录首字延迟:代码任务里首字延迟比总耗时的体验影响更大,建议单独埋点统计。
流式只是传输方式的改变,不代表模型能力或计费口径发生变化。同一个请求开不开流式,通常按相同的输入输出 Token 规则计量,具体口径请以平台计费说明为准。
五、常见报错与排查顺序
- 401 鉴权失败:先确认 API Key 是否被正确读取,再确认请求头是否被代理或网关改写。
- 404 接口不存在:九成是 Base URL 多了或少了一段路径,或模型名称拼写与控制台不一致。
- 400 参数错误:检查消息角色是否规范、是否传了模型不支持的参数,部分模型的参数集并不完全一致。
- 流式无输出或卡住:确认服务端与反向代理是否关闭了响应缓冲,缓冲开启时流式会被攒成一整块返回。
- 输出被截断:确认是否触发了最大输出长度,长代码建议分段生成或提高输出上限。
如果你不想自己维护多套 Key 和多份环境变量,可以在 通联AI中转站 的控制台里统一管理 API Key、余额和模型选择,页面同时提供模型广场与接入文档,方便在写代码前先确认可用的模型标识与接口地址。
六、用量与成本的基本管理思路
代码编程类任务通常输入长、输出也长,用量增长比普通对话更快。建议从三个方面做管理:
- 用量观测:给每次调用打上项目或功能标签,区分补全、重构、单测、解释等不同用途的消耗。
- 余额与充值:提前设置余额提醒阈值,避免在批量任务中途因额度不足中断。
- 成本控制:简单任务用轻量模型,复杂重构再切到能力更强的模型,通过模型切换而不是一味提高调用量来控成本。
具体的计费方式、单价和充值入口都属于会变动的信息,建议直接到 通联官网 查看实时页面,不要依赖二手截图或旧文章里的数字。
七、接下来可以做什么
把上面几步跑通之后,可以继续做三件事:一是把非流式调用封装成带重试和超时的客户端;二是在前端接上流式渲染,处理空块和中断恢复;三是把模型名称、Base URL 这类配置从代码里抽出来放进环境变量或配置中心,方便后续切换模型而不改业务代码。千问 3.5 Plus 代码编程 API 的真正难点不在第一次调通,而在于长期稳定地把它嵌进你的开发流程里。
先把配置跑通,再谈工程化
注册后可进入控制台创建 API Key、查看接口地址与可用模型列表,先完成一次非流式请求,再打开流式参数验证输出效果。
进入通联控制台,注册后获取 API Key
模型名称、接口地址与计费规则以通联AI中转站控制台实时显示为准。