智慧體課程文件

什麼是 Agent?

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

什麼是 Agent?

Unit 1 planning

學完本節後,你將對 Agent 及其在人工智慧中的各種應用有充分的理解。

為了解釋什麼是 Agent,讓我們先從一個類比開始。

大局:Agent Alfred

認識一下 Alfred。Alfred 是一個 Agent

This is Alfred

想象一下 Alfred 收到一個指令,例如:“Alfred,請給我一杯咖啡。”

I would like a coffee

因為 Alfred 理解自然語言,他很快就明白了我們的請求。

在執行訂單之前,Alfred 會進行 推理和規劃,找出他需要執行的步驟和工具:

  1. 去廚房
  2. 使用咖啡機
  3. 沖泡咖啡
  4. 把咖啡帶回來
Reason and plan

一旦他有了計劃,他 就必須行動。為了執行他的計劃,他可以使用他所知道的工具列表中的工具

在這種情況下,為了製作咖啡,他使用咖啡機。他啟動咖啡機來沖泡咖啡。

Make coffee

最後,Alfred 把剛衝好的咖啡端給我們。

Bring coffee

這就是 Agent:一個 能夠推理、規劃並與其環境互動的 AI 模型

我們稱之為 Agent,因為它具有“能動性”(agency),即它具有與環境互動的能力。

Agent process

我們來更正式地定義

現在你已經有了大局觀,下面是一個更精確的定義

Agent 是一個利用 AI 模型與環境互動以實現使用者定義目標的系統。它結合了推理、規劃和行動的執行(通常透過外部工具)來完成任務。

將 Agent 視為包含兩個主要部分:

  1. 大腦(AI 模型)

這裡是所有思考發生的地方。AI 模型 處理推理和規劃。它根據情況 決定採取哪些行動

  1. 身體(能力和工具)

這部分代表 Agent 能夠執行的一切

可能行動的範圍 取決於 Agent 配備了什麼。例如,因為人類沒有翅膀,他們不能執行“飛”這個 行動,但他們可以執行“走”、“跑”、“跳”、“抓”等 行動

“能動性”的範圍

根據這個定義,Agent 存在於一個能動性不斷增加的連續光譜上

代理能力等級 描述 名稱 示例模式
☆☆☆ Agent 輸出對程式流程沒有影響 簡單處理器 process_llm_output(llm_response)
★☆☆ Agent 輸出決定基本控制流 路由器 if llm_decision(): path_a() else: path_b()
★★☆ Agent 輸出決定函式執行 工具呼叫者 run_function(llm_chosen_tool, llm_chosen_args)
★★★ Agent 輸出控制迭代和程式繼續 多步智慧體 while llm_should_continue(): execute_next_step()
★★★ 一個代理工作流可以啟動另一個代理工作流 多智慧體 if llm_trigger(): execute_agent()

表格來自 smolagents 概念指南

我們使用哪種型別的 AI 模型來構建 Agent?

Agent 中最常見的 AI 模型是 LLM(大型語言模型),它以 文字 作為輸入並輸出 文字

著名的例子有 OpenAIGPT4MetaLlamaGoogleGemini 等。這些模型在大量的文字上進行訓練,並且能夠很好地泛化。我們將在下一節中瞭解更多關於 LLM 的資訊。

也可以使用接受其他輸入作為 Agent 核心模型的模型。例如,視覺語言模型(VLM),它類似於 LLM,但也能理解影像輸入。我們目前將重點放在 LLM 上,稍後將討論其他選項。

AI 如何對其環境採取行動?

LLM 是很棒的模型,但 它們只能生成文字

然而,如果你要求 HuggingChat 或 ChatGPT 等知名聊天應用程式生成影像,它們可以做到!這怎麼可能呢?

答案是,HuggingChat、ChatGPT 和類似應用程式的開發者實現了額外的功能(稱為 工具),LLM 可以使用這些工具來建立影像。

Eiffel Brocolis
該模型使用影像生成工具生成了此影像。

我們將在 工具 部分了解更多關於工具的資訊。

Agent 可以執行哪些型別的任務?

Agent 可以透過 工具 執行我們實現的任何任務來完成 行動

例如,如果我編寫一個 Agent 作為我在電腦上的個人助理(像 Siri),我要求它“給我的經理傳送一封郵件,要求推遲今天的會議”,我可以給它一些傳送郵件的程式碼。這將是一個 Agent 可以在需要傳送郵件時使用的新工具。我們可以用 Python 編寫它

def send_message_to(recipient, message):
    """Useful to send an e-mail message to a recipient"""
    ...

正如我們將看到的,LLM 將在需要時生成程式碼來執行該工具,從而完成所需的任務。

send_message_to("Manager", "Can we postpone today's meeting?")

工具的設計非常重要,對 Agent 的質量有很大影響。有些任務需要非常特定的工具來製作,而另一些任務可能使用“網路搜尋”等通用工具來解決。

請注意,行動與工具不同。例如,一個行動可能涉及使用多個工具才能完成。

允許 Agent 與其環境互動 實現了公司和個人的實際應用

示例 1:個人虛擬助理

Siri、Alexa 或 Google Assistant 等虛擬助理在代表使用者與數字環境互動時,就充當 Agent 的角色。

它們接收使用者查詢,分析上下文,從資料庫中檢索資訊,並提供響應或啟動操作(如設定提醒、傳送訊息或控制智慧裝置)。

示例 2:客戶服務聊天機器人

許多公司部署聊天機器人作為 Agent,以自然語言與客戶互動。

這些 Agent 可以回答問題,引導使用者完成故障排除步驟,在內部資料庫中開啟問題,甚至完成交易。

它們的預定義目標可能包括提高使用者滿意度、縮短等待時間或提高銷售轉化率。透過直接與客戶互動、從對話中學習並隨著時間的推移調整其響應,它們展示了 Agent 在行動中的核心原則。

示例 3:影片遊戲中的 AI 非玩家角色

由 LLM 提供支援的 AI Agent 可以使非玩家角色(NPC)更具動態性和不可預測性。

它們不再遵循僵化的行為樹,而是可以 根據上下文做出響應,適應玩家互動,並生成更細緻的對話。這種靈活性有助於建立更逼真、更引人入勝的角色,這些角色隨著玩家的行動而演變。


總而言之,Agent 是一個使用 AI 模型(通常是 LLM)作為其核心推理引擎的系統,用於:

  • 理解自然語言: 以有意義的方式解釋和響應人類指令。

  • 推理和規劃: 分析資訊,做出決策,並制定策略來解決問題。

  • 與環境互動: 收集資訊,採取行動,並觀察這些行動的結果。

現在你對 Agent 有了紮實的理解,讓我們透過一個簡短的、不計分的測驗來鞏固你的理解。之後,我們將深入探討“Agent 的大腦”:LLM

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.