构建您的第一个 AI 智能体的完整指南
AI智能体的应用场景日益广泛。然而,对于许多初学者来说,构建一个有效的AI智能体似乎是一项艰巨的任务。本文将为你提供一份详细的指南,帮助你轻松迈出构建第一个AI智能体的第一步,并揭示其背后的原理和技巧。
在构建我的第一个商业 AI 智能体三个月后,在客户端演示期间,一切都崩溃了。
本应是无缝的自主工作流程变成了一个反复的澄清请求和不一致的决定的尴尬循环。客户仍然保持礼貌,但显然很失望。
他们离开后,我花了几个小时分析失败,发现我从根本上误解了智能体架构——我构建了一个过于复杂的系统,决策边界很差,没有明确的推理路径。
那次失败改变了我的方法,并成为我解释这些系统的基础。一旦你理解了核心原则,构建有效的智能体就会变得异常简单。
AI 智能体简介
与仅响应提示的聊天机器人不同,智能体会主动并自行完成任务。它们是让某人回答您有关数据的问题与让某人实际为您分析数据之间的区别。
从模型到智能体
在智能体之前,我们将 AI 解决方案构建为独立的、互不关联的组件 — 一个模型用于理解文本,另一个模型用于生成代码,另一个模型用于处理图像。
这种碎片化的方法
迫使用户手动管理工作流程;导致在不同系统之间移动时上下文消失;需要为每个流程步骤构建自定义集成;
智能体改变了这种范式。
与处理孤立任务的传统模型不同,智能体管理各种功能,同时保持对整个任务的整体理解。
智能体不仅遵循指示,还会根据在此过程中学到的信息进行调整并做出有关后续步骤的明智决策,类似于我们人类的作方式。
智能体的核心优势
让我们通过查看特定任务来了解智能体的能力。
传统 AI 将其分为几个孤立的步骤 — 总结、提取关键术语、对内容进行分类和生成见解 — 每个步骤都需要明确的人工协调。
限制不仅在于模型孤立工作,还在于您必须手动对整个过程进行排序,显式管理步骤之间的知识传递,并根据中间结果独立确定需要哪些其他作。
相比之下**,基于智能体的方法可以自主执行每个步骤,而不会失去更广泛目标的一面**。
智能体智能的构建块
AI 智能体基于三个基本原则:
状态管理:智能体的工作记忆跟踪上下文,了解它所学到的内容和旨在完成的任务;决策:智能体根据当前知识确定哪种方法有意义;工具使用:智能体知道哪个工具解决了每个特定问题;
使用 LangGraph 构建 AI 智能体
现在您已经了解了什么是 AI 智能体以及它们为什么重要,让我们使用 LangGraph(LangChain 用于构建强大的 AI 智能体的框架)构建一个智能体。
我真正喜欢 LangGraph 的地方在于,它可以让您将智能体的思维和行动映射为图表。每个节点代表一种能力(如搜索 Web 或编写代码),节点(边缘)之间的连接控制信息流。
当我开始构建智能体时,这种方法对我来说很有意义,因为我实际上可以可视化我的智能体思维过程。
您的第一个智能体:Medium Articles Analyzer
让我们看看如何使用 LangGraph 创建文本分析智能体。
该智能体将阅读文章,弄清楚它们的内容,提取重要元素,并提供干净的摘要——本质上是您的私人研究助理。
设置环境
首先,您需要设置您的开发环境。
第 1 步 — 创建项目目录:
mkdir ai_agent_project cd ai_agent_project
第 2 步 — 创建并激活虚拟环境:
On Windows
python -m venv agent_env agent_env\Scripts\activate
On macOS/Linux
python3 -m venv agent_env source agent_env/bin/activate
第 3 步 — 安装必要的软件包:
pip install langgraph langchain langchain-openai python-dotenv
第 4 步 — 设置您的 OpenAI API:
我使用 GPT-4o mini 作为我们智能体的大脑,但您可以将其交换为您喜欢的任何LLM。如果您没有 API 密钥:
第 5 步 — 创建一个 .env 文件
On Windows
echo OPENAI_API_KEY=your-api-key-here > .env
On macOS/Linux
echo “OPENAI_API_KEY=your-api-key-here” > .env
将 ‘your-api-key-here’ 替换为您的 OpenAI API 密钥。
第 6 步 – 创建名为test_setup.py的测试文件
python
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
Load environment variables
load_dotenv
Initialize the ChatOpenAI instance
llm = ChatOpenAI(model=”gpt-4o-mini”)
Test the setup
response = llm.invoke(“Hello! Are you working?”) print(response.content)
第 7 步 — 运行测试:
python test_setup.py
如果您收到回复,恭喜,您的环境已准备好构建智能体!
创建我们的第一个智能体
我们的智能体需要内存来跟踪它的进度,我们可以使用 TypedDict 创建它:
The original question or task
class State(TypedDict): text:
Tracks the agent’s thinking and decisions
str classification:
Stores intermediate results from tools
str entities: List summary: str
这种结构让我们的智能体记住您的请求、跟踪其推理、存储工具数据并准备最终答案。使用TypeDict提供类型安全,如果我们存储的数据类型不正确,它会发出警告,从而简化调试。
现在我们的智能体有了内存,让我们给它一些思考能力吧!
llm = ChatOpenAI(model=”gpt-4o-mini”, temperature=0)
设置 Temperature=0 可确保我们的智能体始终选择最可能的响应 — 这对于遵循特定推理模式的智能体至关重要。作为复习,温度充当 “创造力旋钮” LLMs:
温度 = 0:聚焦的确定性响应
温度=1:更多种类、更有创意的输出
温度=2:狂野的、有时不连贯的想法
如果您的智能体做出奇怪的决定,请先检查您的温度设置!
添加智能体的功能
现在,我们将为智能体构建专门的工具,每个工具处理特定的任务类型。
一、我们的分类能力:
def
summarize_node
(state):
Create a template for the summarization prompt
This tells the model to summarize the input text in one sentence
summarization_prompt = PromptTemplate.from_template(
“””Summarize the following text in one short sentence.
Text: {input}
Summary:”””
)
Create a chain by connecting the prompt template to the language model
The “|” operator pipes the output of the prompt into the model
chain = summarization_prompt | llm
Execute the chain with the input text from the state dictionary
This passes the text to be summarized to the model
response = chain.invoke({“input”: state[“input”]})
Return a dictionary with the summary extracted from the model’s response
This will be merged into the agent’s state
return {“summary”: response.content}
此功能将文档提炼为其要点的简明摘要。
这些技能结合起来,使我们的智能体能够理解内容类型、识别关键信息并创建易于理解的摘要 — 每个函数都遵循相同的模式,即获取当前状态、处理当前状态并将有用信息返回给下一个函数。
完成智能体结构
现在,我们将这些功能连接到一个协调的工作流中:
workflow = StateGraph(State)
Add nodes to the graph
workflow.add_node(“classification_node”, classification_node)
workflow.add_node(“entity_extraction”, entity_extraction_node)
workflow.add_node(“summarization”, summarization_node)
Add edges to the graph
workflow.set_entry_point(“classification_node”) # Set the entry point of the graph
workflow.add_edge(“classification_node”, “entity_extraction”)
workflow.add_edge(“entity_extraction”, “summarization”)
workflow.add_edge(“summarization”, END)
Compile the graph
app = workflow.compile
您已经构建了一个智能体,该智能体按协调的顺序从分类到实体提取再到摘要,使其能够理解文本类型、识别重要实体、创建摘要,然后完成该过程。
智能体在行动
现在,让我们使用示例文本测试我们的智能体:
Define a sample text about Anthropic’s MCP to test our agent
sample_text = “””
Anthropic’s MCP (Model Context Protocol) is an open-source powerhouse that lets your applications interact effortlessly with APIs across various systems.
“””
Create the initial state with our sample text
state_input = {“text”: sample_text}
Run the agent’s full workflow on our sample text
result = app.invoke(state_input)
Print each component of the result:
– The classification category (News, Blog, Research, or Other)
print(“Classification:”, result[“classification”])
– The extracted entities (People, Organizations, Locations)
print(“\nEntities:”, result[“entities”])
– The generated summary of the text
print(“\nSummary:”, result[“summary”])
运行此代码会通过每个功能处理文本:
实体:[‘Anthropic’, ‘MCP’, ‘Model Context Protocol’]
简介: Anthropic 的 MCP 是一种开源协议,支持与各种 API 系统进行无缝应用程序交互。
令人印象深刻的不仅仅是最终结果,还有每个阶段如何建立在前一个阶段之上。这反映了我们自己的阅读过程:我们首先确定内容类型,然后确定重要的名称和概念,最后创建连接所有内容的心理总结。
这种智能体构建方法远远超出了我们的技术示例。您可以将类似的设置用于:
个人发展文章 — 对增长领域进行分类,提取可作的建议,并总结关键见解;初创公司创始人的故事 — 了解商业模式、融资模式和增长战略;产品评论 — 识别功能、品牌和建议;
AI 智能体的局限性
我们的智能体在我们设计的节点和连接的刚性框架内工作。
这种可预测的限制了它的适应性。与人类不同,智能体遵循固定的路径,在面对意外情况时无法调整。
上下文理解是另一个限制。这个智能体可以处理文本,但缺乏人类自然掌握的更广泛的知识和文化细微差别。智能体在提供的文本范围内运作,尽管添加互联网搜索可以帮助补充其知识。
黑匣子问题也存在于智能体系统中。我们看到输入和输出,但看不到内部决策。像 GPT-o1 或 DeepSeek R1 这样的推理模型通过展示它们的思维过程来提供更高的透明度,尽管我们仍然无法完全控制内部发生的事情。
最后,这些系统并非完全自主,需要人工监督,尤其是在验证输出和确保准确性方面。与任何其他 AI 系统一样,将 AI 功能与人工监督相结合,可以获得最佳结果。
了解这些限制有助于我们构建更好的系统,并确切地知道何时需要人类介入。将 AI 功能与人类专业知识相结合,可以获得最佳结果。
本文由 @来学习一下 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务
页:
[1]