社区投稿

发布于 2026 年 08 月 04 日 星期二

大模型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,参考本文的代码示例,快速实现流式输出和函数调用功能。