首頁 >後端開發 >Python教學 >自我修正人工智慧代理:如何建構能夠從錯誤中學習的人工智慧

自我修正人工智慧代理:如何建構能夠從錯誤中學習的人工智慧

DDD
DDD原創
2024-12-29 00:09:11720瀏覽

Self-Correcting AI Agents: How to Build AI That Learns From Its Mistakes

簡介

如果您的人工智慧代理能夠識別自己的錯誤,從中學習,然後重試——無需人工幹預,會怎麼樣?歡迎來到自我修正人工智慧代理的世界。

大多數人工智慧模型都會在一次嘗試中產生輸出。但自我糾正代理更進一步。他們可以即時識別何時發生錯誤、分析原因並應用修復。將其視為具有內建「試錯」心態的人工智慧。

在這個部落格中,您將學到:

  • 自我修正對於人工智慧代理意味著什麼。
  • 如何建構一個適應錯誤的代理。
  • 如何在代理設計上應用反射模式

到最後,您將知道如何設計 AI 代理,不僅可以優雅地失敗,而且可以在每次嘗試中進行改進。


1️⃣ 什麼是自我糾正代理人?

自我修正代理是一個人工智慧系統,可以識別自己的失敗並嘗試新的策略。如果最初的方法不起作用,代理程式會重新評估並嘗試替代路徑。

類比:

想像一下請廚師烤蛋糕,但他們第一次用了太多醣。標準的人工智慧會不斷犯下同樣的錯誤。但自我修正的人工智慧會注意到錯誤,下次減少糖分,並進行調整,直到蛋糕味道完美。

為什麼自我修正代理很重要?

大多數人工智慧工具(如 ChatGPT)只能給你一個單一的回應。如果錯誤,您必須手動要求它“重試”。但自我修正代理可以自主重試

?️ 範例用例:

人工智慧被要求寫一個計算斐波那契數的 Python 函數。

嘗試 1: AI 寫一個緩慢的遞歸函數。

自我修正:它注意到遞迴太慢了。

嘗試 2: AI 使用動態程式設計重寫函數,使其速度更快。


2️⃣自我修正的關鍵技巧

我們如何讓代理人有足夠的自我意識來認識自己的錯誤?以下是三個主要技術:

1.錯誤偵測

  • 辨識結果是否「錯誤」(例如 API 呼叫失敗、輸出不正確或效能不佳)。
  • 使用錯誤代碼、異常或測試案例來檢測故障。

2.反思

  • 代理反思他們的決定,詢問“出了什麼問題?”,併計劃下一步。
  • 可以透過記錄錯誤、追蹤不成功的 API 呼叫或重新評估回應品質來實現反思。

3.重試邏輯

  • 經過反思,代理人使用改進的策略重試。
  • 這可能意味著切換 API 提供者、使用更有效率的邏輯或應用備份方法。

?專業提示:

錯誤日誌可以回饋到AI模型中,以提高未來的效能。


3️⃣ 實踐自我修正

讓我們使用 Python 和 FastAPI 建立一個自我修正的 AI 代理程式。


? ‍?第 1 步:問題

我們想要一個可以產生 Python 函數的 AI 代理程式。如果函數運行失敗或產生錯誤的輸出,代理程式將自動自我修正

問題:寫一個計算第 10 個斐波那契數的斐波那契函數。

挑戰:如果代理程式產生遞歸版本(速度很慢),它應該識別這一點並使用動態程式來重寫它。


? ‍?第 2 步:設定代理

安裝必要的依賴項:

pip install openai fastapi uvicorn


? ‍?第三步:寫代理

代理的工作原理如下:

  1. 它使用OpenAI的API產生一個Python函數。
  2. 運行函數來檢查它是否有效。
  3. 如果函數失敗(緩慢、錯誤或錯誤),它會反映並修正方法

程式碼實作

import openai
import time
import asyncio

# ? Replace with your OpenAI API key
openai.api_key = "your_openai_api_key_here"

# ? Step 1: Ask the AI to generate a Fibonacci function
async def generate_fibonacci_function():
    prompt = "Write a Python function to calculate the 10th Fibonacci number."
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    function_code = response['choices'][0]['message']['content']
    return function_code

# ? Step 2: Test the function to see if it works
def test_fibonacci_function(function_code):
    try:
        exec(function_code)  # Run the function in a safe execution environment
        result = eval("fibonacci(10)")  # Call the function with n=10
        if result == 55:  # Correct Fibonacci value for n=10
            return "success", result
        else:
            return "wrong_output", result
    except Exception as e:
        return "error", str(e)

# ? Step 3: Self-Correct by asking for a new version of the function
async def self_correct_function():
    max_attempts = 3
    for attempt in range(max_attempts):
        print(f"? Attempt {attempt + 1}")

        # Generate a new Fibonacci function
        function_code = await generate_fibonacci_function()
        print(f"Generated function:\n{function_code}\n")

        # Test the function to see if it works
        status, result = test_fibonacci_function(function_code)
        if status == "success":
            print(f"✅ Success! Fibonacci(10) = {result}")
            return
        elif status == "wrong_output":
            print(f"❌ Incorrect result: {result}. Asking AI to try a better method.")
        else:
            print(f"? Error: {result}. Asking AI to try again.")

    print("❌ Max attempts reached. Could not generate a correct function.")

# ? Run the correction process
asyncio.run(self_correct_function())


4️⃣ 它是如何運作的

  1. 產生函數:AI 寫出斐波那契的 Python 函數。
  2. 運行函數:代理執行函數並檢查結果。
  3. 自我修正:如果結果錯誤,它會提示OpenAI以更聰明的方法重試

輸出範例

pip install openai fastapi uvicorn


自我糾正代理的 5️⃣ 個關鍵模式

  1. 錯誤偵測:找出不正確的輸出、緩慢的效能或異常。
  2. 反思:記錄問題。為什麼失敗了?
  3. 重試邏輯:呼叫新版本的函數,但這次比較聰明。

?專業提示:

使用回饋循環讓代理人從錯誤中學習。將日誌回饋給代理程式以幫助其識別常見問題。


6️⃣ 什麼時候該使用自我校正劑?

自我糾正代理在故障頻繁且手動幹預成本高昂的情況下非常有用。

  • API 呼叫:API 失敗時重試。
  • 程式碼產生:如果拋出錯誤,則重新產生程式碼。
  • 資料分析:修正 ML 模型中的錯誤預測。

自我糾正劑的 7️⃣ 好處

Problem Solution
Agent gets it wrong Retry with a better approach
API request fails Retry with exponential backoff
Code generation error Use a smarter prompt
問題 解決方案 標題> 代理出錯 用更好的方法重試 API請求失敗 使用指數退避重試 程式碼產生錯誤 使用更聰明的提示 表>

8️⃣ 更上一層樓

  1. 使用快取:儲存成功的輸出,這樣代理就不會從頭開始。
  2. 新增回饋循環:如果某個功能經常失敗,請將日誌輸入訓練過程。
  3. 追蹤代理信心:如果代理不確定,請讓它執行測試案例。

9️⃣ 總結

您現在已經有了一個自我修正代理的藍圖,它可以編寫、測試和修復Python函數。以下是我們介紹的內容:

  • 自我修正的三大支柱:錯誤偵測、反射、重試邏輯
  • 如何建立一個產生和測試 Python 函數的代理程式。
  • 建構更聰明、更可靠代理的最佳實務。

?挑戰:

建立一個自我修正代理,它不僅可以產生程式碼,還可以評估運行時效能。如果函數太慢,請重新編寫函數進行最佳化。

想要了解更多關於建構響應式法學碩士的資訊?查看我的換行課程:帶有伺服器發送事件的響應式 LLM 應用程式

我涵蓋:

  • 如何設計人工智慧應用系統
  • 如何串流大型語言模型的答案
  • 伺服器發送事件和 WebSocket 之間的差異
  • 即時性對 GenAI UI 的重要性
  • Python 中的非同步程式設計如何運作
  • 如何將LangChain與FastAPI整合
  • 檢索增強產生可以解決什麼問題
  • 如何建立人工智慧代理 ....以及更多。

以上是自我修正人工智慧代理:如何建構能夠從錯誤中學習的人工智慧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn