以下最佳实践可帮助您构建强大的代理。
自然语言的 playbook 名称
Playbook 名称应清晰、描述性强,并使用自然英语。这有助于提高 AI 生成器在运行时的性能。 例如,“客户帮助中心行动手册”就比“company_specialist”好。
所有名称的长度都不得超过 64 个字符,包括英文字母和空格。
简洁的目标
目标应简明扼要地说明 playbook 的用途。
提供优质说明
指令应:
- 反映解决最终用户问题的分步方法
- 是简明扼要的自然语言句子,包含高级指令
- 直截了当,并指定工具的使用场景
每个剧本至少一个示例
您应为每个剧本至少提供一个示例,但建议至少提供四个。示例应包含正常路径场景。
如果没有足够的示例,剧本很可能会导致不可预测的行为。如果您的 playbook 未按预期响应或运行,很可能是因为缺少示例或示例定义不当。 尝试改进示例或添加新示例。
说明和示例的精确度
虽然清晰且描述性的指令有助于提高准确性,但真正决定剧本行为准确性的还是示例的质量和数量。 换句话说,与其编写非常精确的说明,不如花更多时间编写详尽的示例。
在示例中引用工具
如果剧本旨在通过使用工具来提供回答,请在与此类请求对应的示例中引用工具。
工具架构 operationId
字段
为工具定义架构时,operationId
值非常重要。您的指南说明将引用此值。
以下是针对此字段的命名建议:
- 只能包含字母、数字和下划线。
- 在架构中描述的所有
operationId
中必须是唯一的。 - 必须是反映所提供功能的有意义的名称。
工具架构验证
您应验证工具架构。 您可以使用 Swagger 编辑器检查 OpenAPI 3.0 架构语法。
处理空工具结果
如果 playbook 依赖于某个工具来确定其响应,那么空的工具结果可能会导致 playbook 行为不可预测。有时,playbook AI 生成器会在回答中虚构信息,而不是提供工具结果。为防止这种情况,您可以添加具体说明,确保 playbook AI 生成器不会尝试自行回答。
在某些使用情形下,playbook 回答需要基于工具结果或提供的数据,并且需要缓解仅基于 playbook AI 生成器知识的回答。
用于减少幻觉的指令示例:
- “您必须使用该工具回答所有用户问题”
- “如果您未从工具中获得任何数据,请回答说您不知道用户查询的答案”
- “如果未从工具中获得任何数据,请勿编造答案”
使用 Gemini 生成架构
Gemini 可以为您生成架构。 例如,您可以尝试“你能为 Google 日历创建一个 OpenAPI 3.0 架构示例吗?”。
专注型 playbook
避免创建非常庞大且复杂的 playbook。 每个 playbook 都应完成一项明确的具体任务。 如果您有复杂的 playbook,请考虑将其分解为更小的子 playbook。
避免循环和递归
在指令中关联代理时,请勿创建循环或递归。如果您尝试路由到直接或间接调用当前 playbook 的祖先 playbook,可能会发生循环。
为示例提供路由信息
如果某个 playbook 应路由到另一个 playbook,您应向示例提供此信息。这是从输入和输出示例部分的结束示例(含输出信息)字段提供的示例。
例如,此字段的最后一句话可以是“重新路由回默认的 playbook 以进行进一步查询。”。
使用 Conversational Agents (Dialogflow CX) Messenger JavaScript 函数进行个性化设置
使用 Conversational Agents (Dialogflow CX) Messenger 时,以下函数可用于将用户个性化信息从网页界面发送到 playbook:
规划效果
生成式功能通常需要几秒钟甚至数十秒才能生成回答。虽然剧本可以增强对话的自然度,但必须管理回答时间,以保持良好的最终用户体验。以下是一些可用于优化效果的策略:
平衡生成式功能的使用
请仔细权衡执行多项生成式功能所需的时间与这些功能为对话带来的价值。如果这些功能对实现用户目标没有显著贡献,请避免过度使用。
尽量减少生成式功能输入
尽量收集和处理 AI 生成器生成实用回答所需的最少信息量。这可以显著缩短处理时间。
使用上下文缓存
如果您通过工具使用 Gemini,并且初始上下文较大,请使用 Vertex AI 上下文缓存来探索缓存信息,以避免重复请求相同的数据。针对速度实现固定响应:
如果您的应用不需要独特的动态内容,请考虑将常用回答存储在 Firebase 等传统数据库中。由于这些固定回答是预定义的且随时可用,因此与需要临时计算答案的生成式功能相比,它们可提供更快的响应速度。
指示 AI 生成器生成简洁的 playbook 回答
对于文本输入和输出,AI 生成器的响应时间在很大程度上取决于所使用的模型和输出长度。简短的回答可以显著提高性能。虽然输入长度也是一个因素,但输出长度的影响更大。