Spaces:
Sleeping
Sleeping
| from dotenv import load_dotenv | |
| import streamlit as st | |
| from receptionist_agent import get_agent_response | |
| from langchain_core.messages import AIMessage, HumanMessage, ToolMessage, messages_to_dict | |
| import json | |
| from datetime import datetime | |
| import time | |
| from download import format_conversation_for_download | |
| #import langsmith | |
| load_dotenv() | |
| #langsmith.debug = True | |
| st.set_page_config(layout="wide") | |
| if "conversation" not in st.session_state: | |
| st.session_state.conversation = [AIMessage(content="Thanks for calling, this is Receptionist Agent! Can I help you schedule a service or would you like help with something else?")] | |
| start_time = datetime.now().strftime("%y%m%d-%H%M%S") | |
| st.session_state.conversation_file = f"conversations/conversation_{start_time}.json" | |
| def save_conversation(): | |
| with open(st.session_state.conversation_file, "w") as f: | |
| json.dump(messages_to_dict(st.session_state.conversation), f, indent=4) | |
| def submit_message(): | |
| message = st.session_state.message | |
| st.session_state.conversation.append(HumanMessage(content=message)) | |
| start = time.time() | |
| new_messages = get_agent_response(st.session_state.conversation) | |
| end = time.time() | |
| st.session_state.response_time = f"{end - start:.2f}" | |
| st.session_state.conversation.extend(new_messages) | |
| # save_conversation() | |
| st.subheader("Receptionist Agent") | |
| for message in st.session_state.conversation: | |
| if isinstance(message, HumanMessage): | |
| with st.chat_message("user"): | |
| st.write(message.content) | |
| elif isinstance(message, AIMessage): | |
| with st.chat_message("assistant"): | |
| if message.content: | |
| st.write(message.content) | |
| if message.tool_calls: | |
| for tool_call in message.tool_calls: | |
| st.write(f"Calling tool: `{tool_call['name']}` with args `{tool_call['args']}`") | |
| elif isinstance(message, ToolMessage): | |
| with st.chat_message("tool"): | |
| st.write(f"Tool `{message.tool_call_id}` output: `{message.content}`") | |
| if len(st.session_state.conversation) > 1: | |
| _, col2 = st.columns([0.75, 0.25]) | |
| with col2: | |
| st.download_button( | |
| label="Download Conversation", | |
| data=format_conversation_for_download(st.session_state.conversation), | |
| file_name=st.session_state.conversation_file.replace(".json", "_formatted.json"), | |
| mime="application/json", | |
| ) | |
| if "response_time" in st.session_state: | |
| st.caption(f"Response time: {st.session_state.response_time}s") | |
| st.chat_input("Type message here", on_submit=submit_message, key="message") | |