【最佳实践】Anthropic:Agentic系统实践案例

上一篇文章---《【最佳实践】Anthropic:如何构建有效的 Agent,详述了Agentic系统中Workflow和Agent的基本模式和常见场景,本篇继续分享附录中的内容------Agentic系统实践案例与通过提示词工程使用工具

TL;DR

适用于 Agentic 系统的场景特点

  • 既包含对话又包含任务执行
  • 具有明确的正确标准
  • 支持反馈迭代
  • 具有人工监督

Agentic系统实践应用:

  • **客户支持场景:**结合对话式界面与外部工具,适用于需要获取信息、处理操作和反馈的任务,能通过明确的成功标准衡量效果。
  • **编码Agent:**软件开发中使用Agent进行代码自动化验证和问题解决,通过测试结果迭代优化,确保输出质量,并依赖人工检查确保解决方案符合系统需求。

提示词工程与工具使用:

  • 工具是Agent的重要组成部分,使其能与外部服务API互动
  • **优化工具格式:**使格式符合模型处理习惯,避免多余的格式复杂性。
  • **经验建议:**提供足够的tokens让模型思考,优化工具定义(示例用法、边界情况等),并测试模型与工具交互的表现。
  • **减少错误的工具设计:**通过优化参数和工具定义,避免模型使用中的常见错误。

原文翻译

附录 1:实践中的 Agent

我们与客户的合作揭示了 AI Agent 的两个特别有前景的应用,它们证明了上述讨论模式的实际价值。 这两个应用程序都说明了对于既需要对话又需要执行、具有明确的正确标准、支持反馈迭代以及结合有意义的人工监督的任务,如何最大地发挥 Agent 的价值。

A. 客户支持场景

客户支持场景将聊天机器人界面与通过工具集成的增强功能相结合。 这个场景很适合更开放的 Agent,因为:

  • 客户支持场景很自然地遵循了对话流程,同时需要访问外部信息和操作
  • 可以通过集成工具来提取客户数据、订单历史记录和知识库文章
  • 可以以编程方式处理诸如发放退款或更新工单之类的操作;以及
  • 可以通过用户定义的解决方案清楚地衡量成功

一些公司通过基于使用情况的定价模式(仅对成功的解决方案收费)证明了这种方法的可行性,从而显示了他们对其 Agent 有效性的信心。

B. 编码 Agent

软件开发领域显示了 LLM 功能的显著潜力,其能力从代码补全发展到自主问题解决。 Agent 特别有效,因为:

  • 可以通过自动化测试验证代码解决方案;
  • Agent 可以使用测试结果作为反馈来迭代解决方案;
  • 问题空间是明确定义的和结构化的;并且
  • 可以客观地衡量输出质量。

在我们自己的实现中,Agent 现在可以在 SWE-bench Verified 基准测试中仅基于拉取请求描述来解决实际的 GitHub 问题。 然而,虽然自动化测试有助于验证功能,但人工检查对于确保解决方案符合更广泛的系统需求仍然至关重要。

附录 2:通过提示词工程使用工具

无论您构建哪个 agentic 系统,工具都可能是 Agent 的重要组成部分。工具(Tools)使 Claude 能够通过在我们的 API 中指定其确切的结构和定义来与外部服务和 API 交互 。当 Claude 响应时,如果它规划使用工具,它将在 API 响应中包含一个 工具使用块tool use block)。工具定义和说明应该与您的整体提示词一样受关注 。 在这个简短的附录中,我们将介绍如何通过提示词工程使用工具

通常有几种方法可以指定相同的操作。 例如,您可以通过编写 diff 或重写整个文件来指定文件编辑。 对于结构化输出,您可以在 Markdown 中或 JSON 中返回代码。 在软件工程中,这些差异都是表面的,并且可以从一种格式无损地转换为另一种格式。 然而,对于 LLM 来说,某些格式比其他格式难得多。 编写 diff 需要知道在编写新代码之前,代码块标题中有多少行正在更改。 在 JSON 中编写代码(与 Markdown 相比)需要额外转义换行符和引号

我们关于决定工具格式的建议如下:

  • 在模型开始执行之前,给模型足够的 tokens 来"思考"
  • 使格式接近于模型在互联网文本中自然看到的内容
  • 确保没有格式的"额外开销",例如必须准确计算数千行代码,或字符串转义它编写的任何代码

一条经验法则是考虑在人机交互(HCI)上花费了多少精力,并计划投入同样的精力来创建一个好的 agent-计算机交互(ACI)。 以下是一些关于如何做到这一点的想法:

  • 站在模型的角度思考。 基于描述和参数,使用此工具是否显而易见,或者您还需要仔细的思考? 如果是这样,那么对于模型来说可能也是如此。 良好的工具定义通常包括示例用法、边界情况、输入格式要求以及与其他工具的明确边界。
  • 您如何更改参数名称或描述以使事情更明显? 将此视为为团队中的初级开发人员编写一个很好的文档。 当使用许多类似的工具时,这一点尤为重要。
  • 测试模型如何使用您的工具 :在我们的 workbench 中运行许多示例输入,以查看模型会犯哪些错误并进行迭代。
  • 让你的工具避免出错Poka-yoke your tools)。 更改工具参数,使其更难犯错。

在为 SWE-bench 构建我们的 Agent 时,我们实际上花费了更多的时间来优化我们的工具,而不是整体的提示词。 例如,我们发现,在 Agent 删除根目录后,模型在使用相对文件路径的工具时会犯错误。 为了解决这个问题,我们将工具更改为始终需要绝对文件路径------我们发现模型完美地使用了这种方法。


感谢阅读到这里,如果这篇文章对你有所帮助,欢迎关注【算法工程笔记】公众号!

相关推荐
迅易科技23 分钟前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神1 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长2 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME3 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董5 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
mahuifa5 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai