Spaces:
Runtime error
Runtime error
import json | |
import os | |
from typing import Dict, Generator, List | |
import requests | |
# Environment variables for backend URL and model name | |
BACKEND_HOST = os.getenv("BACKEND_HOST") | |
MODEL_NAME = os.getenv("MODEL_NAME") | |
API_KEY = os.getenv("API_KEY") | |
# Custom headers for the API request | |
HEADERS = { | |
"orionstar-api-key": API_KEY, | |
} | |
def chat_stream_generator( | |
messages: List[Dict[str, str]], endpoint: str, temperature: float = 0.7 | |
) -> Generator[str, None, None]: | |
"""Generator function to stream chat responses from the backend.""" | |
payload = { | |
"model": MODEL_NAME, | |
"stream": True, | |
"messages": messages, | |
"temperature": temperature, | |
} | |
try: | |
with requests.post( | |
BACKEND_HOST + endpoint, | |
json=payload, | |
headers=HEADERS, | |
timeout=60 * 10, | |
stream=True, | |
) as response: | |
if response.status_code != 200: | |
yield f"[model server error]. response text: {response.text}" | |
for line in response.iter_lines(decode_unicode=True): | |
if not line: | |
continue | |
if isinstance(line, bytes): | |
line = line.decode("utf-8") | |
line = line.replace("data: ", "") | |
if line == "[DONE]": | |
return | |
chunk = json.loads(line) | |
yield chunk["choices"][0]["delta"].get("content", "") | |
except Exception as e: | |
print(f"[chat_stream_generator] call model exception: {e}") | |
yield "[model server error]" | |
def chat( | |
messages: List[Dict[str, str]], endpoint: str, stop=None, temperature: float = 0.7 | |
) -> str: | |
"""Function to get a single chat response from the backend.""" | |
payload = {"model": MODEL_NAME, "messages": messages, "temperature": temperature} | |
if stop: | |
payload["stop"] = stop | |
try: | |
with requests.post( | |
BACKEND_HOST + endpoint, | |
json=payload, | |
headers=HEADERS, | |
timeout=60 * 10, | |
) as response: | |
if response.status_code != 200: | |
return f"[model server error]. response text: {response.text}" | |
model_response = response.json() | |
return model_response["choices"][0]["message"]["content"] | |
except Exception as e: | |
print(f"[chat] call model exception: {e}") | |
return "[model server error]" | |