Skip to main content
Streamlit 是一种更快速地构建和分享数据应用的方式。 Streamlit 可在几分钟内将数据脚本转变为可分享的 Web 应用,完全使用纯 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:使用带工具的智能体

目前主要支持的使用场景是可视化带工具的智能体(或智能体执行器)的操作。你可以在 Streamlit 应用中创建智能体,只需将 StreamlitCallbackHandler 传递给 agent.run(),即可在应用中实时展示思考过程和操作。
import streamlit as st
from langchain_classic import hub
from langchain.agents import AgentExecutor, create_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_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 配合使用。未来将添加对其他智能体类型、直接与 Chain 配合使用等场景的支持。