Streamlit
Streamlit 是一种构建和共享数据应用更快的方式。 Streamlit 在几分钟内将数据脚本转化为可共享的 Web 应用。全部使用纯 Python。无需前端经验。在 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 参考:StreamlitCallbackHandler
有关自定义显示行为的附加关键字参数,请参阅 API 参考。
场景 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 或任何其他本地环境变量管理工具。
其他场景
目前,StreamlitCallbackHandler
主要用于 LangChain 代理执行器。将来会增加对其他代理类型、直接与链使用等的支持。
您可能还会对将 StreamlitChatMessageHistory 用于 LangChain 感兴趣。