大模型 API 流式输出与函数调用 Function Calling 实战教程
详解大模型 API 流式输出(Streaming)和函数调用(Function Calling)的实现原理与代码示例,帮你快速构建 AI Agent 应用。
什么是流式输出?
流式输出是指模型边生成边返回内容,而不是等全部生成完毕后一次性返回。在 OpenAI 兼容接口中,流式输出基于 SSE(Server-Sent Events)协议实现。模型每产生一段文本,就通过长连接推送给调用方。
流式输出的核心价值在于降低首字延迟(TTFT),用户不需要等待模型生成完整回复,而是逐字看到内容出现,体验更流畅。
流式输出的代码实现
使用 OpenAI SDK 开启流式输出非常简单,只需设置 stream=True:
response = client.chat.completions.create(
model='deepseek-chat',
messages=[{'role':'user','content':'你好'}],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content or '', end='')国内主流模型如 DeepSeek、通义千问、豆包等均支持流式输出,且接口格式与 OpenAI 一致。
什么是 Function Calling(函数调用)?
Function Calling 是让大模型能够调用外部函数的能力。开发者用 JSON 格式向模型描述可用函数,模型根据用户意图决定是否调用以及如何调用。模型本身不执行函数,而是返回函数名和参数,由你的代码执行后将结果回传给模型。
典型流程包括四步:定义函数、模型判断是否调用、你的代码执行函数、将结果返回模型生成最终回复。
Function Calling 代码示例
response = client.chat.completions.create(
model='deepseek-chat',
messages=[{'role':'user','content':'北京今天天气怎么样'}],
tools=[{
'type':'function',
'function':{
'name':'get_weather',
'description':'查询指定城市天气',
'parameters':{'type':'object','properties':{'city':{'type':'string'}}}
}
}]
)模型会返回一个 tool_calls 对象,包含函数名和参数,你解析后执行对应函数即可。
流式与函数调用的结合
在生产环境中,流式输出和函数调用往往需要结合使用。例如智能客服场景中,模型一边流式输出文本,一边判断是否需要调用查询订单的函数。需要注意的是,在流式模式下处理函数调用的逻辑会复杂一些,需要逐 chunk 解析 tool_calls 字段。
通过 不墨 AI API,你可以一站式获取支持流式输出和 Function Calling 的大模型 API 接口,兼容 OpenAI 格式,DeepSeek、千问、豆包等模型均可使用。按量计费,注册即用,快速构建你的 AI Agent 应用。
更多接入教程和代码示例,请访问 不墨 AI API 官网 查阅文档。
总结
流式输出提升用户体验,Function Calling 赋予模型调用外部工具的能力,二者结合是构建 AI Agent 的基础。选择兼容 OpenAI 接口的大模型 API 平台,可以让你专注于业务逻辑,而不用为接口适配操心。
