大模型 API 接入教程:流式输出、Function Calling 与限流并发的最佳实践
讲解大模型 API 接入中的流式输出 SSE、函数调用 Function Calling 和限流并发处理,帮你构建稳定可靠的 AI 应用。
流式输出(Streaming):让 AI 逐字返回
大模型生成内容需要时间,如果等整段回复生成完毕再返回,用户体验会非常差。流式输出通过 SSE(Server-Sent Events)协议,让模型每生成一个 Token 就立即推送给客户端,实现打字机效果。
在 OpenAI 兼容接口中,开启流式只需设置 stream=True:
stream = client.chat.completions.create(
model='deepseek-chat',
messages=[{'role':'user','content':'写一首诗'}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='')流式输出的首字节延迟通常在 100ms 以内,用户几乎感觉不到等待。对于 ChatBot、AI 写作等交互场景,流式输出已成为标配。
Function Calling:让大模型调用外部工具
Function Calling(函数调用)让大模型不只是生成文本,还能根据用户意图自动选择并调用预设的外部函数。比如查天气、搜索数据库、调用业务 API 等。
使用方式是先定义工具函数的 JSON Schema,然后在请求中传入 tools 参数:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'description': '查询城市天气',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': '城市名'}
},
'required': ['city']
}
}
}]
resp = client.chat.completions.create(
model='deepseek-chat',
messages=[{'role':'user','content':'北京今天天气怎么样?'}],
tools=tools
)模型会返回一个 tool_calls,包含函数名和参数,你的代码负责实际执行函数并将结果返回给模型,模型再基于结果生成最终回复。需要注意的是,函数定义会占用 Token,建议控制函数数量和描述长度。
限流与并发:避免 429 错误
大模型 API 普遍采用 RPM(每分钟请求数)和 TPM(每分钟 Token 数)双重限流。超过限制会返回 429 错误,导致请求失败。
应对限流的核心策略:
- 指数退避重试:遇到 429 时,等待时间按指数增长后重试,避免雪崩。
- 合理设置 max_tokens:max_tokens 值会预占 TPM 配额,设太大浪费配额。
- 请求批处理:多个小任务合并成一次请求,减少 RPM 消耗。
- 多模型降级:主模型限流时自动切换到备用模型。
对于生产环境,建议在服务端做流量整形:预估输入 Token、RPM 与 TPM 双重准入、并发锁控制、平滑发送间隔,形成完整的限流防护链路。
选择稳定的 API 服务
以上三个技术点——流式输出、Function Calling、限流处理——都需要 API 服务本身具备良好的稳定性和兼容性。不墨 AI API 提供 OpenAI 兼容接口,完整支持流式输出和 Function Calling,支持 DeepSeek、千问、豆包、Kimi 等主流国产大模型,按量计费、多模型聚合,适合从原型验证到生产部署的各个阶段。
接入只需三步:注册账号获取 Key、替换 Base URL、选择模型名称即可开始调用。如果你的 AI 应用对API 稳定性有较高要求,不妨前往 不墨 AI API 官网了解详情。
