import json | |
class OpenaiStreamOutputer: | |
""" | |
Create chat completion - OpenAI API Documentation | |
* https://platform.openai.com/docs/api-reference/chat/create | |
""" | |
def __init__(self): | |
self.default_data = { | |
"created": 1700000000, | |
"id": "chatcmpl-hugginface", | |
"object": "chat.completion", | |
"model": "hugginface", | |
"system_fingerprint": "fp_44709d6fcb", | |
"choices": [], | |
"usage": { | |
"prompt_tokens": 0, | |
"completion_tokens": 0, | |
"total_tokens": 0 | |
} | |
} | |
def data_to_string(self, data={}): | |
data_str = f"{json.dumps(data)}" | |
return data_str | |
def output(self, content=None, role="assistant", content_type="Completions", tokens_info=None) -> str: | |
data = self.default_data.copy() | |
message = {"role": role, "content": content} | |
if tokens_info is None: | |
tokens_info = {"prompt_tokens": 9, "completion_tokens": 12, "total_tokens": 21} | |
data["choices"] = [ | |
{ | |
"index": 0, | |
"message": message, | |
"logprobs": None, | |
"finish_reason": "stop" if content_type == "Finished" else None | |
} | |
] | |
data["usage"] = tokens_info | |
return self.data_to_string(data) | |