有沒有想過 Siri 和 Alexa 等人工智慧代理是如何工作的?這些智慧系統在我們的日常生活中正變得越來越重要。本文將介紹 ReAct 模式,這是一種透過將推理和行動技能相結合來增強人工智慧代理的方法。我們將向你展示如何從零開始構建一個人工智慧代理,包括基本工具、庫和實施步驟。
學習目標
- 掌握人工智慧代理的基本概念及其在各種應用中的意義。
- 學習如何在人工智慧代理中實現“推理+行動”(ReAct)模式,以增強其能力。
- 設定從零開始構建人工智慧代理所需的必要工具和庫。
- 使用 Python 開發人工智慧代理,整合各種操作,並實現推理迴圈。
- 有效測試和除錯人工智慧代理,確保其按預期執行。
- 提高人工智慧代理的穩健性和安全性,並增加更多功能。
- 確定人工智慧代理的實際應用並瞭解其未來前景。
什麼是人工智慧代理?
人工智慧代理是一種自我管理的生物,它利用感測器來監視周圍環境、處理資訊並完成預定目標。它們可以是基本的機器人,也可以是隨著時間推移不斷調整和學習的複雜系統。典型的例子包括 Netflix 和亞馬遜的推薦引擎、Siri 和 Alexa 等聊天機器人,以及特斯拉和 Waymo 的自動駕駛汽車。
在許多行業中,這些代理也是必不可少的: UiPath 和 Blue Prism 是機器人流程自動化(RPA)程式的典範,可將重複性流程自動化。DeepMind 和 IBM Watson Health 是醫療診斷系統的典範,可幫助診斷疾病並提出治療建議。在這些領域,人工智慧代理大大提高了工作效率、精確度和定製化程度。
人工智慧代理為何重要?
這些代理在改善我們的日常生活和實現特定目標方面發揮著至關重要的作用。
人工智慧代理之所以重要,是因為它們可以
- 降低完成常規操作所需的人力,從而提高產量和效率。
- 分析海量資料,提供支援決策的結論和建議。
- 利用聊天機器人和虛擬助理提供個性化的互動和幫助。
- 在銀行、交通和醫療保健等行業實現複雜應用。
從本質上講,人工智慧代理在推動下一波技術進步、使系統更智慧、更能滿足使用者需求方面起著舉足輕重的作用。
人工智慧代理的應用和使用案例
人工智慧代理在各行各業都有廣泛的應用。以下是一些著名的使用案例:
- 客戶服務:聊天機器人和虛擬助理形式的人工智慧代理可以處理客戶諮詢、解決問題並提供個性化支援。它們可以全天候執行,提供一致、高效的服務。
- 金融:金融預測、演算法交易和欺詐檢測都是人工智慧代理的應用領域。它們根據市場趨勢進行交易,檢查交易資料,發現可疑模式。
- 醫療保健:人工智慧代理可協助診斷疾病、推薦治療方法和監測患者健康狀況。它們分析醫療資料、提供見解並支援臨床決策。
- 營銷:人工智慧代理可個性化營銷活動、細分受眾並最佳化廣告支出。它們分析客戶資料,預測行為,並根據個人喜好定製內容。
- 供應鏈管理:人工智慧系統可以估計需求、提高庫存水平並簡化物流。它們檢查來自制造商、供應商和零售商的資訊,以確保順利運營。
ReAct模式簡介
ReAct 模式的工作迴圈是:思考(Thought)、 行動(Action)、暫停(Pause)、觀察(Observation)、回答(Answer)。
這個迴圈允許人工智慧代理對輸入進行推理,利用外部資源對輸入採取行動,然後將結果整合回推理過程。透過這種方式,人工智慧代理可以提供更準確、更貼近上下文的回應,從而大大提高其實用性。
ReAct 模式是一種有效的設計模式,它將推理和行動技能結合起來,提高了人工智慧代理的能力。GPT-3 或 GPT-4 等 LLM 從這種技術中獲益匪淺,因為它允許 LLM 與其他工具和應用程式介面對接,以開展超出其原始程式設計範圍的活動。
ReAct 模式以迴圈方式執行,包括以下步驟:
- 思考:人工智慧代理處理輸入資訊,並思考需要做什麼。這包括理解問題或命令,並確定要採取的適當行動。
- 行動:根據推理,代理執行預定義的操作。這可能涉及搜尋資訊、執行計算或與外部 API 互動。
- 暫停:代理等待操作完成。這是一個關鍵步驟,在這一步中,代理會暫停以接收所執行操作的結果。
- 觀察:代理觀察操作結果。它分析從操作中獲得的輸出,以瞭解獲得的資訊或結果。
- 回答:代理使用觀察到的結果生成回覆。然後將該回復提供給使用者,完成迴圈。
使用ReAct的重要性和好處
ReAct 模式之所以重要,有以下幾個原因:
- 增強能力:透過整合外部行動,人工智慧代理可以執行需要特定資訊或計算的任務,從而增強其整體能力。
- 提高準確性:該模式允許人工智慧代理獲取即時資訊並進行精確計算,從而做出更精確、更相關的響應。
- 靈活性:ReAct 模式使人工智慧代理更靈活,更能適應各種任務。它們可以與不同的應用程式介面和工具互動,執行各種操作。
- 可擴充套件性:這種模式允許隨著時間的推移增加新的操作和功能,使人工智慧代理具有可擴充套件性和麵向未來。
- 現實世界應用:ReAct 模式使人工智慧代理能夠部署在真實世界的場景中,與動態環境進行互動,並提供有價值的見解和幫助。
所需的工具和庫
Python 是一種通用且功能強大的程式語言,因其簡單易用和廣泛的庫支援而廣泛應用於人工智慧和機器學習領域。要構建人工智慧代理,幾個 Python 庫是必不可少的:
- OpenAI API:透過該庫,您可以與 OpenAI 的語言模型(如 GPT-3 和 GPT-4)進行互動。它提供了生成文字、回答問題和執行各種語言相關任務所需的功能。
- httpx:這是一個強大的 Python HTTP 客戶端,支援非同步請求。它用於與外部 API 互動、獲取資料和執行網路搜尋。
- re:該模組支援 Python 中的正規表示式。它用於解析和匹配字串中的模式,這對處理人工智慧代理的響應非常有用。
OpenAI API和httpx庫
OpenAI API 是一個強大的平臺,可訪問 OpenAI 開發的高階語言模型。這些模型可以理解並生成類似人類的文字,因此非常適合構建人工智慧代理。使用 OpenAI API,您可以
- 根據提示生成文字
- 回答問題
- 執行語言翻譯
- 總結文字
- 還有更多
httpx 庫是 Python 的 HTTP 客戶端,支援同步和非同步請求。它設計得易於使用,同時提供了強大的網路請求功能。使用 httpx,您可以
- 傳送 GET 和 POST 請求
- 處理 JSON 響應
- 管理會話和 cookie
- 執行非同步請求以提高效能
OpenAI API 和 httpx 庫共同提供了構建和增強人工智慧代理所需的基礎工具,使它們能夠與外部資源互動並執行各種操作。
設定環境
現在,讓我們按照以下步驟設定環境:
Step1:安裝所需的庫
要開始構建人工智慧代理,您需要安裝必要的庫。以下是設定環境的步驟:
- 安裝 Python:確保系統中已安裝 Python。您可以從 Python 官方網站下載:
- 設定虛擬環境:為專案建立一個虛擬環境來管理依賴關係是個不錯的做法。執行以下命令設定虛擬環境:
python -m venv ai_agent_env source ai_agent_env/bin/activate # On Windows, use `ai_agent_env\Scripts\activate`
- 安裝 OpenAI API 和 httpx:使用 pip 安裝所需的庫:
pip install openai httpx
- 安裝其他庫:您可能還需要其他庫,如用於正規表示式的 re 庫,它已包含在 Python 標準庫中,因此無需單獨安裝。
第 2 步:設定 API 金鑰和環境變數
要使用 OpenAI API,您需要一個 API 金鑰。請按照以下步驟設定 API 金鑰:
- 獲取 API 金鑰:在 OpenAI 網站上註冊一個賬戶,然後從 API 部分獲取 API 金鑰。
- 設定環境變數:將 API 金鑰儲存在環境變數中,以確保其安全。在您的 .bashrc 或 .zshrc 檔案中新增以下一行(或使用適合您作業系統的方法):
export OPENAI_API_KEY='your_openai_api_key_here'
- 在程式碼中新增訪問 API 金鑰:在 Python 程式碼中,您可以使用 os 模組訪問 API 金鑰:
import os openai.api_key = os.getenv('OPENAI_API_KEY')
環境設定完成後,您就可以開始構建人工智慧代理了。
構建人工智慧代理
現在讓我們來構建人工智慧代理。
建立人工智慧代理的基本結構
為了構建人工智慧代理,我們將建立一個類來處理與 OpenAI API 的互動,並管理推理和操作。下面是一個可以開始使用的基本結構:
import openai import re import httpx class ChatBot: def __init__(self, system=""): self.system = system self.messages = [] if self.system: self.messages.append({"role": "system", "content": system}) def __call__(self, message): self.messages.append({"role": "user", "content": message}) result = self.execute() self.messages.append({"role": "assistant", "content": result}) return result def execute(self): completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=self.messages) return completion.choices[0].message.content
該類使用可選的系統訊息初始化人工智慧代理,並處理使用者互動。__call__方法接收使用者資訊,並使用 OpenAI API 生成響應。
實現ReAct模式
要實現 ReAct 模式,我們需要定義“思考”、“行動”、“暫停”、“觀察”和 “回答”的迴圈。以下是我們如何將其融入人工智慧代理的方法:
定義提示
prompt = """ You run in a loop of Thought, Action, PAUSE, Observation. At the end of the loop you output an Answer. Use Thought to describe your thoughts about the question you have been asked. Use Action to run one of the actions available to you - then return PAUSE. Observation will be the result of running those actions. Your available actions are: calculate: e.g. calculate: 4 * 7 / 3 Runs a calculation and returns the number - uses Python so be sure to use floating point syntax if necessary wikipedia: e.g. wikipedia: Django Returns a summary from searching Wikipedia simon_blog_search: e.g. simon_blog_search: Django Search Simon's blog for that term Example session: Question: What is the capital of France? Thought: I should look up France on Wikipedia Action: wikipedia: France PAUSE You will be called again with this: Observation: France is a country. The capital is Paris. You then output: Answer: The capital of France is Paris """.strip()
定義查詢函式
action_re = re.compile('^Action: (\w+): (.*)
查詢函式透過向人工智慧代理傳送問題、解析操作、執行操作並將觀察結果反饋到迴圈中來執行 ReAct 迴圈。
執行操作
現在讓我們來看看執行行動。
執行:維基百科搜尋
維基百科搜尋操作允許人工智慧代理在維基百科上搜尋資訊。下面是如何執行該操作:
def wikipedia(q): response = httpx.get("https://en.wikipedia.org/w/api.php", params={ "action": "query", "list": "search", "srsearch": q, "format": "json" }) return response.json()["query"]["search"][0]["snippet"]
執行:部落格搜尋
部落格搜尋操作允許人工智慧代理搜尋特定部落格上的資訊。
def simon_blog_search(q): response = httpx.get("https://datasette.simonwillison.net/simonwillisonblog.json", params={ "sql": """ select blog_entry.title || ': ' || substr(html_strip_tags(blog_entry.body), 0, 1000) as text, blog_entry.created from blog_entry join blog_entry_fts on blog_entry.rowid = blog_entry_fts.rowid where blog_entry_fts match escape_fts(:q) order by blog_entry_fts.rank limit 1 """.strip(), "_shape": "array", "q": q, }) return response.json()[0]["text"]
執行:計算
計算操作允許人工智慧代理執行數學計算。下面介紹如何執行:
def calculate(what): return eval(what)
為人工智慧代理新增動作
接下來,我們需要在字典中註冊這些操作,以便人工智慧代理可以使用它們:
known_actions = { "wikipedia": wikipedia, "calculate": calculate, "simon_blog_search": simon_blog_search }
將行動與人工智慧代理整合
要將操作與人工智慧代理整合,我們需要確保查詢函式能夠處理不同的操作,並將觀察結果反饋到推理迴圈中。下面是完成整合的方法:
def query(question, max_turns=5): i = 0 bot = ChatBot(prompt) next_prompt = question while i < max_turns: i += 1 result = bot(next_prompt) print(result) actions = [action_re.match(a) for a in result.split('\n') if action_re.match(a)] if actions: action, action_input = actions[0].groups() if action not in known_actions: raise Exception(f"Unknown action: {action}: {action_input}") print(" -- running {} {}".format(action, action_input)) observation = known_actions[action](action_input) print("Observation:", observation) next_prompt = f"Observation: {observation}" else: return result
透過這種設定,人工智慧代理可以對輸入進行推理、執行操作、觀察結果並生成響應。
測試和除錯
現在讓我們按照步驟進行測試和除錯。
執行示例查詢
要測試人工智慧代理,可以執行示例查詢並觀察結果。下面是幾個示例:
print(query("What does England share borders with?"))
print(query("Has Simon been to Madagascar?"))
print(query("Fifteen * twenty five"))
除錯常見問題
在測試過程中,您可能會遇到一些常見問題。下面是一些除錯技巧:
- API錯誤:確保正確設定了 API 金鑰並擁有必要的許可權。
- 網路問題:檢查您的網路連線,確保您呼叫的端點可以到達。
- 不正確的輸出:驗證操作函式中的邏輯,確保它們返回正確的結果。
- 未處理的操作:確保已知動作字典中定義了所有可能的動作。
改進人工智慧代理
現在讓我們來改進人工智慧代理。
增強魯棒性和安全性
讓人工智慧代理更穩健、更安全:
- 驗證輸入:確保所有輸入都經過適當驗證,以防止注入攻擊,尤其是在計算功能中。
- 錯誤處理:在操作函式中實施錯誤處理,以優雅地管理異常。
- 日誌記錄:新增日誌記錄,跟蹤代理的操作和觀察結果,以方便除錯。
新增更多操作和功能
為增強人工智慧代理的功能,您可以新增更多操作,例如
- 天氣資訊:與天氣 API 整合,獲取即時天氣資料。
- 新聞搜尋:實施新聞搜尋操作,獲取最新的新聞文章。
- 翻譯:使用翻譯 API 新增翻譯操作,以支援多語言查詢。
真實世界應用
- 客戶支援:人工智慧代理可以處理客戶諮詢、解決問題並提供個性化建議。
- 醫療保健:人工智慧代理可協助診斷疾病、推薦治療方法並監控患者健康狀況。
- 金融:人工智慧代理可檢測欺詐行為、執行交易並提供財務建議。
- 營銷:人工智慧代理可個性化營銷活動、細分受眾並最佳化廣告支出。
未來前景與進步
隨著機器學習、自然語言處理和人工智慧倫理方面的進步,人工智慧代理的未來充滿希望。新興趨勢包括
- 自主系統:能夠處理複雜任務的更復雜的自主系統。
- 人類與人工智慧的協作:加強人類與人工智慧代理之間的協作,以改進決策。
- 道德人工智慧:重點開發道德人工智慧代理,優先考慮隱私、公平和透明度。
此外,請檢視這篇文章,瞭解構建人工智慧代理的具體步驟
小結
在本綜合指南中,我們探討了人工智慧代理的概念、其意義以及增強其能力的 ReAct 模式。我們介紹了必要的工具和庫,設定了環境,並從頭開始構建了一個人工智慧代理。我們還討論了執行動作、將動作與人工智慧代理整合以及測試和除錯系統等問題。最後,我們探討了人工智慧代理在現實世界中的應用和未來前景。
透過學習本教學指南,你現在已經掌握了從零開始建立自己的人工智慧代理的知識。嘗試不同的操作,增強代理的能力,在令人興奮的人工智慧領域探索新的可能性。
- 瞭解人工智慧代理的核心概念和意義。
- 實施 ReAct 模式,讓人工智慧代理執行動作並對其觀察結果進行推理。
- 瞭解 OpenAI API、httpx 和 Python 正規表示式等基本工具和庫。
- 從零開始構建人工智慧代理的詳細指南,包括定義動作和整合動作。
- 有效測試和除錯人工智慧代理的技巧。
- 增強人工智慧代理能力並確保其穩健性和安全性的策略。
- 人工智慧代理在各行各業的應用例項及其未來發展。
評論留言