構(gòu)建您的第一個 AI 智能體的完整指南(比您想象的要容易)
AI智能體的應(yīng)用場景日益廣泛。然而,對于許多初學者來說,構(gòu)建一個有效的AI智能體似乎是一項艱巨的任務(wù)。本文將為你提供一份詳細的指南,幫助你輕松邁出構(gòu)建第一個AI智能體的第一步,并揭示其背后的原理和技巧。
在構(gòu)建我的第一個商業(yè) AI 智能體三個月后,在客戶端演示期間,一切都崩潰了。
本應(yīng)是無縫的自主工作流程變成了一個反復的澄清請求和不一致的決定的尷尬循環(huán)??蛻羧匀槐3侄Y貌,但顯然很失望。
他們離開后,我花了幾個小時分析失敗,發(fā)現(xiàn)我從根本上誤解了智能體架構(gòu)——我構(gòu)建了一個過于復雜的系統(tǒng),決策邊界很差,沒有明確的推理路徑。
那次失敗改變了我的方法,并成為我解釋這些系統(tǒng)的基礎(chǔ)。一旦你理解了核心原則,構(gòu)建有效的智能體就會變得異常簡單。
AI 智能體簡介
與僅響應(yīng)提示的聊天機器人不同,智能體會主動并自行完成任務(wù)。它們是讓某人回答您有關(guān)數(shù)據(jù)的問題與讓某人實際為您分析數(shù)據(jù)之間的區(qū)別。
從模型到智能體
在智能體之前,我們將 AI 解決方案構(gòu)建為獨立的、互不關(guān)聯(lián)的組件 — 一個模型用于理解文本,另一個模型用于生成代碼,另一個模型用于處理圖像。
這種碎片化的方法
- 迫使用戶手動管理工作流程;
- 導致在不同系統(tǒng)之間移動時上下文消失;
- 需要為每個流程步驟構(gòu)建自定義集成;
智能體改變了這種范式。
與處理孤立任務(wù)的傳統(tǒng)模型不同,智能體管理各種功能,同時保持對整個任務(wù)的整體理解。
智能體不僅遵循指示,還會根據(jù)在此過程中學到的信息進行調(diào)整并做出有關(guān)后續(xù)步驟的明智決策,類似于我們?nèi)祟惖淖鞣绞健?/p>
智能體的核心優(yōu)勢
讓我們通過查看特定任務(wù)來了解智能體的能力。
傳統(tǒng) AI 將其分為幾個孤立的步驟 — 總結(jié)、提取關(guān)鍵術(shù)語、對內(nèi)容進行分類和生成見解 — 每個步驟都需要明確的人工協(xié)調(diào)。
限制不僅在于模型孤立工作,還在于您必須手動對整個過程進行排序,顯式管理步驟之間的知識傳遞,并根據(jù)中間結(jié)果獨立確定需要哪些其他作。
相比之下**,基于智能體的方法可以自主執(zhí)行每個步驟,而不會失去更廣泛目標的一面**。
智能體智能的構(gòu)建塊
AI 智能體基于三個基本原則:
- 狀態(tài)管理:智能體的工作記憶跟蹤上下文,了解它所學到的內(nèi)容和旨在完成的任務(wù);
- 決策:智能體根據(jù)當前知識確定哪種方法有意義;
- 工具使用:智能體知道哪個工具解決了每個特定問題;
使用 LangGraph 構(gòu)建 AI 智能體
現(xiàn)在您已經(jīng)了解了什么是 AI 智能體以及它們?yōu)槭裁粗匾屛覀兪褂?LangGraph(LangChain 用于構(gòu)建強大的 AI 智能體的框架)構(gòu)建一個智能體。
我真正喜歡 LangGraph 的地方在于,它可以讓您將智能體的思維和行動映射為圖表。每個節(jié)點代表一種能力(如搜索 Web 或編寫代碼),節(jié)點(邊緣)之間的連接控制信息流。
當我開始構(gòu)建智能體時,這種方法對我來說很有意義,因為我實際上可以可視化我的智能體思維過程。
您的第一個智能體:Medium Articles Analyzer
讓我們看看如何使用 LangGraph 創(chuàng)建文本分析智能體。
該智能體將閱讀文章,弄清楚它們的內(nèi)容,提取重要元素,并提供干凈的摘要——本質(zhì)上是您的私人研究助理。
設(shè)置環(huán)境
首先,您需要設(shè)置您的開發(fā)環(huán)境。
第 1 步 — 創(chuàng)建項目目錄:
mkdir ai_agent_project cd ai_agent_project
第 2 步 — 創(chuàng)建并激活虛擬環(huán)境:
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 步 — 設(shè)置您的 OpenAI API:
我使用 GPT-4o mini 作為我們智能體的大腦,但您可以將其交換為您喜歡的任何LLM。如果您沒有 API 密鑰:
- 使用 OpenAI 創(chuàng)建帳戶
- 導航到 API 密鑰部分
- 點擊 “Create new secret key”
- 復制您的 API 密鑰
第 5 步 — 創(chuàng)建一個 .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 步 – 創(chuàng)建名為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
如果您收到回復,恭喜,您的環(huán)境已準備好構(gòu)建智能體!
創(chuàng)建我們的第一個智能體
我們的智能體需要內(nèi)存來跟蹤它的進度,我們可以使用 TypedDict 創(chuàng)建它:
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[str] summary: str
這種結(jié)構(gòu)讓我們的智能體記住您的請求、跟蹤其推理、存儲工具數(shù)據(jù)并準備最終答案。使用TypeDict提供類型安全,如果我們存儲的數(shù)據(jù)類型不正確,它會發(fā)出警告,從而簡化調(diào)試。
現(xiàn)在我們的智能體有了內(nèi)存,讓我們給它一些思考能力吧!
llm = ChatOpenAI(model=”gpt-4o-mini”, temperature=0)
設(shè)置 Temperature=0 可確保我們的智能體始終選擇最可能的響應(yīng) — 這對于遵循特定推理模式的智能體至關(guān)重要。作為復習,溫度充當 “創(chuàng)造力旋鈕” LLMs:
溫度 = 0:聚焦的確定性響應(yīng)
溫度=1:更多種類、更有創(chuàng)意的輸出
溫度=2:狂野的、有時不連貫的想法
如果您的智能體做出奇怪的決定,請先檢查您的溫度設(shè)置!
添加智能體的功能
現(xiàn)在,我們將為智能體構(gòu)建專門的工具,每個工具處理特定的任務(wù)類型。
一、我們的分類能力:
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}
此功能將文檔提煉為其要點的簡明摘要。
這些技能結(jié)合起來,使我們的智能體能夠理解內(nèi)容類型、識別關(guān)鍵信息并創(chuàng)建易于理解的摘要 — 每個函數(shù)都遵循相同的模式,即獲取當前狀態(tài)、處理當前狀態(tài)并將有用信息返回給下一個函數(shù)。
完成智能體結(jié)構(gòu)
現(xiàn)在,我們將這些功能連接到一個協(xié)調(diào)的工作流中:
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()
您已經(jīng)構(gòu)建了一個智能體,該智能體按協(xié)調(diào)的順序從分類到實體提取再到摘要,使其能夠理解文本類型、識別重要實體、創(chuàng)建摘要,然后完成該過程。
智能體在行動
現(xiàn)在,讓我們使用示例文本測試我們的智能體:
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”])
運行此代碼會通過每個功能處理文本:
分類: 技術(shù)
實體:[‘Anthropic’, ‘MCP’, ‘Model Context Protocol’]
簡介: Anthropic 的 MCP 是一種開源協(xié)議,支持與各種 API 系統(tǒng)進行無縫應(yīng)用程序交互。
令人印象深刻的不僅僅是最終結(jié)果,還有每個階段如何建立在前一個階段之上。這反映了我們自己的閱讀過程:我們首先確定內(nèi)容類型,然后確定重要的名稱和概念,最后創(chuàng)建連接所有內(nèi)容的心理總結(jié)。
這種智能體構(gòu)建方法遠遠超出了我們的技術(shù)示例。您可以將類似的設(shè)置用于:
- 個人發(fā)展文章 — 對增長領(lǐng)域進行分類,提取可作的建議,并總結(jié)關(guān)鍵見解;
- 初創(chuàng)公司創(chuàng)始人的故事 — 了解商業(yè)模式、融資模式和增長戰(zhàn)略;
- 產(chǎn)品評論 — 識別功能、品牌和建議;
AI 智能體的局限性
我們的智能體在我們設(shè)計的節(jié)點和連接的剛性框架內(nèi)工作。
這種可預(yù)測的限制了它的適應(yīng)性。與人類不同,智能體遵循固定的路徑,在面對意外情況時無法調(diào)整。
上下文理解是另一個限制。這個智能體可以處理文本,但缺乏人類自然掌握的更廣泛的知識和文化細微差別。智能體在提供的文本范圍內(nèi)運作,盡管添加互聯(lián)網(wǎng)搜索可以幫助補充其知識。
黑匣子問題也存在于智能體系統(tǒng)中。我們看到輸入和輸出,但看不到內(nèi)部決策。像 GPT-o1 或 DeepSeek R1 這樣的推理模型通過展示它們的思維過程來提供更高的透明度,盡管我們?nèi)匀粺o法完全控制內(nèi)部發(fā)生的事情。
最后,這些系統(tǒng)并非完全自主,需要人工監(jiān)督,尤其是在驗證輸出和確保準確性方面。與任何其他 AI 系統(tǒng)一樣,將 AI 功能與人工監(jiān)督相結(jié)合,可以獲得最佳結(jié)果。
了解這些限制有助于我們構(gòu)建更好的系統(tǒng),并確切地知道何時需要人類介入。將 AI 功能與人類專業(yè)知識相結(jié)合,可以獲得最佳結(jié)果。
本文由 @來學習一下 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)
- 目前還沒評論,等你發(fā)揮!