40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import json
|
|
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
|
from fastapi.staticfiles import StaticFiles
|
|
from fastapi.responses import FileResponse
|
|
from flow import create_streaming_chat_flow
|
|
|
|
app = FastAPI()
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
|
|
@app.get("/")
|
|
async def get_chat_interface():
|
|
return FileResponse("static/index.html")
|
|
|
|
@app.websocket("/ws")
|
|
async def websocket_endpoint(websocket: WebSocket):
|
|
await websocket.accept()
|
|
|
|
# Initialize conversation history for this connection
|
|
shared_store = {
|
|
"websocket": websocket,
|
|
"conversation_history": []
|
|
}
|
|
|
|
try:
|
|
while True:
|
|
data = await websocket.receive_text()
|
|
message = json.loads(data)
|
|
|
|
# Update only the current message, keep conversation history
|
|
shared_store["user_message"] = message.get("content", "")
|
|
|
|
flow = create_streaming_chat_flow()
|
|
await flow.run_async(shared_store)
|
|
|
|
except WebSocketDisconnect:
|
|
pass
|
|
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
uvicorn.run(app, host="0.0.0.0", port=8000) |