from fastapi import FastAPI, Response, Cookie
from fastapi.responses import HTMLResponse
from pydantic import BaseModel, Field
import time
import os
value = os.environ.get('YOUR_ENV_KEY')
app = FastAPI()
Tokens = []
History = []
@app.get("/", response_class=HTMLResponse)
async def read_root(response: Response):
token = time.time()
Tokens.append(str(token))
History.append([{"role": "system", "content": "You are a helpful assistant, currently in developing phase. You will always respect the user and never generate inappropriate content."}])
response.set_cookie(key="token", value=token, httponly=True, samesite='strict') # Set cookie
return '''
Chatbot Assistant
Chat Assistant
'''
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="no-key-required")
class ChatRequest(BaseModel):
"""Request model for the chat endpoint."""
prompt: str
@app.post("/response")
async def handle_chat(chat_request: ChatRequest, token: str = Cookie(None)):
if token in Tokens:
i = Tokens.index(token)
History[i].append({"role": "user", "content": chat_request.prompt})
stream = client.chat.completions.create(
model="",
messages=History[i],
)
History[i].append({"role": "assistant", "content": chat_request.prompt})
return stream.choices[0].message.content
else: return 'Please stop. Just refresh the page.'
@app.post("/history")
async def history(chat_request: ChatRequest):
if chat_request.prompt == value:
time.sleep(30)
return History
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)