大模型API流式输出与Function Calling接入教程:OpenAI兼容接口实战
如何接入大模型API实现流式输出和函数调用?本文以OpenAI兼容接口为例,详解stream参数和Function Calling的代码实现,附Python示例。
什么是流式输出?为什么大模型API需要它?
流式输出(Streaming)是指大模型API在生成文本时,通过SSE(Server-Sent Events)协议逐段返回内容,而不是等待全部生成完毕后一次性返回。在聊天应用和长文本生成场景中,流式输出能显著减少用户等待时间,避免因长时间无响应导致的服务端超时问题。
目前主流国产大模型如DeepSeek、千问、豆包、Kimi等均支持流式输出,且接口格式与OpenAI兼容。开发者只需在请求中设置stream=True即可开启。
流式输出的代码实现
使用OpenAI兼容接口调用流式输出非常简单。以下是基于Python的示例:
from openai import OpenAI
client = OpenAI(
api_key='your-api-key',
base_url='https://api.bumo.cc/v1'
)
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='', flush=True)
代码核心逻辑:设置stream=True后,API会持续返回数据块(chunk),每个chunk包含部分生成内容,开发者需要在前端逐段拼接展示。这种生成一段就显示一段的体验,已成为AI聊天应用的标配。
Function Calling:让大模型调用外部工具
函数调用(Function Calling)是大模型API的另一项核心能力。它允许开发者定义一组函数(如查询天气、搜索数据库、调用内部API),大模型在对话中会自主判断是否需要调用某个函数,并返回结构化的调用参数。
典型使用场景包括:智能客服系统中调用订单查询接口、代码助手中调用代码执行引擎、AI Agent中串联多个API完成复杂任务。
在OpenAI兼容接口中,通过tools参数传入函数定义即可:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'description': '查询指定城市的天气',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': '城市名称'}
},
'required': ['city']
}
}
}]
response = client.chat.completions.create(
model='deepseek-chat',
messages=[{'role': 'user', 'content': '北京今天天气怎么样?'}],
tools=tools
)
大模型会判断需要调用get_weather函数,并在响应中返回参数city: 北京,开发者据此执行实际函数调用后将结果返回给模型,模型再生成最终自然语言回答。
接入建议与平台推荐
流式输出和Function Calling的代码实现本身不复杂,关键在于选择一个接口兼容性好、响应稳定的API服务平台。不墨 AI API提供完全兼容OpenAI接口标准的API服务,支持DeepSeek、千问、豆包、Kimi等主流国产大模型的流式输出与Function Calling。开发者无需修改现有OpenAI SDK代码,只需替换base_url和api_key即可完成接入,大幅降低迁移成本。
准备好了吗?前往 不墨 AI API 注册并获取API Key,参考本文的代码示例,快速实现流式输出和函数调用功能。
