2026年AI智能体开发API接入教程:鉴权、工具调用与流式输出实践
2026年AI智能体开发API接入教程:鉴权、工具调用与流式输出实践
智能体 API 接入失败,多数时候不是模型能力不够,而是鉴权、工具调用、流式输出这三件事没有同时配对。
和普通对话接口相比,智能体接口多了一层“规划—调用—再推理”的循环:模型可以要求执行你提供的函数,你的服务端执行完再把结果回传。任何一个字段格式不对,现象都会表现成“模型好像没听懂”。下面按接入顺序拆开讲,涉及接口地址、模型名称这类实时信息时,请以控制台显示为准,例如 通联AI中转站 的模型广场与文档页。
一、接入前必须确认的三件事
很多人一上来就复制示例代码,结果卡在第一步。建议先把下面三项写进配置表,再动手写业务逻辑。
- 凭证:一枚可用的 API Key,它决定你能调用哪些模型,也决定用量记在哪个账号下。
- 接口地址:服务商提供的 Base URL。不要从旧博客或聊天记录里抄地址,路径一旦不对,报错通常只会告诉你是 404。
- 模型标识:控制台里实际可用的模型名称或 ID,同一家厂商不同版本的命名可能只差一个后缀,写错就会被拒绝。
当项目需要同时调用对话、图像、视频或语音等不同能力时,把 Key 和模型分散在多家平台上,排查成本会明显上升。像通联AI中转站这类 AI 聚合平台,提供统一的 API Key 管理和多模型选择入口,适合需要在一个控制台里切换模型、查看余额与调用记录的团队。具体支持哪些模型、采用什么协议,仍要以官网页面实时信息为准。
1. 凭证应该放在哪里
把 API Key 放进环境变量或密钥管理服务,不要写进代码仓库。前端代码里绝对不能出现 Key,哪怕只是内部工具——一旦泄露,产生的用量和费用都由账号持有人承担。
2. 工具定义要先于提示词
工具调用依赖结构化的函数描述。建议先写清楚函数名、用途说明和参数 JSON Schema,再回头写系统提示词。参数类型写错(比如把整数写成字符串),模型很容易生成无法执行的参数。
| 配置项 | 作用 | 检查方法 |
|---|---|---|
| API Key | 身份认证与用量归属 | 发一个最小请求,返回 401 说明 Key 无效或缺少 Bearer 前缀 |
| Base URL | 决定请求打到哪个网关 | 与控制台文档逐字符比对,注意是否已包含版本路径 |
| 模型名称或 ID | 决定实际调用哪个模型 | 从模型列表复制,不要手打,注意大小写与后缀 |
| tools 定义 | 声明可被调用的函数 | 做一次触发测试,确认返回的是函数名与参数而非自然语言 |
二、鉴权:先让最小请求返回 200
鉴权阶段的目标只有一个:证明 Key、Base URL 和模型名是匹配的。此时不要传业务数据,写一个最小请求即可。
import os, requests
BASE_URL = os.environ['AI_BASE_URL'] # 以控制台显示的接口地址为准
API_KEY = os.environ['AI_API_KEY']
MODEL = os.environ['AGENT_MODEL'] # 以模型列表中的名称或 ID 为准
resp = requests.post(
BASE_URL + '/chat/completions',
headers={'Authorization': 'Bearer ' + API_KEY, 'Content-Type': 'application/json'},
json={'model': MODEL, 'messages': [{'role': 'user', 'content': '你好'}], 'stream': False},
timeout=60,
)
print(resp.status_code)
print(resp.json())
如果返回 401 或 403,优先查三处:请求头是否使用 Bearer 前缀、Key 复制时是否带了空格、该 Key 是否被限制了可用模型。返回 404 一般是路径或 Base URL 写错,与 Key 本身无关;返回 400 且提示与模型相关,则多半是模型标识不被该账号支持。
三、工具调用:模型提需求,你负责执行
工具调用的正确分工是:模型判断“该调用哪个函数、参数是什么”,你的服务端负责校验参数、执行动作、把结果作为一条消息回传。典型循环如下:
- 发送用户消息和 tools 定义。
- 模型返回 tool_calls,包含函数名和 JSON 参数。
- 服务端校验参数(权限、额度、格式)后执行真实动作。
- 把执行结果以工具消息的形式追加到消息列表。
- 再次请求模型,让它基于工具结果生成最终回答。
这一步最常见的坑是“忘记回传结果”:只发一次请求就等答案,拿到的往往是一个空回复。另一个坑是把工具执行放在客户端,参数一旦可以被篡改,工具调用的安全性就无从谈起。
工具调用只应把模型当作“参数生成器”,真正的执行、权限判断和结果校验必须留在你自己的服务端。模型说要做某件事,不等于这件事可以被执行。
四、流式输出:把增量片段拼成可用结果
智能体的输出往往是多段推理加最终答案,流式返回能让前端尽早展示内容。开启方式通常是在请求体里把 stream 设为 true,然后逐行读取以 data: 开头的片段。
# 开启 stream 后,逐行读取增量片段
for line in resp.iter_lines():
if not line:
continue
text = line.decode('utf-8')
if not text.startswith('data: '):
continue
payload = text[6:]
if payload == '[DONE]':
break
# 此处解析 JSON,取增量文本字段并追加到缓冲区
需要留意两点:一是增量片段可能在一个字符中间断开,中文和 emoji 尤其明显,前端要做缓冲拼接;二是流式返回时工具调用的参数也是分片到达的,必须等参数拼接完整再解析,否则 JSON 会解析失败。
五、常见问题与排查顺序
- 401 或 403:Key 无效、过期或权限不足,先确认请求头格式。
- 404:接口地址或路径错误,核对文档中给出的完整地址。
- 400 且提示模型相关:模型标识不被支持,或参数超出模型限制。
- 工具调用不触发:函数描述过于含糊,或提示词与工具职责冲突。
- 流式内容乱码:未按 UTF-8 解码,或跨片段的拼接方式有误。
排查时按“网络 → 鉴权 → 模型 → 工具 → 流式”的顺序逐层验证,每次只改一个变量,效率远高于同时调整多处配置。
六、跑通之后,再处理这些工程问题
首个请求成功后,再考虑超时重试、并发上限、日志脱敏和成本监控。多模型场景下,把接口地址、Key 与模型清单集中记录在一处,会让后续切换与排障成本明显下降。你也可以在 通联官网 查看当前的接入说明与可用模型,再决定哪些能力放进同一套网关。
最后提醒一句:本文所有配置项都应视为检查清单,而不是固定答案。模型名称、接口地址、可用能力与计费规则都可能随版本变化,动手前请先核对控制台页面上的实时信息,再开始写第一行代码。
准备把智能体接进真实业务时,建议先在一处把凭证、接口地址和模型标识确认清楚:注册账号、创建 API Key、核对控制台给出的 Base URL 与模型名称,再用本文的鉴权与流式示例跑通第一轮请求。