继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

基于AI代理的自动化任务与MCP生态系统讲解

慕桂英546537
关注TA
已关注
手记 343
粉丝 31
获赞 200

仿佛就在昨天,我们都被生成式AI震撼,尤其是让普通人也能轻松与大型语言模型对话的聊天界面。

虽然这已经非常令人惊讶,但这只是开始。下一代的人工智能是代理式的,这意味着这些系统不仅能响应指令,还能主动采取行动、作出决策,并与外部系统互动。这是通过AI代理来实现的。

什么是AI助手?

当你与使用AI的聊天机器人(如ChatGPT)互动时,你可以询问它如何做某事,它会提供一步一步的指南。

例如,如果我在写代码时遇到了错误,我可以将错误信息粘贴到ChatGPT,让它帮我调试。由于ChatGPT无法访问我的代码库,它会猜测错误的原因,并给出几个可能的解决方案让我试试。我会手动试试这些方案,并告诉ChatGPT结果。我们会一直这么来回,直到错误解决或我放弃。

AI助手通过代替我与语言模型交流并直接解决问题,极大地简化了这个过程。

_> 一个AI代理程序是一个可以自主运行来实现目标的系统。

因为AI代理连接到系统,它们可以分析情境,决定下一步行动并执行,而无需任何人工干预。这种能力使它们从被动的聊天机器人角色转变为自动化助手角色。

通过使用AI代理,我只需说“解决错误”,它就能自动帮我解决错误。

AI代理如何与大型语言模型合作

大型语言模型(LLM,例如GPT-4o、Claude 3.5 Sonnet、Gemini 2.0等)为AI代理提供了认知能力。大多数AI代理本身会有一个聊天界面,在这里你可以输入你的指令,代理会将你的指令发送给一个LLM。同时,代理还会通知LLM它能使用哪些工具

调用工具功能

工具是代理的一个非常重要的方面。代理可以通过调用工具执行API调用。

我们来看一个例子。

1.) 请帮我解决我在UserService.java文件中的NullPointerException问题。

代理将用户请求和可用工具列表以结构化格式发送给LLM。

    用户请求如下: "修复 UserService.java 文件中的空指针异常。"

    可用工具:

1. read_file(文件路径: str) → 返回指定文件的内容。

2. analyze_code(file_content: str) → 识别潜在错误并提出修复建议。

3. edit_file(file_path: str, modifications: dict) → 应用代码更改。

4. run_tests() → 运行测试并返回结果。

切换到全屏 切换回正常视图

大模型分析请求,选择合适的工具,并决定需要读取文件来帮助解决问题。

    [
      {
        "工具名称": "read_file",
        "参数值": { "文件路径名": "UserService.java" }
      }
    ]

全屏显示 退出全屏

代理程序调用 read_file() 并将代码发送给大型语言模型。

    public class UserService {
        private Database db;

        public void 查找用户(String userId) {
            System.out.println(db.findUserById(userId).getName());
        }
    }

// 根据用户ID查找用户并打印用户名

切换到全屏,切换回正常模式

5.) 大型语言模型识别到问题(db变量未被初始化),现在选择其他工具来解决这个问题。

以下是一个JSON数据结构的示例,描述了编辑文件的工具及其参数。工具名称为edit_file,参数包括文件路径为UserService.java。修改部分指定了修改的行号为3,并用新的代码行private Database db = new Database();替换原有内容。

    [
      {
        "tool": "edit_file",
        "parameters": {
          "file_path": "UserService.java",
          "modifications": {
            "line_number": 3,
            "replacement": "private Database db = new Database();"
          }
        }
      }
    ]

进入全屏,退出全屏

6.) 代理人运行 edit_file() 来修改 UserService.java,然后告诉 LLM。

7.) LLM认为进行测试来确认更改是个好主意。

    [
      {
        "tool": "运行测试任务",
        "parameters": {}
      }
    ]

点击全屏 点击退出全屏

8.), 代理人运行 run_tests() 并将测试结果告诉 LLM。

    {
      "tests_passed": true,
      "failed_tests": []
    }

全屏模式 退出全屏

9.) LLM生成一条最终消息,然后代理将这条消息展示给用户。

我在 UserService.java 中通过初始化 db 变量解决了 NullPointerException 问题。所有测试都已通过。如果您需要进一步修改,请告诉我!

全屏 / 退出全屏

没有工具调用,大型语言模型只能根据训练数据猜测答案。但通过使用工具,程序可以直接访问所需的数据,从而做出准确的决定并采取相应的行动。

值得注意的是,并不是所有的代理在工具访问上都一样。大多数专有代理只能访问特定的LLM和一组预设工具,因为公司通常会为自己的应用构建专门的代理。

其他代理,例如Goose,更加灵活,允许用户根据自己的选择配置LLM,并添加各种工具,比如API、数据库和本地环境(如IDE)。然而,为了使代理能够在不同的工具和系统之间进行扩展,而不必为每个系统单独进行自定义集成,它们需要一种标准化的方式来发现、调用和管理这些工具。这正是模型上下文协议(MCP)的功能。

MCP (注:此处为原文中的缩写或专有名词,保留原文形式) 生态体系

传统的AI整合需要为每个系统定制API调用,这使得扩展变得很困难。MCP解决了这个问题,通过提供一个开放且通用的协议,使代理能够与外部系统动态地进行通信。

通过MCP,像Goose这样的代理就能够做到:

  • 无需开发人员手动编写集成代码即可连接到任何 API
  • 与云服务、开发工具、数据库和企业系统无缝集成
  • 获取并存储上下文信息以增强推理

在撰写本文时,已有超过1000个这样的MCP服务器(这些服务器提供工具接口)可供任何支持MCP的AI代理(如 Goose)连接!这些MCP服务器作为代理和外部系统之间的桥梁,让API、数据库和开发环境变得可访问。其中一些是由官方API提供商开发的,而大多数则是由社区成员开发的。因为MCP是一个开放标准,任何人都可以为任何资源搭建MCP服务器。这大大增加了AI代理的功能和可能性!

例如,假设我想让 Goose 根据 Figma 设计在 WebStorm IDE 中开发并创建一个新的网络应用,并将代码提交到 GitHub 新仓库中。我可以将以下 MCP 服务器作为 Goose 扩展添加进来,来赋予它所有这些能力:

  • Figma - 墨刀
  • JetBrains - JetBrains (通常直接使用英文名称)
  • GitHub - GitHub (通常直接使用英文名称)

以下是一些教程链接:

通过这个,我可以用自然语言吩咐我的AI助手,它就会去搞定:
(句末的冒号已省略,使表达更口语化。)

_> 根据文件ID为XYZ的figma设计稿,在WebStorm中构建一个Web应用,并将其代码提交至名为angiejones/myapp的新GitHub仓库。

真的很强,对吧?!

来开始你的AI助手之旅

希望这为你提供了关于什么是AI代理、它们是如何工作的以及它们能为你做些什么的清晰见解。Goose是免费且开源的,你可以根据需要添加任意数量的扩展。这是开始使用AI代理并将它们融入你的工作流程以提高效率的好方法。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP