Skip to main content
Open on GitHub

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 感兴趣。


这个页面有帮助吗?