MetaGPT
1# -*- coding: utf-8 -*-
2# @Time : 2024/3/27 10:00
3# @Author : leiwu30
4# @File : stream_pipe.py
5# @Version : None
6# @Description : None
7
8import json
9import time
10from multiprocessing import Pipe
11
12
13class StreamPipe:
14parent_conn, child_conn = Pipe()
15finish: bool = False
16
17format_data = {
18"id": "chatcmpl-96bVnBOOyPFZZxEoTIGbdpFcVEnur",
19"object": "chat.completion.chunk",
20"created": 1711361191,
21"model": "gpt-3.5-turbo-0125",
22"system_fingerprint": "fp_3bc1b5746c",
23"choices": [
24{"index": 0, "delta": {"role": "assistant", "content": "content"}, "logprobs": None, "finish_reason": None}
25],
26}
27
28def set_message(self, msg):
29self.parent_conn.send(msg)
30
31def get_message(self, timeout: int = 3):
32if self.child_conn.poll(timeout):
33return self.child_conn.recv()
34else:
35return None
36
37def msg2stream(self, msg):
38self.format_data["created"] = int(time.time())
39self.format_data["choices"][0]["delta"]["content"] = msg
40return f"data: {json.dumps(self.format_data, ensure_ascii=False)}\n".encode("utf-8")
41