import json class OpenaiStreamOutputer: """ Create chat completion - OpenAI API Documentation * https://platform.openai.com/docs/api-reference/chat/create """ def __init__(self, owned_by="huggingface", model="nous-mixtral-8x7b"): self.default_data = { "created": 1700000000, "id": f"chatcmpl-{owned_by}", "object": "chat.completion.chunk", # "content_type": "Completions", "model": model, "choices": [], } def data_to_string(self, data={}, content_type=""): data_str = f"{json.dumps(data)}" return data_str def output(self, content=None, content_type="Completions") -> str: data = self.default_data.copy() if content_type == "Role": data["choices"] = [ { "index": 0, "delta": {"role": "assistant"}, "finish_reason": None, } ] elif content_type in [ "Completions", "InternalSearchQuery", "InternalSearchResult", "SuggestedResponses", ]: if content_type in ["InternalSearchQuery", "InternalSearchResult"]: content += "\n" data["choices"] = [ { "index": 0, "delta": {"content": content}, "finish_reason": None, } ] elif content_type == "Finished": data["choices"] = [ { "index": 0, "delta": {}, "finish_reason": "stop", } ] else: data["choices"] = [ { "index": 0, "delta": {}, "finish_reason": None, } ] return self.data_to_string(data, content_type)