首页 > 后端开发 > Python教程 > 自我纠正人工智能代理:如何构建能够从错误中学习的人工智能

自我纠正人工智能代理:如何构建能够从错误中学习的人工智能

DDD
发布: 2024-12-29 00:09:11
原创
719 人浏览过

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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板