跳到主要内容
Open on GitHub

Streamlit

Streamlit 是一种更快构建和共享数据应用的方式。 Streamlit 在几分钟内将数据脚本转换为可共享的 Web 应用。全部使用纯 Python。无需前端经验。在 streamlit.io/generative-ai 查看更多示例。

Open in GitHub Codespaces

在本指南中,我们将演示如何使用 StreamlitCallbackHandler 在交互式 Streamlit 应用中显示 Agent 的思考和操作。使用 MRKL Agent 在下面的运行应用中试用它

安装和设置

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 参考的 API reference 中描述了用于自定义显示行为的其他关键字参数。

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

今天主要支持的用例是可视化带有工具的 Agent(或 Agent Executor)的操作。您可以在您的 Streamlit 应用中创建一个 Agent,只需将 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 或任何其他本地 ENV 管理工具来实现。

其他场景

目前 StreamlitCallbackHandler 旨在与 LangChain Agent Executor 一起使用。未来将添加对其他 Agent 类型以及直接与 Chains 一起使用的支持。

您可能还对使用 StreamlitChatMessageHistory for LangChain 感兴趣。


此页内容对您有帮助吗?