问十位开发者什么是“AI代理”,你会得到十五种答案。而问一位有经验的开发者,他们会说:“看情况。”
然而,定义问题比开发者对定义的执着更深一层。在我们还没能就标准定义达成一致之前,我们的行业已经迅速从基于规则的系统转向了机器学习,再到大型语言模型。例如,在我上一篇博客文章中,我写到了我们在定义“开源AI”时遇到了困难。我们似乎在定义自主代理时也面临着类似的挑战。
我们很多人工智能的定义都是从理论层面来的。自20世纪50年代以来,学术界就很有前瞻性。他们为那些还未被使用的人工智能系统定义了术语。如今,这些系统已经变得既真实又实用,但实际情况与我们的理论框架并不相符。我发现“代理”这个词被广泛应用于从工作流到大型语言模型(LLM)等各种领域,所以我向我的社区寻求了澄清。Slack的开发者关系高级总监Kurt Kemple(@theworstdev)分享了一个与我共鸣的观点:
"说实话,这确实是一个相当大的问题!对我来说,自主智能代理是能够在有无人类互动的情况下采取行动作为其响应的一部分。例如,一个生成式AI应用可以根据一个问题生成文本,一个自主智能代理也可以运行代码、启动工作流、调用API等,作为响应事件或互动的回应。"
我也很欣赏我的同事马克·诺维奇对某个定义的描述,他在下面的视频中做了说明。
马克说:
"所以对我来说,自主代理是一些形式的软件,不一定特指AI,它可以代表你执行操作,从简单的请求到更复杂的操作。你不需要每一步都亲自操作,比如,你不需要去打开那个,点击那个,去那儿。比如,我需要登录GitHub。你只需要说去做就行,它能够推断出需要执行的操作,并真正执行这些操作。"
为了确保本文清晰易懂,我在这里定义自主代理(AI)为一个可以在没有人类干预的情况下执行任务的工具。
来认识一下大白鹅我正在试用一个名为Goose的AI开发助手。许多AI编程工具能大大加快开发速度,但Goose的独特之处在于它是半自主的工具。也就是说,它可以独立完成从开始到结束的任务,但在需要帮忙的时候,它也会向人类求助。
你可以告诉Goose一次要做的事情,让它开发一个web应用,迁移一次,或创建一个测试套件,它会从规划到执行处理好所有事情,而无需你进一步的输入。
默认情况下,鹅(或鹅软件/功能):
(注:此处“鹅”为“Goose”的直译,若“Goose”指特定软件或功能名称,建议在首次出现时进行解释或注释,以确保读者理解其具体含义。)
根据具体语境,可能更自然的表达为:
默认情况下,鹅软件:
或
默认情况下,鹅功能:
在这个情境中,计划是将你的提示拆解成一系列具体步骤。我觉得特别酷的是,如果计划中的某个步骤失败了,Goose 可以重试该步骤,或者更新整个计划。
这里有一只鹅制定并执行计划的视频。
Max 让 Goose 帮他上网看看,买点东西。
让鹅半自动的原理因为鹅(Goose)是开源项目,我们可以查看其代码库来更好地了解其规划和执行的能力。请注意,下面的描述可能会随着项目的早期发展阶段而有所变化。
鹅采用“自带大型语言模型”方法,意味着你可以选择并将其连接到以下任何大型语言模型提供商:比如
这种灵活性使得开发人员能够尝试不同的模型。在将Goose连接到LLM之前,你需要你的个人API密钥,并配置一个profile.yaml
文件。
如果你想要使用OpenAI的GPT-4迷你模型,你可以将你的profile.yaml
配置如下:
model: GPT-4-mini
default: provider: OpenAI processor: gpt-4o accelerator: gpt-4o-mini moderator: 截断处理 toolkits: - name: 开发人员 requires: {}
切换到全屏模式 退出全屏
鹅通过一个名为Exchange的类与大型语言模型(LLM)进行通信。当你给鹅发指令时,鹅会使用ask_an_ai方法来询问大型语言模型并制定一个计划。然后,鹅会按照计划执行一系列shell命令。
以下是流程:用户输入提示信息 → 鹅向LLM传达目标 → LLM和鹅一起制定计划 → 鹅通过shell命令来执行计划。
当某个步骤失败时,Goose可能采取的措施包括:
这取决于Goose的设计和具体情境。
这个过程使鹅部分自主,因为它可以独立运作但知道何时寻求协助。
建立信任,保持控制作为开发者,对我来说,一开始我对它有点不放心。我更习惯于使用那些可以逐个步骤检查工作的AI工具,因此对我来说这是一次工作流程上的调整。我一直觉得在提交代码之前应该先检查AI的工作,这一点我使用Goose时依然坚持。我平时会检查自己的代码和同事的代码,所以AI也不例外。
我可以给 Goose 设置一个自定义的计划,而不是让它自己制定计划。这样当我清楚需要做什么但不想完全手动操作时,就非常方便了。
你可以在一个 markdown 或 yaml 文件中创建一个计划。用户生成的计划通常从一条启动信息开始,向 Goose 提供一些初始信息。
这里有一个关于数据库迁移的启动信息的例子:
“我们即将开始数据库迁移,将数据从旧数据库系统迁移到新架构中。此次迁移需要我们确保数据完整性,尽量减少停机时间,并确保在各个阶段验证迁移是否成功。”
然后,你可以用具体的步骤来列出计划,用短横线“-”分隔每个步骤:- 备份当前数据库:在启动迁移流程前,确保所有数据都被备份到一个安全的位置。 - 设置新数据库环境:部署新数据库系统所需的基础设施和配置。 - 从旧数据库导出数据集:使用数据库导出工具创建数据备份文件。 - 将数据备份文件安全传输到新数据库环境:确保数据的安全传输。 - 导入数据到新数据库结构:使用数据库导入工具将数据加载到新数据库结构中。 - 验证数据的一致性,确保新旧数据库的数据匹配。 - 更新应用程序中的数据库连接:修改应用程序设置以指向新数据库。 - 在迁移后监控新数据库性能,确保没有异常情况。 - 详细记录迁移过程,方便日后查阅。
切换到全屏模式 退出全屏
将计划保存到文件后,可以使用下面的命令来运行它:
鹅会话开始 --计划 path/to/the/file/with/your/plan # 这将启动一个鹅会话并使用指定的计划文件
全屏模式 退出全屏
代理的破晓大型语言模型改变了我们的工作方式,但它们只是触及了可能的表面。技术专家正在突破界限,并通过代理来自动化我们的工作流程。
有些人可能不喜欢人工智能,但我感谢人工智能让我编程的职业生涯更进一步。作为一名神经多样性的开发者,像 Goose 这样的 AI 开发工具帮助我保持专注和高效,尽管我有注意力缺陷障碍(ADHD)。还有很多我们能做的,利用人工智能来构建更易使用的编码工具!
我希望像 Goose 这样的开源工具能使开发人员更容易访问编程工具,这样更符合中文的表达习惯。例如,我的同事马克·诺维奇(Max Novich)开发了“Goose Talk to Me”这项工具,允许开发人员通过语音命令来操作代码。这降低了视力障碍或行动不便的开发者的访问难度,更加自然流畅。
当我们不断扩展代理所能做的事情的边界时,我们需要优先考虑伦理和包容性。我邀请你参与这个运动。
加进来鹅还很小,所以你有很多机会帮助我们提高它!我也觉得一开始就参与一个项目很酷。
https://github.com/block/goose/issues 去这个链接看看
一个为你的goose(一个GitHub项目)提供的语音互动插件。该项目使用本地副本的Whisper来实现语音互动和转录。
Goose-Talk-To-Me 是一个旨在通过最新的AI技术实现语音交互的项目。它使用了 goose-ai
,openai-whisper
,sounddevice
等工具和库,提供了流畅的语音处理功能。
goose-ai
进行语音交互pyttsx4
进行语音合成以下是所需软件包列表:
版本要求:Python >= 3.12
一、goose-ai
(goose-ai:人工智能相关库)
二、openai-whisper
三、sounddevice
四、soundfile
五、numpy
六、scipy
七、torch
八、numba
九、more-itertools
十、ffmpeg
十一、pyttsx4
先安装所需的依赖项,然后配置一下你的开发环境,
sudo apt update && sudo apt install espeak ffmpeg libespeak1 portaudio19-dev # 更新软件包列表并安装espeak、ffmpeg、libespeak1和portaudio19-dev包 pipx 安装 goose 并且 安装 goose-talk-to-me ### MacOS ```bash 在 MacOS 上: brew install ffmpeg brew install portaudio pipx 安装 goose-ai 并使用 --preinstall 参数 安装 goose-talk-to-me
切换到全屏模式 退出全屏 ## 使用 要使用`goose-talk-to-me`,请这样做: 1. 将对话工具包添加到配置文件「~/.config/goose/profiles.yaml」中 2. 启动应用 [点击这里在 GitHub 上查看该项目](https://github.com/Kvadratni/goose-talk-to-me) ### 写写博客文章或者制作YouTube短视频,当你在使用和测试 Goose 的时候 # Goose 内容创作中心 🦢 #32 ![GitHub logo](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg) 链接地址: https://github.com/block-open-source/goose-plugins/issues/32 [ ![blackgirlbytes 的头像](https://imgapi.imooc.com/67242b8809ed223204320432.jpg) ](https://github.com/blackgirlbytes "访问 GitHub 页面") **[blackgirlbytes](https://github.com/blackgirlbytes)** 发布了一条动态 [2024年10月29日](https://github.com/block-open-source/goose-plugins/issues/32) # 📦 鹅创作基地 ## 🚀 目的 [block-open-source.github.io/goose-plugins](https://block-open-source.github.io/goose-plugins/) 是我们展示社区内容的地方,用于展示大家关于 Goose 的内容。我们创建了这个内容创作任务平台,让大家可以在这里分享他们的体验,并帮助其他人了解 Goose 的相关知识。 ## 🤝 请选择以下 **一个** 问题来为项目贡献力量 ## **❗你每次只能给自己分配一个任务,确保每个人都得到参与的机会!❗** 您当前的任务审核并接受后,您可以指派自己下一项任务。 ## 🚫 你不能处理不属于你的任务。私自提交 PR 将不会获得积分。 🚫 ### 📝 博客贴 * [ ] #24 * [ ] #28 * [ ] #31 * [ ] #20 * [ ] #37 * [ ] #41 ### 📱 小视频 * [ ] #27 * [ ] #30 * [ ] #23 * [ ] #35 * [ ] #39 * [ ] #43 ### 🎥 看来看我们视频吧! 一、[] #25 二、[] #29 三、[] #22 四、[] #34 五、[] #38 六、[] #42 ### 🌐 社交帖子 * [ ] #26 * [ ] #21 * [ ] #33 * [ ] #36 * [ ] #44 * [ ] #40 ## 例子 这是一个链接:https://github.com/user-attachments/assets/0217fc29-3b0b-4ab5-8a60-2dc53eb2b293 <https://github.com/user-attachments/assets/5497112f-7ebb-4e73-9611-191be6d1934f>(链接无需翻译) 想了解更多,就来看鹅的全部集数吧 ![教你如何用AI打造GitHub操作](https://imgapi.imooc.com/67242b880854b4a404800360.jpg) [](https://www.youtube.com/watch?v=lppDgrHY88Y "点击这里观看视频") ![U 升级:用开源 AI 代理强力加持 IntelliJ](https://imgapi.imooc.com/67242b880871ebcc04800360.jpg) [U 升级:用开源 AI 代理强力加持 IntelliJ](https://www.youtube.com/watch?v=Z4jF4SrbY2c) ## 开始使用 1. 选择上面列表中的一个内容任务 2. 在相应的议题上评论 '.take' 来获取任务分配 3. 分叉仓库并新建一个分支 4. 创建你的内容作品 5. 提交一个 PR,把你完成的内容加入展示 6. 等待审阅并处理反馈 ## 有什么问题吗? 如果你有任何疑问或需要澄清的内容,请在具体的地方留言! 创作开心!🦢 [查看 GitHub 上的内容](https://github.com/block-open-source/goose-plugins/issues/32) ### 在 Discord 一起玩! 点击这里加入我们的Discord频道 <https://discord.gg/DCAZKnGZFa>