Spaces:
Runtime error
Runtime error
from fastapi import FastAPI | |
from pydantic import BaseModel | |
from fastapi.middleware.cors import CORSMiddleware | |
from fastapi.responses import StreamingResponse | |
from hugchat import hugchat | |
from hugchat.login import Login | |
import asyncio | |
import os | |
from dotenv import load_dotenv | |
# Load environment variables from .env file | |
load_dotenv() | |
# Read credentials from environment variables | |
EMAIL = os.getenv("EMAIL") | |
PASSWD = os.getenv("PASSWD") | |
cookies = sign.login(cookie_dir_path="cookies", save_cookies=True) | |
# Cookie storage | |
cookie_path_dir = "./cookies/" | |
os.makedirs(cookie_path_dir, exist_ok=True) | |
# HugChat login | |
sign = Login(EMAIL, PASSWD) | |
cookies = sign.login(cookie_dir_path=cookie_path_dir, save_cookies=True) | |
# Create chatbot instance | |
chatbot = hugchat.ChatBot(cookies=cookies.get_dict()) | |
# Optional: Use assistant ID | |
ASSISTANT_ID = "66017fca58d60bd7d5c5c26c" # Replace if needed | |
chatbot.new_conversation(assistant=ASSISTANT_ID, switch_to=True) | |
# FastAPI setup | |
app = FastAPI() | |
# Enable CORS | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Request model | |
class Question(BaseModel): | |
question: str | |
# Token stream function | |
async def generate_response_stream(prompt: str): | |
for chunk in chatbot.chat(prompt, stream=True): | |
token = chunk.get("token", "") | |
if token: | |
yield token | |
await asyncio.sleep(0.02) | |
# Endpoint | |
async def ask(question: Question): | |
return StreamingResponse( | |
generate_response_stream(question.question), | |
media_type="text/plain" | |
) | |