Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| import warnings | |
| from langchain.agents import initialize_agent, AgentType | |
| from chat_agent import llm, order_query_tool, answer_tool | |
| from langchain_core.messages import SystemMessage, HumanMessage, AIMessage | |
| warnings.filterwarnings("ignore") | |
| st.title("๐ FoodDelivery Chat Bot Agent....") | |
| # 1. Initialize variables ONLY if they don't exist | |
| if "chat_history" not in st.session_state: | |
| st.session_state.chat_history = [] | |
| if "agent" not in st.session_state: | |
| tools = [order_query_tool, answer_tool] | |
| st.session_state.agent = initialize_agent( | |
| tools=tools, | |
| llm=llm, | |
| agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, | |
| verbose=True, # Set to True for debugging | |
| handle_parsing_errors=True | |
| ) | |
| # 2. Display existing history | |
| for message in st.session_state.chat_history: | |
| if isinstance(message, HumanMessage): | |
| st.chat_message("user").write(message.content) | |
| elif isinstance(message, AIMessage): | |
| st.chat_message("assistant").write(message.content) | |
| cust_id = 'C1014' | |
| # 3. Chat Logic | |
| if prompt := st.chat_input("Ask your query here...."): | |
| # Pre-process the prompt | |
| full_prompt = f"{prompt} where cust_id is {cust_id}" | |
| # Display the user message immediately | |
| st.chat_message("user").write(prompt) | |
| with st.spinner("Searching..."): | |
| try: | |
| # LangChain Agent call | |
| response = st.session_state.agent.invoke({ | |
| "input": full_prompt, | |
| "chat_history": st.session_state.chat_history | |
| }) | |
| answer = response["output"] | |
| # 4. Update Chat History properly | |
| st.session_state.chat_history.append(HumanMessage(content=full_prompt)) | |
| st.session_state.chat_history.append(AIMessage(content=answer)) | |
| # Display Assistant response | |
| st.chat_message("assistant").write(answer) | |
| except Exception as e: | |
| st.error(f"An error occurred: {e}") | |