Skip to main content
Open on GitHub

Streamlit

Streamlit 是一种更快的构建和共享数据应用的方式。 Streamlit 可在几分钟内将数据脚本转化为可共享的网页应用。全部使用纯 Python 编写,无需前端开发经验。 更多示例请访问 streamlit.io/generative-ai

Open in GitHub Codespaces

在本指南中,我们将演示如何使用 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 参考中有所描述。

场景1:使用带有工具的Agent

目前主要支持的使用场景是可视化带有工具(或代理执行器)的代理(Agent)的操作。你可以在你的 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 Agent Executor 配合使用。对其他代理类型的支持、直接与 Chains 配合使用等功能将在未来添加。

您可能也会对在 LangChain 中使用 StreamlitChatMessageHistory 感兴趣。