SSEClient

import json
import time

import requests
from sseclient import SSEClient
from typing import Dict, Any, Callable

def stream_request() -> None:
    """
    模拟实现类似JavaScript中基于事件源的请求功能,发送POST请求并处理相关事件回调。
    """
    url = "https://api.deepseek.com/chat/completions"

    payLoad = {
        "messages": [
            {
                "content": "介绍你自己",
                "role": "system"
            },
            {
                "content": "Hi",
                "role": "user"
            }
        ],
        "model": "deepseek-chat",
        "frequency_penalty": 0,
        "max_tokens": 2048,
        "presence_penalty": 0,
        "response_format": {
            "type": "text"
        },
        "stop": None,
        "stream": True,
        "stream_options": None,
        "temperature": 1,
        "top_p": 1,
        "tools": None,
        "tool_choice": "none",
        "logprobs": False,
        "top_logprobs": None
    }
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': 'Bearer xxx'
    }
    time1=time.time()
    try:
        with requests.post(url, json=payLoad, headers=headers, stream=True) as response:
            if response.status_code!= 200:
                print(f"请求失败,状态码: {response.status_code},错误信息: {response.text}")
                return
            client = SSEClient(response)
            for msg in client.events():
                print("耗时:",time.time()-time1)
                try:
                    # 尝试解析消息内容里的JSON数据(假设消息里包含JSON数据)
                    data = json.loads(msg.data)
                    # print(data)
                except json.JSONDecodeError as json_err:
                    print(f"解析消息数据时出错: {json_err}")
    except requests.RequestException as req_err:
        print(f"请求过程出现错误: {req_err}")
    except Exception as e:
        print(f"发生其他未知错误: {e}")


stream_request()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值