在本教程中,我们将探讨如何使用Streamlit和LangChain构建一个智能代理应用。通过结合AI代理,我们可以创建一个不仅能够回答问题、搜索互联网,还能执行计算并有效可视化数据的应用程序。本指南将带您逐步创建一个工作流,该工作流集成了Python REPL工具和搜索功能,并结合了强大的LLM(Llama 3.3)。

注意: 该项目是Deepnote x Streamlit挑战赛的一部分,所有代码和应用程序均可在Deepnote工作空间中获取。
什么是智能代理应用?智能代理应用利用AI代理自主执行任务。这些代理可以:
在互联网上搜索信息。执行Python代码进行计算。动态可视化数据。维护对话记忆以实现无缝交互。通过结合这些功能,您可以构建出高度交互且能够处理复杂工作流的应用程序。
1. 在Deepnote中设置智能代理工作流要创建智能代理工作流,我们将使用以下工具:
Tavily搜索工具:用于网络搜索。Python REPL工具:用于执行Python代码。Llama 3.3 LLM:一种多功能语言模型,用于生成响应和管理工具。首先,访问Tavily和Groq网站以生成API密钥,并将其设置为环境变量。
接下来,设置搜索工具,将最大结果数设置为1,以提高工具的响应速度。
from langchain_community.tools.tavily_search import TavilySearchResultsfrom langchain.agents import Toolfrom langchain_experimental.utilities import PythonREPLsearch = TavilySearchResults(max_results=1)现在,设置Python解释器工具。
python_repl = PythonREPL()repl_tool = Tool( name="python_repl", description="Executes Python code and returns the result.", func=python_repl.run,)使用Groq API设置语言模型,并提供最新的Llama模型。
from langchain_groq import ChatGroqllm = ChatGroq( model="llama-3.3-70b-versatile", temperature=0.7, max_tokens=1024, max_retries=2,)创建聊天提示模板,帮助调用工具,并将这些工具组合起来创建代理执行器。
from langchain.agents import AgentExecutor, create_tool_calling_agentfrom langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholderprompt = ChatPromptTemplate.from_messages( [ ("system", "You are a helpful assistant"), ("human", "{input}"), MessagesPlaceholder("agent_scratchpad"), ])tools = [search, repl_tool]agent = create_tool_calling_agent(llm, tools, prompt)agent_executor = AgentExecutor(agent=agent, tools=tools)我们将为代理执行器提供一个输入提示,并以流的形式生成响应。
for step in agent_executor.stream( { "input": ( "Create a pie chart of the top 5 most used programming languages in 2025." ) }): if "output" in step: print(step["output"])结果,模型将搜索互联网并生成一个饼图,显示编程语言使用率的准确分布。
注意: Python REPL可以执行任意代码,请谨慎使用。
根据搜索结果,2025年最常用的5种编程语言是:
PythonJavaScriptJavaC++C#以下是显示这些语言分布的饼图:
+---------------------------------------+ | Python 38.4% | +---------------------------------------+ | JavaScript 24.1% | +---------------------------------------+ | Java 15.6% | +---------------------------------------+ | C++ 12.3% | +---------------------------------------+ | C# 9.6% | +---------------------------------------+注意: 百分比基于搜索结果,可能不反映这些语言在行业中的实际使用情况。
我们甚至可以使用单独的搜索工具来了解我们所在地区的当前天气。
for step in agent_executor.stream( ( { "input": ( "What is the temperature in Islamabad?" ) } ),): if "output" in step: print(step["output"])这是准确的,因为外面正在下雨。
伊斯兰堡的当前温度为59°F(15°C),多云。
2. 在Deepnote中构建和提供Streamlit Web应用程序Streamlit用于为智能代理应用创建交互式Web界面。在本节中,我们将结合前面部分的所有内容,创建一个Streamlit聊天机器人。该应用程序的代码可在“Autonomous Web | Deepnote”中获取。
该应用程序由以下组件组成:
工具集成:
搜索工具:使用Tavily进行网络搜索,结果限制为一个。Python REPL工具:允许执行Python代码并返回结果。LLM代理:
初始化基于Groq的LLM(Llama 3.3),温度为0.7,最大token限制为1024。该代理能够使用搜索和Python执行等工具。聊天历史记录和记忆:
维护聊天历史记录和会话状态,以实现持久对话。使用MemorySaver检查点并恢复对话状态。图形持久化:
保存并显示在对话期间生成的Matplotlib图形。图形存储在会话状态中,并与特定消息相关联。重置功能:
提供重置按钮,以清除聊天历史记录、图形和会话状态,开始新的对话。错误处理:
为失败的工具调用实现重试逻辑,并优雅地处理意外错误。UI功能:
显示带有相关图形的先前聊天历史记录。允许用户输入触发工具调用,并实时显示响应。包含一个带有文档链接的页脚。测试代码后,是时候部署您的应用程序了,以便您的团队中的每个人都可以访问它。点击“创建Streamlit应用”按钮,就这样!这将为您生成一个链接,您可以从任何地方体验您的Web应用程序。
3. 测试智能代理Web应用程序让我们用一个关于世界的问题来测试我们部署的应用程序。我们想了解顶级新闻故事,几秒钟内,它为我们提供了相关新闻更新。
接下来,我们将测试Python REPL,以帮助我们计算储蓄账户的利润。答案在不到一秒内生成。为了确认结果,我向ChatGPT提出了同样的问题。
ChatGPT也提供了相同的结果,但花费了更长的时间。这意味着我们的应用程序既快速又准确。
现在,让我们探索应用程序的历史记录和数据可视化功能,并要求它生成一个折线图。
最后,我们要求它查找互联网,以找到提供相同回报的最佳储蓄账户。
太棒了!该应用程序快速、准确,并在几秒钟内生成数据可视化。
结论通过结合LangChain和Streamlit,您可以构建出能够处理复杂工作流的强大智能代理应用程序。本教程展示了如何:
使用工具和LLM设置智能代理工作流。使用Streamlit构建交互式Web应用程序。测试和部署应用程序以供实际使用。该项目展示了AI代理在创建动态、用户友好应用程序方面的潜力。立即开始构建您自己的智能代理工作流吧!
