hfchat / app.py
tianlong12's picture
Update app.py
c8bf377 verified
raw
history blame
1.31 kB
from hugchat import hugchat
from hugchat.login import Login
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn
import os
# 从环境变量中读取登录信息
EMAIL = os.getenv("EMAIL")
PASSWD = os.getenv("PASSWD")
# 检查环境变量是否正确读取
if not EMAIL or not PASSWD:
raise Exception("EMAIL or PASSWD environment variables are not set")
cookie_path_dir = "./cookies/"
sign = Login(EMAIL, PASSWD)
try:
cookies = sign.login(cookie_dir_path=cookie_path_dir, save_cookies=True)
except Exception as e:
print(f"Login failed: {e}")
raise
# 创建 ChatBot
chatbot = hugchat.ChatBot(cookies=cookies.get_dict())
class RequestBody(BaseModel):
prompt: str
max_tokens: int
class Choice(BaseModel):
text: str
class CompletionResponse(BaseModel):
choices: list[Choice]
app = FastAPI()
@app.post("/v1/chat/completions", response_model=CompletionResponse)
async def completions(body: RequestBody):
try:
response = chatbot.chat(body.prompt, max_length=body.max_tokens).wait_until_done()
return CompletionResponse(choices=[Choice(text=response)])
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)