CricGuru / app.py
abhilashnl2006's picture
Update app.py
b1237e6 verified
import os
import gradio as gr
from fastapi import FastAPI
from groq import Groq
import logging
from pydantic import BaseModel
# Set up logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# Initialize Groq client
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
app = FastAPI()
class ChatInput(BaseModel):
user_input: str
history: list
@app.post("/chat")
async def chat_endpoint(chat_input: ChatInput):
try:
messages = [{"role": "system", "content": "You are a helpful assistant specializing in cricket."}]
for h in chat_input.history:
messages.append({"role": "user", "content": h[0]})
messages.append({"role": "assistant", "content": h[1]})
messages.append({"role": "user", "content": chat_input.user_input})
chat_completion = client.chat.completions.create(
messages=messages,
model="llama-3.1-70b-versatile",
max_tokens=1000,
temperature=0.7,
)
response = chat_completion.choices[0].message.content
return {"response": response}
except Exception as e:
logging.error(f"An error occurred in chat_endpoint: {str(e)}")
return {"error": f"An error occurred: {str(e)}"}
def chat_with_ai(user_input, history):
from fastapi.testclient import TestClient
client = TestClient(app)
response = client.post("/chat", json={"user_input": user_input, "history": history})
return response.json()["response"]
# Gradio Interface
demo = gr.ChatInterface(
fn=chat_with_ai,
title="Cricket Guru",
description="Ask me anything about cricket!",
examples=["Who won the last Cricket World Cup?", "Explain LBW rule"],
)
# Mount Gradio app to FastAPI
app = gr.mount_gradio_app(app, demo, path="/")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)