Skip to main content

Streamlit

Streamlit 是构建和分享数据应用的更快方式。 Streamlit 将数据脚本转化为可分享的网页应用,仅需几分钟。全部使用纯 Python,无需前端经验。 更多示例请参见 streamlit.io/generative-ai

在 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 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 一起使用等功能将在未来添加。

您可能还对使用 StreamlitChatMessageHistory 进行 LangChain 的集成感兴趣。


此页面是否有帮助?


您还可以留下详细的反馈 在 GitHub 上