Example: Inline Citations with RAG

DEX801 - 自定义 Lightning 类型(上)

📄 第 247 页 🎬 视频课程

课程章节介绍

好,咱们来看这一个知识点——用 Apex 代码实现带内联引用的 Agent 回答。这个类的名字叫 `KnowledgeaseApex`,它是怎么做到的呢? 想象一下,用户问了一个问题,我们要从知识库里找到答案,并且还要告诉用户“这个答案是从哪里来的”,这样用户才能信任我们。这个类就专门用 RAG(检索增强生成)的方式,把引用直接嵌入到回复里,用户一眼就能看到出处。 首先,核心的 `execute()` 方法,它会通过 Connect API 去调用一个提示模板。这里有一个关键设置:`citationMode` 被设成了 `"Post_generation"` 。啥意思呢?就是系统在生成答案之后,会自动检测哪些内容需要引用,然后帮我们把引用标上去。这就省得我们自己去做复杂的引用标记逻辑了。 不过,Connect API 返回的引用格式,和 Agentforce 平台期望的格式不太一样。所以这里还有一个 `transform()` 辅助方法,它的任务就是把 Connect API 给的那种引用结构,转换成 Agentforce 自己能识别的 `AiCopilot.GenAiCitationInvestment` 格式。你可以把它想象成一个翻译官,让两边数据能对上号。 那这个方法怎么被 Agent 调用呢?注意,它有一个 `@InvocableMethod` 注解,名字叫 `executePrompt`。这让它变成了一个可以配置在流程里、或者被 Agent 直接当作操作来调用的入口点。当用户提问后,Agent 就会触发这个方法,把问题传进去。方法内部会去调用提示模板、拿到生成的文本,再把引用转换好,最后同时返回两样东西:一个是带着内联引用的回答文本,另一个是结构化的引用源列表。 这样,当 Agent 把回复展示给用户时,用户不仅能看到答案,还能在文字里直接看到引用的序号或标记,再配合下方的“来源”区域,整个回答就非常透明、可信了。这就是 `KnowledgeaseApex` 类演示的完整内联引用实现方式。 简单总结就是:一个方法接问题,调模板生成答案并自动加引用,再用另一个方法把引用格式转换一下,最后一起返回给用户,让回答有据可查。

关键词

Agentforce Salesforce