从基础概念到实践应用介绍AI Agent,适合初次接触Agent的开发者建立认知框架。
如果你问十个开发者如何定义「AI Agent」,你会得到十五种不同的答案。如果你问一个资深开发者,他会说:「这取决于具体情况。」
但定义问题远不止开发者的学究之气。我们的行业从基于规则的系统快速演变到机器学习,再到大语言模型,还来不及就定义达成共识。例如,在我上一篇博客中,我写过我们在定义「开源 AI」时的困境。我们似乎在自主 Agent 上面临类似的挑战。
我们的许多 AI 定义来自理论。自从 1950 年代起,学术界就眼光长远。他们为人们还没有使用的 AI 系统定义术语。如今,这些系统已经成为现实和实际应用,但现实与我们的理论框架不符。我注意到「Agent」这个术语被应用于从 workflow 到大语言模型(LLM)的各种东西,所以我向社区寻求澄清。Kurt Kemple(@theworstdev),Slack 开发者关系高级总监,分享了一个我很赞同的观点:
「这真的是个大问题!对我来说,自主 Agent 是那些能执行操作(有或没有人类交互)作为其响应一部分的东西。比如,genAI 应用可以根据问题生成文本,一个自主 Agent 还可以运行代码、启动 workflow、进行 API 调用等,作为对事件或交互的响应。」
我也很欣赏我的同事 Max Novich 的定义,他在下面的视频中描述了这一点。
「对我来说,自主 Agent 是某种形式的软件,不一定是 AI,它可以代表你执行操作,从简单的请求到更复杂的操作。你不必全程牵着它的手。你知道,你不必说,去打开那个,点击那个,去那里。比如,我需要登录 GitHub。就去做,对吧。它可以推断需要采取什么行动,并且它可以真正采取这些行动。」
为了在这篇文章中保持清晰,我将自主 Agent 定义为一种可以在没有人类干预的情况下执行操作的工具。
我正在试验一个叫 Goose 的 AI 开发者 Agent。许多 AI 编程工具加快了开发速度,但 Goose 是独特的,因为它是半自主的。这意味着它独立地从开始到结束执行任务,但知道何时寻求人类协助。
你可以告诉 Goose 一次开发一个网络应用、执行迁移或创建测试套件,它会处理其他所有事情——从规划到执行——不需要你更多的输入。
在这个背景下,计划是你的 prompt 被分解为一系列具体步骤。我认为 Goose 能够在计划中的一个步骤失败时重试步骤或更新其计划,这特别酷。
这是 Goose 创建和执行计划的视频示例:
在一个更高级的例子中,Max 提示 Goose 为他浏览互联网并做一点在线购物:
由于 Goose 是开源的,我们可以检查代码库以更好地理解其规划和执行能力。请注意,下面描述的内容可能会改变,因为 Goose 仍处于早期阶段。
Goose 采用「自带 LLM」的方法,意思是你选择并将其连接到以下任何 LLM 提供商:
这种灵活性允许开发者试验不同的模型。要将 Goose 连接到 LLM,你需要你的个人 API 密钥,并且你需要配置一个 profile.yaml 文件。
如果你想使用 OpenAI 的 GPT-4 mini,你可能会配置你的 profile.yaml 像这样:
default:
provider: openai
processor: gpt-4o
accelerator: gpt-4o-mini
moderator: truncate
toolkits:
- name: developer
requires: {}
Goose 通过一个叫 Exchange 的类连接到 LLM,该类处理与 AI 模型的通信。当你给 Goose 一个 prompt 时,Goose 使用 ask_an_ai 方法咨询 LLM 并创建一个计划。Goose 然后通过执行一组 shell 命令来跟随计划。
这是流程:用户写 prompt → Goose 与 LLM 沟通目标 → LLM 和 Goose 一起创建计划 → Goose 通过 shell 命令执行计划。
当一个步骤失败时,Goose 可能会决定:
这个过程使 Goose 成为半自主的,因为它独立工作但知道何时寻求帮助。
对我来说,作为一个开发者,最初我对它有一些信任问题。我更习惯于与 AI 工具一起工作,在这些工具中我可以逐步检查工作,所以这对我来说是一个 workflow 的转变。我始终相信在提交代码之前先检查 AI 的工作,我仍然对 Goose 继续这样做。我已经检查了我的代码和我同事的代码,所以 AI 也不是例外。
为我提供控制的一个选项是,我可以为 Goose 创建一个自定义计划来遵循,而不是依赖 Goose 创建计划。当我知道需要发生什么但不想手动全部完成时,这非常有效。
你可以在 markdown 或 yaml 文件中创建一个计划。用户生成的计划以一个启动消息开始,为 Goose 提供一些初始背景。
这是一个指导数据库迁移的启动消息示例:
kickoff_message: We're initiating a database migration to transfer data from the legacy database system to the new architecture. This migration requires us to ensure data integrity, minimize downtime, and verify successful migration at various stages.
然后,你可以列出由破折号 - 分隔的具体步骤的计划:
tasks:
- Backup the current database: Ensure all data is backed up to a secure location before starting the migration process.
- Set up the new database environment: Deploy the necessary infrastructure and configurations for the new database system.
- Export data from the legacy database: Use database export tools to create data dump files.
- Transfer data files to the new system: Securely copy the data dump files to the environment of the new database.
- Import data into the new database: Utilize database import tools to load the data into the new database structure.
- Validate data integrity: Run checks to compare and verify that data in the new database matches the legacy database.
- Update database connections in application: Modify application settings to point to the new database.
- Monitor performance: Observe the new database's performance and configuration for any anomalies post-migration.
- Document the migration process: Record detailed steps taken during the migration for future reference.
在你将计划保存到文件后,你可以使用以下命令运行它:
goose session start --plan path/to/the/file/with/your/plan
LLM 改变了我们的工作方式,但它们只是触及了可能性的表面。技术人员正在突破边界,通过 Agent 自动化我们的 workflow。
有些人可能不喜欢 AI,但我很欣赏 AI 帮助推动了我的编程职业发展。作为一个神经多样性开发者,像 Goose 这样的 AI 开发者工具帮助我克服 ADHD 的影响,保持专注和高效。我们可以做很多事情来使用 AI 构建 AI 工具,使编码更容易获得!
我希望像 Goose 这样的开源工具的本质能够赋予开发者使编码更容易获得的力量。例如,我的同事 Max Novich 开发了「Goose Talk to Me」,让开发者使用语音命令来处理代码。这降低了视障或活动能力受限的开发者的门槛。
当我们推动 Agent 可以做什么的边界时,我们需要优先考虑伦理和可获得性。我邀请你加入这个运动。
Goose 仍处于初期阶段,所以有很多机会让你帮助我们改进它!(我也认为从地面层级参与一个项目很酷)。
https://github.com/block/goose/issues
Kvadratni / goose-talk-to-me
一个用于你的 Goose 的语音交互插件。这个项目利用本地副本的 Whisper 来进行语音交互和转录。
Goose-Talk-To-Me 是一个致力于使用最先进 AI 技术启用语音交互的项目。它使用 goose-ai、openai-whisper、sounddevice 和其他工具和库来提供无缝语音处理能力。
使用 goose-ai 的语音交互
语音转文本转录
实时语音处理
使用 pyttsx4 的文本转语音
安装依赖并准备你的环境:
sudo apt update && sudo apt install espeak ffmpeg libespeak1 portaudio19-dev
pipx install goose & install goose-talk-to-me
### MacOS
```bash
brew install ffmpeg
brew install portaudio
pipx install goose-ai --preinstall goose-talk-to-me
要使用 goose-talk-to-me,请遵循这些步骤:
将 talk-to-me toolkit 添加到配置文件 ~/.config/goose/profiles.yaml
在你使用和试验 Goose 时创建博客文章或 YouTube shorts
block-open-source.github.io/goose-plugins 是我们的 Goose 社区内容展示。我们创建了这个内容创建任务的中心,供社区分享他们的经验并帮助其他人了解 Goose。
🤝 选择以下问题中的一个来为这个项目做贡献
❗你一次只能给自己分配一个任务,让每个人都有机会参与。❗
在你的当前任务被审查并接受后,你可以给自己分配你的下一个任务。
🚫 你不得窃取分配给另一个人的问题。如果你为未分配给你的问题提交 PR,你不会获得分数。🚫
https://github.com/user-attachments/assets/0217fc29-3b0b-4ab5-8a60-2dc53eb2b293
https://github.com/user-attachments/assets/5497112f-7ebb-4e73-9611-191be6d1934f
关于 Goose 的完整剧集以了解更多
从上面的列表中选择一个内容任务
在相应的问题上评论".take"来获得分配
Fork 仓库并创建一个新分支
提交 PR 以将你的内容添加到展示中
等待审查并处理任何反馈
如果你有任何问题或需要澄清,请在具体问题上评论!
一些评论可能只对登录的访客可见。登录查看所有评论。
关于进一步的行动,你可以考虑屏蔽此人和/或举报滥用