Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from pydantic import BaseModel | |
| from langchain_groq import ChatGroq | |
| from support_workflow import workflow | |
| from support_workflow import escalate_agent | |
| from langchain_core.messages import HumanMessage | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| app = FastAPI() | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*","null"], | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| allow_credentials=False | |
| ) | |
| class Request(BaseModel): | |
| question: str | |
| thread_id: str | |
| class FeedbackRequest(BaseModel): | |
| query: str | |
| solved: str | |
| def ask(request: Request): | |
| config = {"configurable":{"thread_id":request.thread_id}} | |
| output = workflow.invoke({ | |
| "query": request.question, | |
| "result": "", | |
| "solved": "no", | |
| "next_agent": "", | |
| "final_answer": "", | |
| "messages": [HumanMessage(content=request.question)] | |
| },config=config) | |
| return {"answer": output['result']} | |
| def feedback(request: FeedbackRequest): | |
| if request.solved == "no": | |
| # result = escalate_agent({}) | |
| return {"answer": "Connecting you to a human agent. Please wait..."} | |
| return {"answer": "Thank you for your feedback! Glad we could help."} | |
| llm = ChatGroq( | |
| model="llama-3.3-70b-versatile", | |
| api_key=os.getenv("GROQ_API_KEY") | |
| ) | |
| def human_agent(request: Request): | |
| prompt = f"""You are a human customer support agent named Alex. | |
| Be empathetic, professional, and helpful. | |
| Never reveal you are an AI. | |
| Only answer Related to actual customer support questions don't engage with unrelated questions. | |
| if you struggle to find answer just write i simple apology and say to we are looking into your problem and reach out shortly. | |
| Customer issue: {request.question}""" | |
| response = llm.invoke(prompt) | |
| return {"answer": response.content} | |
| from fastapi.responses import FileResponse | |
| def root(): | |
| return FileResponse("index.html") | |