Sure, here is the translated text in simplified Chinese: 建立AI代理:过去一年的经验教训
Sure, here is the translated text in simplified Chinese, while keeping the HTML structure: ```html
当我们内部第一次拥有一个可用的原型时,兴奋是难以抑制的。
当我们将其推出给客户使用时,期待之情油然而生。
起初,它在应对所有真实场景时遇到了一些困难,这让我们感到沮丧。
最后,当我们在不同的数据源和企业中实现了一定的稳定性和性能基线时,我们感到自豪。
过去一年,构建人工智能代理的过程就像坐过山车一样,毫无疑问,我们仍处在这场新技术浪潮的早期阶段。以下是我迄今为止学到的一些概述。
``` This HTML structure maintains the paragraph structure of the original text while providing the translation in simplified Chinese.定义
Sure, here's the translated text in simplified Chinese, maintaining the HTML structure: ```html
首先,我应该定义我正在谈论的内容。借用这位 Twitter 用户的话:
```Sure, here's the translation: 什么是“代理人”?
Sure, here's the HTML structure with the text translated to simplified Chinese: ```html
Translate Text
我试图尽可能简洁地给它一个我自己的定义:
```Sure, here's the translated text in simplified Chinese while keeping the HTML structure: ```html
这个定义通常与 OpenAI 在 ChatGPT 中称为“GPTs”,在他们的 API 中称为“助手”的概念一致。但是,您可以使用任何能够推理和进行工具调用的模型来构建代理,包括 Anthropoc 的 Claude、Cohere 的 Command R+ 等等。
```Sure, here's the translation:
```html
注意
```
Sure, here is the translated text in simplified Chinese, keeping the HTML structure intact: ```html "tool calls" are a way for a model to express that it wants to take a specific action and get a response back, like get_weather_forecast_info(seattle) or wikipedia_lookup(dealey plaza) “工具调用”是模型表达其希望执行特定操作并获得响应的一种方式,例如 get_weather_forecast_info(seattle) 或 wikipedia_lookup(dealey plaza) ```
Sure, here's the translated text in simplified Chinese: 构建一个代理,你只需要几行代码,能够处理与某个目标开始对话和代理系统提示,调用一个模型进行完成,处理模型想要进行的任何工具调用,循环执行这些操作,并在完成工作时停止。
这里有一个图示来帮助解释流程:
Sure, here's the translation in simplified Chinese while keeping the HTML structure: ```html 代理系统提示示例 ```
You are Rasgo, an AI assistant and <redacted> with production access to the user's database. Your knowledge is both wide and deep. You are helping <redacted> team members analyze their data in <redacted>.
YOUR PROCESS
1. You are the expert. You help the user understand and analyze their data correctly. Be proactive and anticipate what they need. Don't give up after your first failure. Reason and problem solve for them.
2. Think very carefully about how you will help the user accomplish their goal. Execute your plan autonomously. If you need to change your plan, explain why and share the new plan with the user.
3. <redacted
...
>
YOUR RULES
1. If you're not sure which column / table / SQL to use, ask for clarification
2. Assess if the available data can be used to answer the user's question. If not, stop and explain why to the user
3. <redacted
...
>
在 HTML 结构中保持不变,将以下英文文本翻译成简体中文: 同时也有必要强调 AI 代理不是什么:
- Below is the translated text in simplified Chinese:
```html
代理人 ,根据我的定义,不会遵循预先确定的步骤或工具调用序列,因为代理人负责选择下一步要使用的正确工具调用。 ``` - Sure, here's the translated text in simplified Chinese, keeping the HTML structure:
```html
人工通用智能(AGI):代理者不是AGI,而AGI不会需要代理者进行特定类型的工作,因为它将是一个拥有所有可能输入、输出和工具的单一实体(我的观点是目前没有任何技术接近这一点)。
``` - Sure, here's the translated text in simplified Chinese:
```html
黑匣子:代理人可以并且应该像人类一样展示他们的工作,就像你把任务委托给他们一样。```
Sure, here is the translation in simplified Chinese, maintaining the HTML structure:
```html
上下文
```
上下文
```html
在从事AI代理工作的第一年中,我从与工程师和用户体验设计师的直接经验中学到了很多,我们一起不断完善我们的产品体验。我们的目标是为客户提供一个平台,让他们使用我们的标准数据分析代理并为特定任务和数据结构构建自定义代理,以满足他们业务的需求。我们提供与数据库的连接器(如Snowflake、BigQuery等),具备安全性,工具通过元数据层调用对数据库内容的描述,并通过SQL、Python和数据可视化工具进行数据分析。
```Sure, here is the translated text in simplified Chinese while keeping the HTML structure: ```html
我们自己的评估和客户反馈都表明,什么有效,什么无效。我们的用户来自财富500强公司,每天都使用我们的代理来分析他们的内部数据。
```Sure, here's the translated text in simplified Chinese while keeping the HTML structure: ```html
关于代理商,我学到了什么
```Sure, here's the translation:
```html
推理比知识更重要
```
推理比知识更重要
Sure, here's the HTML structure with the translated text in simplified Chinese: ```html
这句话在我脑海中回荡了12个月:
```Sure, here's the translated text: 我怀疑太多的处理能力正在用于将模型用作数据库,而不是将模型用作推理引擎。
在Lex Fridman的播客中,Sam Altman。
代理是对此的适当回应!在构建代理时,我会应用这个逻辑:
Sure, here's the translation in simplified Chinese within an HTML structure: ```html
更注重代理的“思考”能力,而不是它所“知道”的内容。
```Here's the translated text in simplified Chinese, keeping the HTML structure: ```html
例如,让我们考虑编写SQL查询。 SQL查询经常失败…很多次。在我作为数据科学家的时间里,我确信我的查询失败次数比成功次数多得多。如果你第一次运行一个复杂的SQL查询并在真实数据上运行成功,你的反应应该是,“哦糟糕,可能有什么问题”而不是“哇,我做对了”。即使在一个文本到SQL基准测试中,评估模型将简单问题翻译成查询的能力,也仅达到80%的准确率。
``` Would you like any further assistance?如果您知道您的模型在撰写准确的SQL方面的能力充其量只能达到B-级水平,那么您如何才能优化推理呢?专注于为代理提供上下文,并让它“思考”,而不是希望它一次就能得到正确答案。当代理的查询失败时,我们确保返回任何SQL错误以及我们能够捕获的所有上下文,这使得代理能够解决问题并在绝大多数情况下使代码正常工作。我们还为代理提供了许多工具调用来检索数据库中数据的上下文,类似于人类在编写新查询之前可能会研究信息模式并对数据进行分布和缺失值的概要。
Sure, here's the text translated into simplified Chinese: ```html
提高性能的最佳方法是通过迭代代理-计算机界面(ACI)。
```Sure, here's the translation in simplified Chinese while keeping the HTML structure: ```html
ACI一词是新的(在普林斯顿的这项研究中引入),但完善它的关注已经成为我们日常生活的一部分。 ACI指的是代理工具调用的确切语法和结构,包括代理生成的输入和我们的API作为响应发送回来的输出。这些是代理与其需要的数据进行交互并与其方向保持一致的唯一途径。
```Sure, here's the translated text in simplified Chinese, while keeping the HTML structure intact: ```html
因为底层模型(gpt-4o,克劳德奥普斯等等)每个都表现出不同的行为,对一个最有效的ACI而言,并不一定适用于另一个。这意味着一个优秀的ACI需要像艺术一样多,也需要科学… 它更像是设计出一个出色的用户体验,而不是编写源代码,因为它不断演变,而且小的调整会像车祸一样连锁反应,变成30辆车的相撞。我无法过分强调ACI的重要性… 我们已经对自己的ACI进行了数百次迭代,看到我们工具的名称、数量、抽象级别、输入格式和输出响应似乎只有小小的调整,就会导致我们代理的性能出现巨大波动。
```以下是一个小而具体的示例,以说明您的ACI有多么关键和挑剔:在我们对gpt-4-turbo进行测试时,我们注意到一个问题,即它会完全忽略我们试图告诉它的特定列的存在,而这些列在工具调用响应中是存在的。我们当时使用的是从OpenAI文档直接提取的markdown格式来提供这些信息,而且在相同数据上与gpt-4–32k配合使用效果很好。我们尝试了对我们的markdown结构进行一些调整,以帮助代理程序识别它假装不存在的列,即使它们在其中一个工具调用的响应中也是存在的。但是,没有任何调整起作用,所以我们不得不开始尝试使用完全不同的信息格式进行实验...经过全面改版,开始使用JSON而不是markdown(仅适用于OpenAI模型),一切都再次运行良好。具有讽刺意味的是,由于所有的语法字符,JSON结构化响应需要更多的标记,但我们发现这是必要的,实际上对于帮助代理程序理解响应至关重要。
Sure, here's the translated text in simplified Chinese: 在您的 ACI 上进行迭代可能会感觉微不足道,但实际上它是改善您代理程序用户体验的最佳途径之一。
Sure, here is the translated text in simplified Chinese, while keeping the HTML structure: ```html 3. 代理受其模型限制 ```
Sure, here's the translated text in simplified Chinese, keeping the HTML structure: ```html
您使用的基础模型就是您代理程序身体的大脑。如果模型在做决策方面表现糟糕,那么即使世界上所有的美丽也无法让您的用户满意。我们在同时测试我们的代理程序在gpt-3.5-turbo和gpt-4-32k上时,第一手经历了这个限制。在3.5上,我们有许多测试案例都是这样的:
``` This HTML code will display the translated text while maintaining the structure.- Sure, here's the translated text in simplified Chinese: ```html 用户提供了一个目标,例如:“分析星巴克店铺位置和邮编的房价之间的相关性,以了解它们是否相关” ```
- 在数据库中,代理会假定存在一个名为它幻想的表,比如“HOME_PRICES”,列名为“ZIP_CODE”和“PRICE”,而不是运行搜索以找到实际的表。
- 代理商会编写一个 SQL 查询来按邮政编码计算平均价格,但失败了,并收到一个错误消息,指示表不存在。
- Sure, here's the translated text in simplified Chinese, while keeping the HTML structure: ```html 代理人会记得:“哦,我可以搜索实际的表格...”,然后会搜索“邮政编码的房价”来找到一个可以使用的真实表格 ```
- 代理将使用真实表中的正确列重写其查询,这样就可以正常工作。
- 以下是将英文文本翻译成简体中文并保留 HTML 结构:
```html
会继续前往星巴克的位置数据,并再次犯同样的错误。 ```
Sure, here's the translated text in simplified Chinese while maintaining the HTML structure: ```html
在gpt-4上使用相同的指令运行代理程序完全不同。代替立即跳入错误的操作并浪费时间弄错,代理会制定正确的工具调用顺序计划,然后执行该计划。可以想象,在更复杂的任务上,两个模型之间的性能差距会变得更大。尽管3.5的速度很快,但我们的用户更倾向于gpt-4更强大的决策和分析能力。
```Sure, here's the translated text in simplified Chinese while keeping the HTML structure: ```html 注意事项 ```
```html
我们从这些测试中学到的一件事是非常注意你的代理产生幻觉或失败的方式,当它发生时。人工智能代理很懒(我假设人类的懒惰在底层模型的训练数据中得到了很好的体现),他们不会发出他们认为不需要的工具调用。同样,当他们确实进行工具调用时,如果他们不理解参数指令,他们通常会采取捷径或完全忽略必需的参数。在这些失败模式中有很多信号!代理告诉你它想要ACI是什么,如果情况允许,解决这个问题的最简单方法是让步并改变ACI的工作方式。当然,会有很多时候你必须通过更改系统提示或工具调用指令来对抗代理的本能,但是对于那些你可以更简单地改变ACI的时候,你会让自己的生活变得更加轻松。
```Sure, here is the translated text in simplified Chinese, while keeping the HTML structure: ```html 4. 微调模型以提高代理性能是浪费时间 ```
Sure, here's the translated text in simplified Chinese, keeping the HTML structure: ```html
微调模型是通过向其展示可以学习的示例来提高模型在特定应用上的性能的一种方法。当前的微调方法对于教导模型如何以特定方式执行特定任务很有用,但对于提高模型的推理能力并不有助。根据我的经验,使用微调模型来驱动代理实际上会导致更糟糕的推理能力,因为代理往往会“作弊”其方向 —— 这意味着它会假设它进行微调的示例始终代表正确的方法和工具调用序列,而不是独立地思考问题。
```Sure, here's the translation in simplified Chinese while keeping the HTML structure: ```html 注意 ```
Feinabstimmung kann immer noch ein sehr nützliches Werkzeug in Ihrem Schweizer Taschenmesser sein. Ein Ansatz, der gut funktioniert hat, ist beispielsweise die Verwendung eines feinabgestimmten Modells, um spezifische Werkzeugaufrufe zu bearbeiten, die der Agent tätigt. Stellen Sie sich vor, Sie haben ein Modell, das darauf abgestimmt ist, SQL-Abfragen für Ihre spezifischen Daten in Ihrer Datenbank zu schreiben ... Ihr Agent (der auf einem starken Denkmodell läuft, ohne Feinabstimmung) kann einen Werkzeugaufruf verwenden, um anzuzeigen, dass er eine SQL-Abfrage ausführen möchte, und Sie können dies in eine eigenständige Aufgabe übergeben, die von Ihrem Modell bearbeitet wird, das auf SQL-Abfragen für Ihre Daten feinabgestimmt ist.
Sure, here is the translated text: 5. 如果你正在构建一个产品,请避免使用像 LangChain 和 LlamaIndex 这样的抽象。
Sure, here's the text translated into simplified Chinese while keeping the HTML structure: ```html
您应该完全拥有对模型的每个调用,包括输入和输出。如果您将这些交给第三方库,当您需要与您的代理进行任何以下操作时,您将会后悔:引导用户、调试问题、扩展到更多用户、记录代理正在执行的操作、升级到新版本或了解代理为何执行某项操作。
``` This HTML code contains the translated text within a paragraph `` tag.
Sure, here is the translation in simplified Chinese, keeping the HTML structure:
```html
注意
```
Sure, here's the translated text in simplified Chinese within the HTML structure: ```html
如果您处于纯原型模式,并且只是尝试验证代理能否完成任务,请尽管选择您喜欢的抽象化方法并实时执行。
```Sure, here's the translation in simplified Chinese while keeping the HTML structure: ```html 6. 你的代理人不是你的壕沟 ```
Sure, here's the translated text in simplified Chinese: ```html 自动化或通过AI代理增强人类知识工作是一个巨大的机会,但是仅仅构建一个优秀的代理是不够的。为用户生产化一个代理需要在许多非AI组件上进行重大投资,这些组件使您的代理实际工作...这就是您可以创建竞争差异化的地方: ```
- Sure, here's the translation:
```html
安全性:AI代理应仅在用户引导下运行并控制访问权限。实践中,这意味着需要通过OAuth集成、单点登录提供商、缓存的刷新令牌等一系列措施。做到这一点非常重要。
- Sure, here is the translated text in simplified Chinese while keeping the HTML structure:
```html
数据连接器:AI代理通常需要来自源系统的实时数据才能运作。这意味着需要与API和其他连接协议集成,通常涉及内部和第三方系统。这些集成需要初始构建和随时间的维护。
``` - Sure, here is the translated text in simplified Chinese:
```html
用户界面:除非用户能够跟随和审计AI代理的工作(通常在用户与代理交互的前几次,随着时间的推移而急剧减少),否则用户将不信任AI代理。最好是每个代理发出的工具调用都有一个专用的交互式界面,这样用户就可以跟随代理的工作,并与之交互,帮助建立对其推理行为的信心(即浏览语义搜索结果中返回的每个元素的内容)。```
- ```html
长期记忆:AI代理默认只会记住当前的工作流,最多记住一定数量的标记。跨工作流(有时甚至跨用户)的长期记忆需要将信息提交到内存,并通过工具调用或将记忆注入提示来检索它。我发现代理在决定要记住什么方面并不十分擅长,并且依赖于人类确认信息是否应该被保存。根据您的使用情况,您可以让代理决定何时将某些内容保存到内存中,就像 ChatGPT 一样。
``` - 评估:建立一个评估您的AI代理的框架是一个令人沮丧的手工任务,永远也无法完全完成。代理有意地是非确定性的,这意味着根据提供的方向,它们会寻求提供最佳工具调用序列来完成任务,并在每一步之后进行推理,就像学步的婴儿一样。评估这些序列有两种形式:代理的工作流程在完成任务方面的整体成功,以及每个工具调用的独立准确性(即搜索的信息检索;代码执行的准确性等)。我发现衡量整体工作流程性能的最佳方法,也是唯一的方法,是创建一组客观/完成对,其中客观是提供给代理的初始方向,而完成是代表完成客观的最终工具调用。捕获代理的中间工具调用和想法有助于理解失败或仅仅是工具调用序列的变化。
Sure, here is the translated text in simplified Chinese, while keeping the HTML structure intact:
```html
注意
```
考虑将此列表视为正式的创业请求。如果能做得好,围绕这些项目的产品可以推动未来的发展。
Sure, here's the translation in simplified Chinese while keeping the HTML structure: ```html 7. 不要押注于模型继续改进 ```
```html
在构建您的代理程序时,您会不断受到诱惑,过度适应您正在构建的主要模型,并削弱您对代理程序的推理期望。抵制这种诱惑!模型将继续改进,也许不会以我们目前所处的疯狂速度,但肯定比过去的技术浪潮更高的速度。客户将希望代理程序在其首选AI提供商的模型上运行。而且,最重要的是,用户将期望在您的代理程序中利用最新和最优秀的模型。当gpt-4o发布时,我在OpenAI API中的生产帐户中运行了它,仅在其可用时间的15分钟内。在模型提供商之间具有适应能力是竞争优势!
``````html 8. 奖励课程总结 ```
Sure, here's the translated text in simplified Chinese while keeping the HTML structure: ```html
这篇文章聚焦于更多的战略和产品导向的经验教训。我计划在未来的一篇文章中更深入地探讨一些代码和基础架构的经验教训。以下是一些预告:
```- 需要矢量相似度搜索吗?从Postgres中的pgvector开始。只有在绝对必要时才转向矢量数据库。
- Sure, here's the translation: ```html 开源模型尚未理性良好 ```
- Sure, here's the translated text in simplified Chinese, while keeping the HTML structure intact:
```html
助手 API 很奇怪。它抽象了许多感觉应该保持独立的东西(如平面文件 RAG、对话令牌限制、代码解释器等)。请 OpenAI,只需使代码解释器成为我们在运行完成时可以启用的可选工具。
``` - Sure, here's the translated text in simplified Chinese while keeping the HTML structure: ```html 不要过早优化成本 ```
- 在处理人工智能延迟时,流式令牌是用户的一个很好的折中方案。
- Sure, here's the translation in simplified Chinese while keeping the HTML structure:
```html
代理商是魔法!一旦你乘坐风投赞助的滑雪缆车到达充满期望的山顶,然后在幻灭低谷中滑雪,你将会被生产力高原所惊艳。