Streamlit
Streamlit is a faster way to build and share data apps. Streamlit turns data scripts into shareable web apps in minutes. All in pure Python. No front‑end experience required. See more examples at streamlit.io/generative-ai.
在本指南中,我们将演示如何使用 StreamlitCallbackHandler 在交互式 Streamlit 应用程序中显示代理的思维和行为。使用下面运行的应用程序尝试一下 MRKL 代理:
安装与设置
pip install langchain streamlit
你可以运行 streamlit hello 来加载一个示例应用程序并验证你的安装是否成功。有关完整说明,请参阅 Streamlit 的
入门文档。
显示想法和行动
要创建一个 StreamlitCallbackHandler,只需提供一个父容器来渲染输出。
from langchain_community.callbacks.streamlit import (
StreamlitCallbackHandler,
)
import streamlit as st
st_callback = StreamlitCallbackHandler(st.container())
有关自定义显示行为的其他关键字参数在 API 参考中进行了描述。
Scenario 1: 使用带有工具的代理
今天的主要支持用例是可视化带有工具(或代理执行器)的代理的动作。您可以在 Streamlit 应用中创建一个代理,并简单地传递 StreamlitCallbackHandler 到 agent.run(),以便在您的应用中实时可视化思维和动作。
import streamlit as st
from langchain import hub
from langchain.agents import AgentExecutor, create_react_agent, load_tools
from langchain_openai import OpenAI
llm = OpenAI(temperature=0, streaming=True)
tools = load_tools(["ddg-search"])
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
if prompt := st.chat_input():
st.chat_message("user").write(prompt)
with st.chat_message("assistant"):
st_callback = StreamlitCallbackHandler(st.container())
response = agent_executor.invoke(
{"input": prompt}, {"callbacks": [st_callback]}
)
st.write(response["output"])
注意: 为了让上述应用程序代码成功运行,您需要将 OPENAI_API_KEY 设置为环境变量。最简单的方法是通过 Streamlit secrets.toml 文件,或者使用任何其他本地 ENV 管理工具。
其他场景
目前 StreamlitCallbackHandler 专注于与 LangChain Agent Executor 的使用。未来将添加对其他代理类型的支持,直接用于 Chains 等功能。
您可能还对使用 StreamlitChatMessageHistory 用于 LangChain 感兴趣。