構(gòu)建您的第一個 AI 智能體的完整指南(比您想象的要容易)

手把手教你創(chuàng)建您的專屬 AI 智能體

在構(gòu)建我的第一個商業(yè) AI 智能體三個月后,在客戶端演示期間,一切都崩潰了。

本應(yīng)是無縫的自主工作流程變成了一個反復(fù)的澄清請求和不一致的決定的尷尬循環(huán)。客戶仍然保持禮貌,但顯然很失望。

他們離開后,我花了幾個小時分析失敗,發(fā)現(xiàn)我從根本上誤解了智能體架構(gòu)——我構(gòu)建了一個過于復(fù)雜的系統(tǒng),決策邊界很差,沒有明確的推理路徑。

那次失敗改變了我的方法,并成為我解釋這些系統(tǒng)的基礎(chǔ)。一旦你理解了核心原則,構(gòu)建有效的智能體就會變得異常簡單。

構(gòu)建您的第一個 AI 智能體的完整指南(比您想象的要容易)

AI 智能體簡介

與僅響應(yīng)提示的聊天機(jī)器人不同,智能體會主動并自行完成任務(wù)。它們是讓某人回答您有關(guān)數(shù)據(jù)的問題與讓某人實(shí)際為您分析數(shù)據(jù)之間的區(qū)別。

從模型到智能體

在智能體之前,我們將 AI 解決方案構(gòu)建為獨(dú)立的、互不關(guān)聯(lián)的組件 — 一個模型用于理解文本,另一個模型用于生成代碼,另一個模型用于處理圖像。

這種碎片化的方法

  1. 迫使用戶手動管理工作流程;
  2. 導(dǎo)致在不同系統(tǒng)之間移動時上下文消失;
  3. 需要為每個流程步驟構(gòu)建自定義集成;

智能體改變了這種范式。

與處理孤立任務(wù)的傳統(tǒng)模型不同,智能體管理各種功能,同時保持對整個任務(wù)的整體理解。

智能體不僅遵循指示,還會根據(jù)在此過程中學(xué)到的信息進(jìn)行調(diào)整并做出有關(guān)后續(xù)步驟的明智決策,類似于我們?nèi)祟惖淖鞣绞健?/p>

智能體的核心優(yōu)勢

讓我們通過查看特定任務(wù)來了解智能體的能力。

傳統(tǒng) AI 將其分為幾個孤立的步驟 — 總結(jié)、提取關(guān)鍵術(shù)語、對內(nèi)容進(jìn)行分類和生成見解 — 每個步驟都需要明確的人工協(xié)調(diào)。

限制不僅在于模型孤立工作,還在于您必須手動對整個過程進(jìn)行排序,顯式管理步驟之間的知識傳遞,并根據(jù)中間結(jié)果獨(dú)立確定需要哪些其他作。

相比之下**,基于智能體的方法可以自主執(zhí)行每個步驟,而不會失去更廣泛目標(biāo)的一面**。

智能體智能的構(gòu)建塊

AI 智能體基于三個基本原則

  1. 狀態(tài)管理:?智能體的工作記憶跟蹤上下文,了解它所學(xué)到的內(nèi)容和旨在完成的任務(wù);
  2. 決策:?智能體根據(jù)當(dāng)前知識確定哪種方法有意義;
  3. 工具使用:?智能體知道哪個工具解決了每個特定問題;

使用 LangGraph 構(gòu)建 AI 智能體

現(xiàn)在您已經(jīng)了解了什么是 AI 智能體以及它們?yōu)槭裁粗匾?,讓我們使?LangGraph(LangChain 用于構(gòu)建強(qiáng)大的 AI 智能體的框架)構(gòu)建一個智能體。

我真正喜歡 LangGraph 的地方在于,它可以讓您將智能體的思維和行動映射為圖表。每個節(jié)點(diǎn)代表一種能力(如搜索 Web 或編寫代碼),節(jié)點(diǎn)(邊緣)之間的連接控制信息流。

當(dāng)我開始構(gòu)建智能體時,這種方法對我來說很有意義,因?yàn)槲覍?shí)際上可以可視化我的智能體思維過程。

您的第一個智能體:Medium Articles Analyzer

讓我們看看如何使用 LangGraph 創(chuàng)建文本分析智能體。

該智能體將閱讀文章,弄清楚它們的內(nèi)容,提取重要元素,并提供干凈的摘要——本質(zhì)上是您的私人研究助理。

設(shè)置環(huán)境

首先,您需要設(shè)置您的開發(fā)環(huán)境。

第 1 步 — 創(chuàng)建項(xià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 密鑰:

  1. 使用 OpenAI 創(chuàng)建帳戶
  2. 導(dǎo)航到 API 密鑰部分
  3. 點(diǎn)擊 “Create new secret key”
  4. 復(fù)制您的 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 步 — 運(yùn)行測試:

python test_setup.py

如果您收到回復(fù),恭喜,您的環(huán)境已準(zhǔn)備好構(gòu)建智能體!

創(chuàng)建我們的第一個智能體

我們的智能體需要內(nèi)存來跟蹤它的進(jìn)度,我們可以使用 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ù)并準(zhǔn)備最終答案。使用 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)重要。作為復(fù)習(xí),溫度充當(dāng) “創(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}

此功能將文檔提煉為其要點(diǎn)的簡明摘要。

這些技能結(jié)合起來,使我們的智能體能夠理解內(nèi)容類型、識別關(guān)鍵信息并創(chuàng)建易于理解的摘要 — 每個函數(shù)都遵循相同的模式,即獲取當(dāng)前狀態(tài)、處理當(dāng)前狀態(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)的順序從分類到實(shí)體提取再到摘要,使其能夠理解文本類型、識別重要實(shí)體、創(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"])

運(yùn)行此代碼會通過每個功能處理文本:

分類: 技術(shù)

實(shí)體:[‘Anthropic’, ‘MCP’, ‘Model Context Protocol’]

簡介: Anthropic 的 MCP 是一種開源協(xié)議,支持與各種 API 系統(tǒng)進(jìn)行無縫應(yīng)用程序交互。

令人印象深刻的不僅僅是最終結(jié)果,還有每個階段如何建立在前一個階段之上。這反映了我們自己的閱讀過程:我們首先確定內(nèi)容類型,然后確定重要的名稱和概念,最后創(chuàng)建連接所有內(nèi)容的心理總結(jié)。

這種智能體構(gòu)建方法遠(yuǎn)遠(yuǎn)超出了我們的技術(shù)示例。您可以將類似的設(shè)置用于:

  1. 個人發(fā)展文章 — 對增長領(lǐng)域進(jìn)行分類,提取可作的建議,并總結(jié)關(guān)鍵見解;
  2. 初創(chuàng)公司創(chuàng)始人的故事 — 了解商業(yè)模式、融資模式和增長戰(zhàn)略;
  3. 產(chǎn)品評論 — 識別功能、品牌和建議;

AI 智能體的局限性

我們的智能體在我們設(shè)計的節(jié)點(diǎn)和連接的剛性框架內(nèi)工作。

這種可預(yù)測的限制了它的適應(yīng)性。與人類不同,智能體遵循固定的路徑,在面對意外情況時無法調(diào)整。

上下文理解是另一個限制。這個智能體可以處理文本,但缺乏人類自然掌握的更廣泛的知識和文化細(xì)微差別。智能體在提供的文本范圍內(nèi)運(yùn)作,盡管添加互聯(lián)網(wǎng)搜索可以幫助補(bǔ)充其知識。

黑匣子問題也存在于智能體系統(tǒng)中。我們看到輸入和輸出,但看不到內(nèi)部決策。像 GPT-o1 或 DeepSeek R1 這樣的推理模型通過展示它們的思維過程來提供更高的透明度,盡管我們?nèi)匀粺o法完全控制內(nèi)部發(fā)生的事情。

最后,這些系統(tǒng)并非完全自主,需要人工監(jiān)督,尤其是在驗(yàn)證輸出和確保準(zhǔn)確性方面。與任何其他 AI 系統(tǒng)一樣,將 AI 功能與人工監(jiān)督相結(jié)合,可以獲得最佳結(jié)果。

了解這些限制有助于我們構(gòu)建更好的系統(tǒng),并確切地知道何時需要人類介入。將 AI 功能與人類專業(yè)知識相結(jié)合,可以獲得最佳結(jié)果。

本文來自投稿,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://m.gptmaths.com/cgo/product/132436.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
上一篇 2025-04-01 13:11
下一篇 2025-04-03 15:13

增長黑客Growthhk.cn薦讀更多>>

發(fā)表回復(fù)

登錄后才能評論