Chat-bot / app.py
razaali313's picture
Rename gradio-bot.py to app.py
ef4cb8c verified
from langgraph.graph import StateGraph,START,END
from langchain_core.messages import HumanMessage,AIMessage,AnyMessage
from langgraph.graph.message import add_messages
from pydantic import BaseModel
from typing import Annotated,Optional,List,TypedDict
from dotenv import load_dotenv
import os
from IPython.display import display,Image,Markdown
from groq import Groq
import random
import gradio as gr
class State(TypedDict):
messages:Annotated[List[AnyMessage],add_messages]
llm=Groq(base_url="https://api.groq.com",api_key=os.getenv("GROQ_API_KEY"))
def chat(oldState:State):
# user_prompt=oldState['messages'][-1]
formatted_messages=[]
role=None
for message in oldState['messages']:
if isinstance(message,HumanMessage):
role="user"
else:
role="assistant"
formatted_messages.append({"role":role,"content":message.content})
formatted_messages.insert(0,{"role":"system","content":"You are a helpful assistant"})
response=llm.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=formatted_messages
)
ai=AIMessage(content=response.choices[0].message.content)
return {"messages":[ai]}
graph_builder=StateGraph(State)
graph_builder.add_node("chat",chat)
graph_builder.add_edge(START,"chat")
graph_builder.add_edge("chat",END)
graph=graph_builder.compile()
def gradio_chat(user_prompt,history):
messages = []
for human, bot in history:
messages.append(HumanMessage(content=human))
messages.append(AIMessage(content=bot))
messages.append(HumanMessage(content=user_prompt))
state = {"messages": messages}
result=graph.invoke(state)
reply=result["messages"][-1].content
return reply
app=gr.ChatInterface(
fn=gradio_chat,
title="Chat Bot, powered by Syed Muhammad Raza Ali Zaidi",
description="Chat with Llama 3.3"
)
app.launch()