社区投稿

发布于 2026 年 07 月 10 日 星期五

大模型 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 官网了解详情。