Spaces:
Sleeping
Sleeping
| 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.chunk", | |
| # "content_type": "Completions", | |
| "model": "hugginface", | |
| "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) | |