Skip to content

Commit

Permalink
fix: type issues in streamlit sample and add streamlit to dev depende…
Browse files Browse the repository at this point in the history
…ncies (#5309)
  • Loading branch information
ekzhu authored Jan 31, 2025
1 parent 7596856 commit 3cc9095
Show file tree
Hide file tree
Showing 4 changed files with 144 additions and 14 deletions.
1 change: 1 addition & 0 deletions python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ dev = [
"tomli",
"tomli-w",
"chainlit",
"streamlit",
]

[tool.uv]
Expand Down
13 changes: 6 additions & 7 deletions python/samples/agentchat_streamlit/agent.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import yaml

from autogen_core import CancellationToken
from autogen_agentchat.messages import TextMessage
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import AzureOpenAIChatCompletionClient
from autogen_agentchat.messages import TextMessage
from autogen_core import CancellationToken
from autogen_core.models import ChatCompletionClient


class Agent:
def __init__(self):
def __init__(self) -> None:
# Load the model client from config.
with open("model_config.yml", "r") as f:
model_config = yaml.safe_load(f)
model_client = AzureOpenAIChatCompletionClient.load_component(model_config)
model_client = ChatCompletionClient.load_component(model_config)
self.agent = AssistantAgent(
name="assistant",
model_client=model_client,
Expand All @@ -23,5 +22,5 @@ async def chat(self, prompt: str) -> str:
[TextMessage(content=prompt, source="user")],
CancellationToken(),
)

assert isinstance(response.chat_message.content, str)
return response.chat_message.content
15 changes: 8 additions & 7 deletions python/samples/agentchat_streamlit/main.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,35 @@
import asyncio

import streamlit as st
from agent import Agent


def main():
def main() -> None:
st.set_page_config(page_title="AI Chat Assistant", page_icon="🤖")
st.title("AI Chat Assistant 🤖")

# adding agent object to session state to persist across sessions
# stramlit reruns the script on every user interaction
if "agent" not in st.session_state:
st.session_state.agent = Agent()
st.session_state["agent"] = Agent()

# initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = []
st.session_state["messages"] = []

# displying chat history messages
for message in st.session_state.messages:
for message in st.session_state["messages"]:
with st.chat_message(message["role"]):
st.markdown(message["content"])

prompt = st.chat_input("Type a message...")
if prompt:
st.session_state.messages.append({"role": "user", "content": prompt})
st.session_state["messages"].append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)

response = asyncio.run(st.session_state.agent.chat(prompt))
st.session_state.messages.append({"role": "assistant", "content": response})
response = asyncio.run(st.session_state["agent"].chat(prompt))
st.session_state["messages"].append({"role": "assistant", "content": response})
with st.chat_message("assistant"):
st.markdown(response)

Expand Down
129 changes: 129 additions & 0 deletions python/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 3cc9095

Please sign in to comment.