import json import time class OpenaiStreamOutputer: def __init__(self): self.default_data = { "id": "chatcmpl-123", "object": "chat.completion", "created": None, # Will be set to current time in output "model": "gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices": [], "usage": { "prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0 } } def data_to_string(self, data): return json.dumps(data, indent=2) def output(self, content=None, role="assistant", prompt_tokens=0, completion_tokens=0): data = self.default_data.copy() # Set the current Unix timestamp data["created"] = int(time.time()) data["choices"] = [{ "index": 0, "message": { "role": role, "content": content, }, "logprobs": None, "finish_reason": "stop" }] # Update token usage data["usage"]["prompt_tokens"] = prompt_tokens data["usage"]["completion_tokens"] = completion_tokens data["usage"]["total_tokens"] = prompt_tokens + completion_tokens return self.data_to_string(data)