xiaosuhu1986's picture
update to streamlit
c0d817f
raw
history blame
1.94 kB
import streamlit as st
from modules.data_class import DataState
from modules.tools import data_node
from modules.nodes import chatbot_with_tools, human_node, maybe_exit_human_node, maybe_route_to_tools
from langgraph.graph import StateGraph, START, END
from IPython.display import Image, display
from pprint import pprint
from typing import Literal
from langgraph.prebuilt import ToolNode
from collections.abc import Iterable
from IPython.display import display, clear_output
import sys
# Define the LangGraph chatbot
graph_builder = StateGraph(DataState)
# Add nodes
graph_builder.add_node("chatbot_healthassistant", chatbot_with_tools)
graph_builder.add_node("patient", human_node)
graph_builder.add_node("documenting", data_node)
# Define edges
graph_builder.add_conditional_edges("chatbot_healthassistant", maybe_route_to_tools)
graph_builder.add_conditional_edges("patient", maybe_exit_human_node)
graph_builder.add_edge("documenting", "chatbot_healthassistant")
graph_builder.add_edge(START, "chatbot_healthassistant")
# Compile the graph
graph_with_order_tools = graph_builder.compile()
# Streamlit UI
st.title("LangGraph Chatbot")
st.markdown("Chat with an AI-powered health assistant.")
# Initialize session state
if "messages" not in st.session_state:
st.session_state.messages = []
user_input = st.text_input("You:", key="input")
if st.button("Send"):
if user_input:
# Add user input to history
st.session_state.messages.append(("User", user_input))
# Run LangGraph chatbot
state = DataState(messages=st.session_state.messages, data={}, finished=False)
for output in graph_with_order_tools.stream(state):
response = output["messages"][-1] # Get the last chatbot response
st.session_state.messages.append(("Bot", response))
# Display chat history
for sender, message in st.session_state.messages:
st.write(f"**{sender}:** {message}")