logo

流式输出

了解如何在应用中实现流式输出功能

1. Python 流式输出实现

1.1 基于 OpenAI 库的流式输出

在一般场景中,推荐使用 OpenAI 的库进行流式输出。以下是具体实现示例:

from openai import OpenAI

client = OpenAI(
    base_url='https://api.openapi.cn/v1',
    api_key='your-api-key'
)

# 发送带有流式输出的请求
response = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V2.5",
    messages=[
        {"role": "user", "content": "OpenAPI公测上线,每用户送3亿token 解锁开源大模型创新能力。对于整个大模型应用领域带来哪些改变?"}
    ],
    stream=True  # 启用流式输出
)

# 逐步接收并处理响应
for chunk in response:
    chunk_message = chunk.choices[0].delta.content
    print(chunk_message, end='', flush=True)

1.2 基于 Requests 库的流式输出

如果您需要在非 OpenAI 的场景下使用流式输出,可以基于 Requests 库实现。请注意:除了 payload 中的 stream 需要设置外,request 请求的参数也需要设置 stream=True,才能正常按照流式模式进行返回。

import requests
   
url = "https://api.openapi.cn/v1/chat/completions"
   
payload = {
    "model": "deepseek-ai/DeepSeek-V2.5", # 替换成你的模型
    "messages": [
        {
            "role": "user",
            "content": "OpenAPI公测上线,每用户送3亿token 解锁开源大模型创新能力。对于整个大模型应用领域带来哪些改变?"
        }
    ],
    "stream": True # 此处需要设置为stream模式
}

headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "authorization": "Bearer your-api-key"
}
   
response = requests.post(url, json=payload, headers=headers, stream=True) # 此处request需要指定stream模式

# 打印流式返回信息
if response.status_code == 200: 
    for chunk in response.iter_content(chunk_size=8192): 
        if chunk:
            decoded_chunk = chunk.decode('utf-8')
            print(decoded_chunk, end='')
else:
    print('Request failed with status code:', response.status_code)