异步调用openai接口,流式响应

服务端

import json
import uvicorn
from openai import AsyncOpenAI
from fastapi import FastAPI, Request,responses

client = AsyncOpenAI(
    api_key="",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
) 
MODEL = "glm-4-flash"
app = FastAPI()

@app.route("/stream")
async def stream_endpoint(request: Request):
    async def response_stream():
        completion = client.chat.completions.create(
            model=MODEL,
            messages=[
                {"role": "system", "content": "你是一个聪明且富有创造力的小说作家"},
                {"role": "user", "content": "请你作为童话故事大王,写一篇短篇童话故事。"}
            ],
            top_p=0.7,
            temperature=0.9,
            stream=True
        )
        partition = []
        async for chunk in await completion:
            partition.append(chunk.choices[0].delta.content)
            # 每次生成器产生数据时,发送到客户端
            # yield json.dumps(chunk.model_dump(), ensure_ascii=False) + "\n"
            yield ''.join(partition) + "\n"
 
    return responses.StreamingResponse(response_stream())

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

调用方法

import requests
with requests.get('http://localhost:8000/stream', stream=True) as r:
    for line in r.iter_lines():
        if line:
            decoded_line = line.decode('utf-8')
            print(decoded_line)
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值