[ { "speaker": "Ayush", "text": "大家好。" }, { "speaker": "Ayush", "text": "我叫Ayush。" }, { "speaker": "Ayush", "text": "我是Answer This的创始人。" }, { "speaker": "Ayush", "text": "我们构建基于证据的科学工作流AI代理,今天我要分享一下我们在内部如何使用这些AI代理以及你们如何复制我们的设置。" }, { "speaker": "Ayush", "text": "我们有两三个合同工用于设计和外联工作,但之所以能取得这样的成绩,很大一部分原因是由于我们有一个内部AI运营代理来处理很多通常会占用创始人时间的工作。" }, { "speaker": "Ayush", "text": "所以,这个AI代理每天为我们处理超过100封电子邮件,已经关闭了400多张客户支持工单。" }, { "speaker": "Ayush", "text": "它在会议后更新CRM信息。" }, { "speaker": "Ayush", "text": "它收集跨渠道的用户反馈,并帮助进行客户服务等工作,但更重要的是,正如Pete、Tom和Gary提到的,它还让我们可以在任何时候询问关于我们业务的问题。" }, { "speaker": "Ayush", "text": "比如,“某个潜在客户的状况如何?”或“某位客户目前有哪些未解决的问题?”。" }, { "speaker": "Ayush", "text": "这些对我们来说现在变得即时可查询了,而之前我们不得不使用多个应用程序来获取这些问题的答案。" }, { "speaker": "Ayush", "text": "最重要的是,并不是这个代理能够执行固定的一系列任务,而是它具有自我扩展的能力。" }, { "speaker": "Ayush", "text": "当遇到它还不能完成的重复任务时,它会请求一个编码子代理来构建工具以帮助它完成这些任务,而这些工具将会永久保留并在未来的会话中可用。" }, { "speaker": "Ayush", "text": "现在让我来谈谈如何设置这个架构。" }, { "speaker": "Ayush", "text": "首先你应该有一个用Python包裹的Claude代码CLI,其中来自Slack、电子邮件和其他渠道的新消息会被放入任务队列。" }, { "speaker": "Ayush", "text": "代理会拾取这些任务并逐步处理它们。" }, { "speaker": "Ayush", "text": "这带我到了我的第二个观点。" }, { "speaker": "Ayush", "text": "你如何告诉它只有你知道的业务逻辑?" }, { "speaker": "Ayush", "text": "我们发现一种很好的方法是给代理一个只读副本,包括我们的数据库和代码库,其中有一个cron作业基本上会在每次发布时为它提供更新版本。" }, { "speaker": "Ayush", "text": "每当有客户支持查询进来,询问一些关于业务的问题时,代理可以直接阅读我们的代码库来找出答案,包括我们的订阅逻辑以及应用内部的各种事物的位置。" }, { "speaker": "Ayush", "text": "那么到底是什么让它能够自我进化呢?" }, { "speaker": "Ayush", "text": "这里有两个非常重要的组成部分。" }, { "speaker": "Ayush", "text": "首先是我们在创业公司中使用的所有工具,比如 Intercom、Fathom、Stripe 等等。" }, { "speaker": "Ayush", "text": "我们把这些工具都作为 CLI 提供给我们的主要代理。" }, { "speaker": "Ayush", "text": "这意味着每当它被要求执行一项它还不能做的事情时,它可以简单地编写出相应的工具来完成任务。" }, { "speaker": "Ayush", "text": "对我们来说这很神奇,因为我们只是让它去做事情,但它能够自我创作工具,并从只是一个骨架发展成一个拥有超过 45 个 CLI 的全面工具。" }, { "speaker": "Ayush", "text": "这也是一个很好的例子:当我们只需要监控我们的着陆页以确保它们始终处于广告状态时,我们只是简单地告诉它,然后它就创建了一个 cron job 来执行这个任务。" }, { "speaker": "Ayush", "text": "接下来稍微进一步一点,代理还需要拥有一种可编辑的人格或记忆。" }, { "speaker": "Ayush", "text": "我们通过一个加载在每次代理回合中的 instructions.md 文件来实现这一点,并且代理能够编辑它。" }, { "speaker": "Ayush", "text": "这就是我们如何让代理自我进化的,我们可以像给员工反馈一样给出反馈,然后它会更新这个 instruction.md 文件,然后将其附加到下一次运行中。" }, { "speaker": "Ayush", "text": "最好的例子是客户支持。" }, { "speaker": "Ayush", "text": "当我们刚刚推出这个代理来开始进行客户支持时,我的非技术联合创始人 Ryan 注意到了一类支持错误。" }, { "speaker": "Ayush", "text": "他没有打开代码库或告诉我或者提交工单,而是直接在 Slack 上给代理发消息并告诉它哪里出了问题。" }, { "speaker": "Ayush", "text": "代理更新了自己的指令集和工具链接,然后这一类错误就不再发生了。" }, { "speaker": "Ayush", "text": "所以这里更广泛的教训是:一个内部代理需要三种类型的记忆。" }, { "speaker": "Ayush", "text": "它需要事实记忆,即你的代码库和数据库,以及在你的创业公司中它们如何运作的操作性信息。" }, { "speaker": "Ayush", "text": "它需要行为记忆。" }, { "speaker": "Ayush", "text": "这是你教给代理的内容。" }, { "speaker": "Ayush", "text": "是像指令和反馈这样的事情。" }, { "speaker": "Ayush", "text": "这就是我们为什么有instructions.md文件。" }, { "speaker": "Ayush", "text": "还需要程序性记忆,常规的任务是你正在做的。" }, { "speaker": "Ayush", "text": "所以,如果你想复制整个代理,只需拍张照片给你的云代码,并使用云代码或其他任何具有编程能力的命令行界面作为主要代理框架。" }, { "speaker": "Ayush", "text": "给代理只读访问您的代码库。" }, { "speaker": "Ayush", "text": "然后提供一些基本的CLI,再提供一个编码代理作为CLI。" }, { "speaker": "Ayush", "text": "最后,加载一个每次回合都会被编辑的指令文件。" }, { "speaker": "Ayush", "text": "你知道,你可以通过SSH连接到Slack或电子邮件,你就可以为你的业务准备好这个代理了。" } ]