File size: 2,711 Bytes
cd55ee8 11ff83b 4815889 cd55ee8 28b14ff 11ff83b cd55ee8 1d80ba8 cd55ee8 4815889 cd55ee8 4815889 40fce64 4815889 cd55ee8 11ff83b cd55ee8 28b14ff 11ff83b cd55ee8 b34ee0a cd55ee8 28b14ff cd55ee8 28b14ff cd55ee8 28b14ff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# app.py
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
from bot_instance import gemini_bot, llama_bot # singleton ErrorBot instance
from typing import List, Optional,Any
import os
from dotenv import load_dotenv
from util import ErrorBot
app = FastAPI(title="ErrorBot API")
# ✅ Allow all origins (adjust in production)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ---------------- Request Models ----------------
class MessageItem(BaseModel):
role: str # "user" or "bot"
content: str
class ChatRequest(BaseModel):
message: str
history: Optional[List[MessageItem]] = [] # optional conversation history
lastContext: List[Any] = None
# ---------------- Endpoints ----------------
@app.get("/")
def root():
return {"status": "ok"}
# @app.post("/chat")
# def chat(request: ChatRequest):
# """
# Main chat endpoint:
# - Accepts a message and optional conversation history
# - Uses ErrorBot with RAG + LLM
# """
# history_list = [
# {"role": msg.role, "content": msg.content} for msg in request.history
# ]
# # Ask bot with history
# answer = bot.ask(request.message, history=history_list)
# return {"reply": answer}
load_dotenv()
GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
EMBEDDING_MODEL = "BAAI/bge-base-en-v1.5"
@app.post("/gemini/chat")
def gemini_chat(request: ChatRequest):
history_list = [{"role": msg.role, "content": msg.content} for msg in request.history]
gemini_bot = ErrorBot(
embedding_model_name=EMBEDDING_MODEL,
llm_model_name="gemini-2.5-flash",
google_api_key=GOOGLE_API_KEY,
llm_provider="gemini",
last_context = request.lastContext
)
print("In App.py")
print(request.lastContext)
answer, last_context = gemini_bot.ask(request.message, history=history_list)
print(answer)
print(last_context)
return {"reply": answer, "last_context": last_context}
@app.post("/llama/chat")
def llama_chat(request: ChatRequest):
history_list = [{"role": msg.role, "content": msg.content} for msg in request.history]
llama_bot = ErrorBot(
embedding_model_name=EMBEDDING_MODEL,
llm_model_name="llama-3.3-70b-versatile",
groq_api_key=GROQ_API_KEY,
llm_provider="groq",
last_context = request.lastContext
)
answer, last_context = llama_bot.ask(request.message, history=history_list)
print(answer)
print(last_context)
return {"reply": answer, "last_context": last_context} |