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" | |
| ) | |