[DEX801]Agentforce Developer Guide

DEX801 认证培训课程

课程介绍

Agentforce Developer Guide — 涵盖 Agent、Agent Script、Agentforce DX、APIs、Actions、Models、Prompt Builder、MCP 等全栈开发内容,共 273 页

课程列表

本目录下共有 21 个课程

  • 1

    Agentforce 入门指南

    嗨,同学们,欢迎来到《Agentforce 开发人员指南》的第一课。我是你们的Salesforce老师,今天咱们用最轻松的方式,把这一页Slide的内容一点点拆开,保证你听完就懂。 你可能会问:“Agentforce到底是什么?怎么把生成式AI用到Salesforce里?”别急,这次演示就是专门回答这些问题的。我们会把在Salesforce平台上用好Agentforce和生成式AI所需要知道的关键点,全部梳理清楚。 具体来看,我们这节课会聊四件大事。 第一,Agentforce的核心概念。我会用最直白的话告诉你,Agentforce到底是个什么东西,它为什么能帮我们更聪明地工作。别担心,没有乱七八糟的术语,就像讲故事一样。 第二,怎么设置Einstein生成式AI。也就是说,我们手把手让AI真正在你的环境里跑起来。你不用去啃厚厚的配置文档,我会把步骤变得特别简单。 第三,用Salesforce CLI快速创建一个临时组织。这个“临时组织”你可以理解为一片随用随建的实验田,可以让你安全地开发、测试Agentforce功能,完全不影响正式环境。用一句命令行就能搞定,特别酷。 第四,也是必须重视的一点,就是了解Einstein信任层。它就像一道隐形的安全屏障,默默守护着你的数据,确保敏感信息不会泄露,让你用AI用得安心。 好,那接下来咱们就一个一个展开讲。准备好了吗?我们马上进入下一个细节。

  • 2

    Agentforce 实战示例

    我们开始。今天这一页,我先带大家快速回顾一下Agentforce平台,咱们在深入具体例子之前,心里得有个清晰的框架。你可以把Agentforce想象成Salesforce平台上一个全新的“代理驱动层”,它的目的,就是帮你部署那些能和员工并肩工作的AI代理。你的同事不只有人类,还有AI代理,它们能帮你处理任务。 那我们来认识一下搭建和管理这些代理的主要工具。第一个叫Agent Script,它是在Agentforce Builder里使用的,是一种声明式的构建方式,你不需要写复杂代码,就能在图形化界面里搭出一个代理。第二个是给专业开发者用的,叫Agentforce DX,它提供命令行工具和VS Code里的插件,适合那些习惯用代码管理整个开发生命周期的团队。接下来还有Agentforce API和SDK,你可以把代理能力集成到你现有的应用里。最后是Agentforce Actions,代理具体能干哪些活儿,就是靠这些动作来定义的。 另外,有一个重要的术语更新需要你记住:从2026年4月开始,我们之前说的“代理主题”这个词,正式改名为“子代理”。放心,只是名字变了,功能没有任何改变,你之前学到的操作方式完全继续有效。这一页知识很简单,就是帮你建立一个整体的工具箱印象。好,那下一节我们再进入具体例子。

  • 3

    Agent Script 入门

    好,我们来看这一页幻灯片,主题是 ,Agent Script,。 你可能一听“脚本”两个字就有点紧张,觉得这需要写代码。我们先别急着想代码,先理解它到底在帮我们解决什么问题。 我们之前说过,Agentforce 里构建智能代理的时候,很多时候靠大语言模型(LLM)自己去理解指令并执行。这个很灵活,但问题是有时候不够可靠——比如有些业务规则非常固定,需要保证,每次按照同样的步骤走,,不希望模型自由发挥。 Agent Script 就是为了这个场景设计的,它是在 Agentforce Builder 里用来,构建代理工作流的一种语言,。这个语言很聪明,它把两种东西结合起来了: - 一种是,自然语言的指令,,写起来像说话一样灵活,你能直接告诉代理“先问候客户,再询问订单号”。 - 另一种是,接近编程的表达方式,,可以用来精确地处理业务规则,比如“如果订单状态是已发货,就查询物流;如果未发货,就转人工”。 这样做的好处是什么呢?就是让你的代理工作流程既,可预测,,又,能够感知上下文,,不会每次给同一个输入得到完全不同的处理路径。也就是说,你用 Agent Script 定义好的流程,代理会严格执行,同时它还能在每一步里利用大模型的智能去理解用户意图、提取信息等。 另外这里一个备注也很重要:从 ,2026年4月, 开始,“代理主题”这个东西会更名叫“子代理”。名字变了,但功能没有任何改变,所以你看见新旧名称的时候知道它们是同一个东西就行。 简单总结一下,Agent Script 就是帮你把“死板的业务规则”和“灵活的自然交互”结合在一起,让代理既聪明又靠谱。后面我们会具体看看这个脚本语言怎么写,其实比你想的简单很多。 好,这页就讲到这里,大家先有个印象,有疑问随时提。

  • 4

    Agent Script 语言基础

    好,同学们,我们打开这一页,聊聊Agent Script的几个核心语言特征。我会尽量说得简单一点,让你们听起来不费劲。 首先你要知道,Agent Script是Salesforce专门为构建Agentforce代理而打造的一门语言。它不是那种通用的编程语言,而是专门瞄准了“怎么让AI代理听话又聪明”这个目标。 好,我们来看它的第一个特征:它是编译的。编译是什么意思呢?就是你写好的Agent Script代码,不会直接一行行解释执行,而是会先被翻译成一种更高效的机器可以快速执行的格式。这么做的最大好处就是运行稳定、性能有保障,不会像某些脚本那样跑到一半才报错。编译的过程还能帮你提前发现一些语法问题,相当于先做一次安全检查。 第二个特征特别重要,也特别有意思——它把决定论和LLM推理结合在了一起。决定论你可以理解成那些确定的、铁板钉钉的逻辑,比如“如果你听到客户说退款,那就转到退款流程”,这条路是固定的,不会变。而LLM推理呢,就是大语言模型那种灵活的理解和生成能力,比如能听懂客户那句“我买的东西不大对劲儿”其实也是想退款。Agent Script可以让你在一个代理里,既用确定性的流程控制住业务边界,又随时把理解不了或者需要创意的那部分交给大模型去处理,这两个部分无缝地写在同一套代码里,非常强大。 紧接着,Agent Script包含了声明性和过程性两种元素。声明性就是“告诉系统你想要什么,别管我怎么实现”,比如你定义一个代理的目标、它的名字、它的主要能力,这些都是声明。而过程性就是一步步的命令,像“先打招呼,再问订单号,然后查物流”,这就是过程。以前有些工具要么全是声明,要么全是过程,但Agent Script把两种风格揉在了一起,你可以根据场景自由选择,写起来很顺手。 然后,这门语言是面向人类阅读设计的,就是所谓的“人类可读”。它的语法刻意做得贴近自然语言,不用你死记硬背一堆奇怪的符号。你扫一眼代码,大概就能明白这段在干什么,不管是业务人员还是开发人员,阅读门槛都大大降低,维护起来也轻松不少。 再一个特征是它基于属性。这个你可以想象成,代理的很多行为和配置,是通过一个个“属性”来描述的,有点像填表或者设置参数。比如说这个代理叫什么名字、它的描述、它允许调用哪些工具,都可以用属性的方式写出来,结构非常清晰,Salesforce平台本身就很擅长用元数据、用属性来驱动,Agent Script继承了这一点。 最后,它采用空白敏感的缩进,就像Python或者YAML那样。也就是说,代码块不用大括号,而是靠缩进来表示层级。你写的时候,该缩进的地方按一下Tab或者空格,结构就出来了。这样做的好处是强制代码整齐,任何人写的代码看起来风格都差不多,而且没有乱糟糟的括号,整个文件就像一份干净的大纲,特别适合阅读和讲解。 好了,总结一下这页的内容:Agent Script是一门编译的、融合了确定性逻辑和大模型推理、兼具声明与过程式风格、人类易读、基于属性,并且用缩进组织代码的语言。掌握这几个特征,你就抓住了这门语言的灵魂。下一节我们会看看它的具体语法长什么样,休息一下,马上回来。

  • 5

    Agent Script 常用模式

    同学们,我们来看这一节。这一节要讲的是构建代理时的一些常见模式。什么叫模式呢?就是一些固定套路,一些被反复验证过的好方法,让你做出来的代理更靠谱、更有效。 这些模式呢,我特意用代理脚本来展示。因为脚本视图里,代码结构清清楚楚,你直接复制粘贴就能用,非常方便。不过你也别担心,如果你更喜欢用Canvas视图拖拽搭建,这些思路同样适用,只是表现形式不一样而已。 简单说,就是给你一套拿来即用的技巧合集,学了就能让你的代理更聪明、更稳定。我们一个一个来看。

  • 6

    Agent Script 参考手册

    同学们,咱们今天来看看代理脚本的语法和一些最基本的概念,这一页就像个“地图”,帮我们快速摸清后面的路该怎么走。 先看左边这个语法表,就几个符号,但特别重要。第一个是井号`#`,你把它当成你在脚本里给自己留的小笔记就行,代理读到它就会直接跳过,纯粹是给我们看的。 然后是箭头`->`,它表示“逻辑指令”,比如告诉代理“去做这个”“去检查那个”,相当于下达一个行动命令。 再往下是竖线`|`,这个专门用来写“提示指令”,比如说你给代理一个自然语言的提示,让它理解你想干什么,用竖线开头最方便。 还有一个很常用的,就是艾特符号`@`。你后面会经常见到`@`后面跟上操作名、子代理名、变量名或者输出名,意思就是“调用”或“引用”那个东西,就像喊它的名字让它出来干活。 最后还有一个工具引用,也是类似的引用方式,不过专门指向我们配好的实用工具。 这些符号就像是代理脚本里的标点,知道了它们,你再看脚本就能马上分出哪是注释、哪是命令、哪是提示了。 右边呢,列出了一串概念,动作、推理后、块、条件、推理指令……这些都是我们后面会一个个深入讲的内容。现在你只需要心里有个印象就行,比如“块”就是把一组指令打包,“条件”就是让代理在不同情况下走不同的路,“子代理”就像是把小代理请过来帮忙。每一样都是让咱们的代理变得更聪明的积木。 好,符号认全了,关键词也眼熟了,待会儿我们一个一个拆开,保证你都能玩转。

  • 7

    Agentforce DX 开发

    同学们,今天我们来聊聊Agentforce DX。你们可能已经听说过Salesforce DX,它是一套让我们在Salesforce平台上构建、测试和发布应用的工具。那Agentforce DX呢,就是专门为“代理”扩展出来的工具包,相当于给DX插上了代理的翅膀。 想象一下,平时你可以在Agentforce Builder里点一点、拖一拖,就能建一个代理出来,很方便。但是,在真正的现代开发流程里,尤其是DevOps团队,一切都要有版本控制,所有东西都得像代码一样存到Git仓库,确保可追溯、可回滚。代理也一样,它本身就是一种元数据,就像你自定义的字段、对象、Flow一样。 这时候Agentforce DX就派上用场了。它提供了一堆命令行工具(CLI)和VS Code插件,让你不用总窝在Agentforce Studio图形界面里,而是在你熟悉的终端或编辑器里,就能创建、预览、测试代理。更棒的是,你还可以用这些命令把代理的元数据从一个环境迁移到另一个环境,比如从开发环境推到UAT再上生产,全程都走版本化、自动化的流程。这样,代理的开发就完全融入你们团队已有的CI/CD流水线,靠谱又高效。 好啦,这就是Agentforce DX的核心价值——让代理开发从“点点做做”升级到专业DevOps模式。下节课我们来实际敲几个命令试试。有疑问随时提出来哦。

  • 8

    测试 Agent

    好,我们来看这一页,讲的是测试 Agentforce 代理的两种方式,以及一个很重要的观念。 先说说老方法,咱们叫它遗留过程。打个比方,这就像你装软件时,会用到里面自带的、已经写好的测试工具。在 Agentforce 里,就是那个 Legacy Agentforce 测试中心,它提供了一套“预代码”——你可以理解成提前帮你准备好的测试代码片段。你要做的呢,就是透过这些预代码,向你的代理发一些话语,然后检查代理的回答和行为,是不是跟你预期的一样。 那新方式是什么呢?就是用 Agentforce DX 来做测试。这就相当于在你自己的开发组织里,打开测试中心的界面,不过这次用的是“亲代码”——意思是你得亲手去写测试逻辑,更加灵活,也能更贴近真实场景。不管是新方法还是老方法,核心动作都一样:发送话语,验证行为。 但是同学们要记住一点,不管用哪种方式,测试代理绝对不是一个一次性的事情。它就跟我们开发任何软件一样,是一个不断反复、不断打磨的迭代过程。你第一次测可能发现,哎,代理理解错了,那你回去调整一下代理的配置或提示词,再测,再调整,这样一圈一圈地转,直到代理表现得很靠谱为止。 所以简单总结:老路子用预代码测,新路子用亲代码测,但都要反复对话、反复验证,让代理在迭代里越变越聪明。

  • 9

    管理 Agent

    同学们,咱们来看一下怎么在 Agentforce 里管理代理的状态。其实很简单,你不需要每次都跑到网页界面里去点来点去。我们可以直接从 VS Code,或者用命令行来激活或停用一个代理。 一旦你激活了代理,它就会立刻出现在你配置好的那些连接渠道上,比如你的官网聊天窗口、手机应用或者消息平台,用户就能直接跟它对话了。而当你停用某个代理时,系统会先关闭所有正在进行中的用户交互,然后代理就不再对外可用了。所以停用之前最好确认一下,是不是还有用户在对话,免得把人家聊一半的会话给掐断了。 另外还有一个很方便的功能:你可以直接通过 VS Code 或命令行,就把代理在你们组织的 Agentforce Builder 界面里打开。也就是说,你不用到处找那个设置页面,敲一条命令或者在编辑器里点一下,就直接进到图形化的编辑界面里,接着修改代理的逻辑、回复什么的,非常高效。 好,这就是关于代理激活、停用以及打开 Builder 的操作方式,大家可以在工具里自己试一下。

  • 10

    Agentforce APIs

    同学们好呀,这节课咱们不钻细节,先拉开距离,看看 Agentforce 整个 API 和 SDK 地图长什么样。你只要记住,所有工具都围着三件事转:构建代理、测试代理,还有跟代理聊天、使用代理。 咱们先说,构建代理,。如果你更习惯用低代码或者简单脚本,那 Agent Script 就是给你准备的,它能让你轻松定义代理该说什么、怎么回应。那专业开发者呢,就去看 Agentforce DX,一套命令行工具,方便你 debug、打包、协作。还有 Python 开发者,可以直接用 Python SDK,在 Python 环境里把代理的能力调用起来,很趁手。每一种工具都面向不同的角色。 接下来是,测试代理,。代理建好了,可不能直接放出去乱说话。咱们有测试 API,可以写代码自动跑回归测试;Agentforce DX 里也内置了测试功能,开发的时候随手就能验;另外还有个测试中心,界面友好,让不太写代码的业务同学也能看懂代理表现好不好。这样开发、测试、业务三方都能安心。 最后一块是,聊天使用代理,。要让代理真正工作,就要用 Agent API,你的应用能直接和代理对话。如果想深度嵌到自己公司的微信、App 或者网页里,就得靠自定义连接。移动端的同学,我们有专门的移动 SDK,在 iOS 和安卓上都能丝滑集成。还想让对话更炫一点儿,加点卡片、按钮什么的,增强聊天的能力也都在里面。 所以你看,整个生态不管你是管理员、Python 开发者、测试工程师,还是移动端开发,每个人都能找到自己趁手的家伙。这一页就想让你心里有个谱:哪个阶段该用哪个工具,它大概为谁设计的。有了这张全景图,后面咱们拆开讲每个工具的时候,你就不容易迷路了。好,我们先对这三大块儿有个印象,休息一下,接下来再一个个细聊。

  • 11

    Test Agents API

    同学们,我们来看这一页幻灯片,讲的是如何用编程的方式来定义Agentforce的测试。 你可能之前试过在界面上手工配置测试,但如果要批量创建或者版本管理,我们就需要更程序化的方法。Salesforce提供了一个元数据API类型,叫做AiEvaluationDefinition,用它就可以用代码来结构化地定义一套测试。 这个定义里,每个测试都包含两组东西:一组是输入,一组是期望的输出。 输入这边,很简单,就是你跟代理说的话,也就是“话语”,再加上当时可能用到的上下文变量,还有对话的历史记录。这样就能模拟一个真实用户和代理互动的完整场景。 期望这边呢,就是你要求代理应该怎么做。我们可以定义一些标准化的行为,比如代理应该调用哪个子代理,应该触发哪个动作,或者对它的回复做一个整体的评级。另外还有质量度量的期望,比如回复是不是前后一致、内容完不完整、是不是足够简洁、响应速度延不延迟等等。 这样一来,你就可以把所有这些测试用例写成一个结构化的定义文件,然后用元数据API部署到环境里,实现自动化测试和持续验证。是不是比一个个去点界面方便多了? 好,这就是这页的重点,大家理解了吗?我们继续下一部分。

  • 12

    创建客户聊天

    同学们,大家好,我们接着来看今天这一页幻灯片,它讲的是 Enhanced Chat v2,也就是增强型聊天第二版。 咱们可以先把它理解成 Service Cloud 上面向客户的一个全新的聊天界面版本。原来我们也有 Enhanced Web Chat,就是增强网页聊天,而现在这个 v2,是在之前基础上的一个重大升级。它们俩有一个共同的目的,就是允许你把服务代理,比如真人客服,或者是咱们现在大力推广的 Agentforce 智能代理,连接并部署到外部的聊天渠道上。比如你的企业网站、移动 App,只要对方能接收聊天,就能把 Salesforce 里的客服能力搬过去。 那 Enhanced Chat v2 具体新在哪里呢?幻灯片里提到三点特别实用的能力。 第一,它支持使用自定义的 Lightning Types。这是什么意思呢?Lightning Types 可以理解成聊天窗口里的各种“零件”,比如按钮、输入框、头像这些组件。以前我们要修改聊天窗口的样子,挺受限制的,现在 v2 允许你自由地替换这些零件,用自己写的 Lightning 组件来定制界面,你想把聊天窗口打扮成什么样都行,更贴合品牌形象,也更灵活。 第二,它支持利用 utilAPI 里的 setSessionContent 方法,来发送上下文事件。听起来有点绕,其实很简单。很多时候,客户从你的商品页面点开聊天,你肯定希望客服或 Agentforce 马上知道他正在看哪款产品、甚至他之前有没有下过单。这个 utilAPI 就是一套工具方法,setSessionContent 可以在对话开始之前,把像“客户在浏览的商品ID、页面标题”这样的上下文信息,悄悄地传给聊天会话。这样一来,代理一接入就能看到客户在干嘛,不用再问“请问您看的是哪款产品”,省时又贴心。这就是所说的“上下文事件”,就是带着背景信息来触发聊天。 第三,内联模式的 UI 定制。原来的聊天窗口,多半是弹出一个浮动的气泡,或者一个新网页。而内联模式呢,能让你把聊天客户端直接嵌入到网页上某一个具体的元素里面,比如你专门设计了一个“联系我们”的版块,聊天框就像一张图片一样,嵌在那个格子里,跟页面融为一体。这就给前端设计师更大的发挥空间,让聊天体验更自然,不突兀。 所以总结一下,Enhanced Chat v2 就是让我们把服务代理部署到网站时,界面更可定制、传递客户信息更聪明、嵌入方式更灵活。无论是给人工客服用,还是给我们 Agentforce 智能代理来接待客户,它都能提供一个更加顺滑、个性化的体验。 好了,这一页就讲到这里。大家如果觉得这些能力在你们的场景里有帮助,下一节我们会聊聊具体的配置示例。

  • 13

    管理 Data Libraries

    同学们,今天我们来看看Agentforce数据库这一块的内容。 简单来说,Agentforce数据库就是把人工智能和你自己那些信得过的业务数据连接起来。你想啊,AI如果只依赖公开的、通用的信息,有时候给出的答案就不够准,甚至还会胡说。但如果把AI连到你自己的客户资料、订单记录、产品信息这些可靠的数据源上,那它给出的结果就会准确得多,也更贴合你的实际业务。这就是Agentforce数据库要做的事情。 那怎么去管理这些数据库呢?就要说到ADL Connect API了。这个API可以让我们用编程的方式,去创建和管理Agentforce数据库,而不是只能在界面上点点点。这样,你可以把数据库的搭建集成到自己的自动化流程或者脚本里去,非常灵活。 好,那本章我们要做好哪些准备工作呢?就是这几个先决条件。你跟着一步步来就能把环境搭好。 首先你要安装Salesforce CLI。这个是什么?就是Salesforce的命令行工具,我们后面很多操作都要在终端里敲命令来完成,比如登录、创建资源等等。 然后还要装一个叫jq的小工具,它专门用来处理JSON格式的数据。因为API返回的基本都是JSON,用jq可以很方便地解析、提取我们需要的信息。 接下来,你需要有一个测试用的组织,也就是我们常说的Org。你可以创建一个Scratch Org或者用现有的开发版组织,别直接在生产环境里折腾,先用测试环境练手最安全。 还有一个重点,我们要创建一个外部客户端应用程序。这个应用需要配置好OAuth范围,也就是告诉Salesforce,这个客户端能访问哪些资源。比如,你要授权它读取数据库、管理相关服务,就得配上正确的scope。然后,你自然会拿到客户端凭证,比如client ID和client secret。 最后一步,就是拿这些凭证去换取一个访问令牌。有了这个令牌,后面的API调用才能顺利通过认证。 这些先决条件听起来可能有点绕,但其实就是准备工具、建个测试环境、拿到权限这几个事儿。你跟着做一遍就会发现,逻辑很清晰。好,这一节先到这里,我们下节继续深入配置。

  • 14

    Agentforce Actions 概览

    好,同学们,咱们这节课来看看怎么给Agentforce创建动作,还有怎么把这些动作做得更强大、更好用。这块内容其实不复杂,咱们一步一步说。 首先,创建动作,咱们有四种不同的方法。你可以用Apex REST类,这就像对外提供一个接口,让Agentforce能调到你写好的后端逻辑。或者你也可以用Apex控制器方法,这个更贴近页面,适合跟界面相关的操作。另外,你还可以直接写一个命名的SOQL查询,这样Agentforce就能直接查数据,简单直接。最后,你还可以用Apex可调用方法,这种方法特别灵活,专门就是为了让外部系统,比如Agentforce,来调用你的Apex代码。 这些就是创建动作的基础路径,你可以根据需求选适合的。 那创建好以后,怎么能让这些动作更好用呢?咱们有三个增强手段。 第一个叫Lightning Types,这是用来处理复杂界面的。如果动作需要用户填一些比较复杂的表单,或者展示一些结构化的信息,你就可以定义Lightning类型,让界面更友好。 第二个是全局副本,这个主要是为了提高可用性。你可以给动作起一个更好懂、更通用的名字和描述,这样不管是谁在哪个地方用,都能一眼看明白这个动作是干嘛的。 第三个是Apex引用,这个让你在写动作的时候,可以直接内联引用Apex代码里的片段,比如一个常量的值或者一个方法的返回类型,不用再硬编码,维护起来更省心,也更精准。 所以总结一下,创建动作有四种方式:REST类、控制器方法、命名查询和可调用方法。想让动作更好,就记住三个增强点:复杂界面用Lightning Types,通用易懂靠全局副本,精准引用用Apex引用。 好,这一章就到这里,大家消化一下,有问题随时提。

  • 15

    创建 Actions

    好,我们这节课来聊聊怎么把你自己写的Apex代码,变成Agentforce里一个聪明的“动作”,让代理可以自动调用它。这个过程中最关键的一个注解,叫 `@InvocableMethod`,可以理解成:它就是给方法贴上一个“代理可调用”的标签。 你想想,代理得知道它能做什么对吧?所以我们在一个静态方法上面写上 `@InvocableMethod`,然后给这个方法起一个好懂的标签(label)和描述(description)。这个标签和描述特别重要——代理就是靠读这两样东西来理解:“哦,这个方法什么时候该用?它是干嘛的?” 举个例子,假设你要做一个“查询天气”的动作,你可以把标签写成“获取指定城市的天气”,描述里再写清楚“输入城市名,返回实时天气信息”。这样代理在处理用户请求时,一旦判断需要天气信息,就会自动调用你这个方法。 接下来,既然是给代理用的,就得告诉它输入是什么、输出是什么。你不能用随意的方法参数,而是要专门定义一些内部类,里面的每个字段都要加上 `@InvocableVariable` 注解。同样,每个字段也要有描述,这样代理才知道“这个字段是放城市名的”“那个字段是存放温度的”。 有一个小坑要特别留意:就算你的方法一次只处理一条记录,接收和返回的也必须是,列表类型,,比如 `List<String>` 或者 `List<MyOutput>`。这是平台的要求,别写单个对象,不然会报错。 总结一下:标签和描述是成败的关键,它们是让代理“看懂”你代码的唯一线索,写得越清晰,代理调用起来就越靠谱。如果你打算做生产级的 Apex 操作,一定要去看一下官方开发博客上关于最佳实践的文章,里面有很多避坑指南和性能优化技巧。 好了,现在你应该明白 `@InvocableMethod` 是怎么把 Apex 方法和代理连接起来的了。下次课我们会看一个完整的小案例,把整个过程串一遍。

  • 16

    自定义 Lightning 类型(上)

    同学们,咱们今天来看一个特别实用的方法,叫 `getDeliveredValue`,它是实现全局复制功能的关键。你想想,用户一点复制按钮,就能直接拿到格式化好的表格,多方便。这个方法必须用 `@api` 装饰成公共的,并且一定要返回一个字符串——可以是纯文本,也可以是丰富的HTML。 我们来看一个例子,它会生成一个漂亮的HTML表格,表头和单元格都带样式,还会遍历字段定义和记录数据。整个实现有个很好记的“五步模式”。 第一步,用CSS初始化表格样式,让它看起来整齐。第二步,根据字段标签来构建表头那一行。第三步,根据记录数据来构建表格的主体行。第四步,在嵌套循环里,把匹配的字段值填到对应的数据单元格里。最后第五步,把完整的HTML字符串返回出去。 当用户点击复制时,他们得到的就是一个可以直接粘贴到Excel、邮件或者文档里、格式又美观的表格,这可比从一堆凌乱的JSON里面手动抄数据舒服多了。大家只要记住这个五步模式,以后做这类功能就轻车熟路了。

  • 17

    自定义 Lightning 类型(下)

    今天我们来看一下 Models API,它其实提供了非常实用的四个核心功能。 第一个是,Generate Chat,,也就是生成聊天。你可以想象成你给AI一个按照时间顺序排列的对话记录,里面包括用户说的话、系统提示、还有助理之前的回复。它读完这些后,就会根据上下文给出一个很贴切的回应。这个特别适合做那种多轮对话的场景。 第二个是,生成文本,,这个就更简单直接了。你给它一句提示,它就给你一个回答,没有多余的上下文。非常适合我们做一些快速测试,或者只需要一次性文本生成的情况。 第三个是,生成嵌入,。这个听起来有点技术,但其实就是把一段文本变成一组数字向量。这些数字能代表这段话的语义。当你做 RAG,也就是检索增强生成的时候,需要靠它来判断哪些内容跟用户的问题最相关,所以这个功能是实现 RAG 很关键的一步。 第四个是,提交反馈,。你可以把终端用户对回答的感受——比如好还是不好——通过这个功能存进 Data 360,帮助我们持续监控和改善模型的表现。 ,重点来了,:所有这些功能在幕后都会自动经过,爱因斯坦信任层,。这意味着它会自动帮我们做数据脱敏和毒性评分,确保使用的数据安全、合规,内容也是合适的。你不需要额外配置。 最后,每一个功能都有两种调用方式:一种是在 Apex 代码里,通过 ,aiplatform 命名空间,直接调用对应的方法;另一种是通过标准的 ,REST 端点,,这样你在任何外部系统里都可以用。所以无论你是想在 Salesforce 内部开发,还是从外部集成,都非常方便。 这四点就是 Models API 提供的核心能力,记住它们的定位和用途,后面我们实际用的时候就很清晰了。

  • 18

    Action Responses

    好,我们来看这一页,讲的是跟费率限制相关的事情。你先别被那些数字和缩写吓到,其实挺简单的。 首先,咱们Agentforce这个平台,不同的组织类型,还有不同的访问方式,能承受的请求次数是不一样的。打个比方,就像不同级别的公路,限速不一样:生产环境就相当于高速公路,可以开得快一点;而沙箱和试用环境更像市区小路,限制就会多一些。 具体来说,对于正式的生产组织,如果你用REST接口或者Apex来调用推理引擎,速率限制是每分钟2000个请求,也就是2000转/分。这足够大部分实际场景用了。 但沙箱环境就不一样了,沙箱里的Apex调用限制得非常严格,是每小时只有500个请求。注意,是每小时,不是每分钟。也就是说平均下来每分钟才不到9个请求,所以千万别在生产环境那么随意地测试。演示或试用组织就更苛刻了,每小时只有150个请求,所以用它来跑批量测试基本是不行的。 还有一点要特别提醒:目前Agentforce推理引擎在沙箱里是没有速率限制的,也就是说暂时放飞自我。但这个情况将来可能会调整,所以咱们心里要有数,别开发的时候猛跑,等将来一收紧就出问题。 接下来我们看模型API名称这部分。所有模型,包括默认提供的和自己带来的,API名称都遵循一个固定格式,就像一种命名规律:它是“sfdc_ai__Default”打头,后面再跟上跟服务商和具体模型相关的标识符。比如某个模型的API名称可能就是“sfdc_ai__DefaultOpenAI_gpt_4_turbo”这样。记住这点,以后你一看前缀就知道是在调用Agentforce的AI模型。 如果你用的是自定义模型,或者叫BYOLLM,也就是自带的大语言模型,那要找到它的API名称,就得去平台里的“AI Models”设置页面里查找,上面会清清楚楚写着。这个名字很重要,因为你接下来不管是拼REST的URL路径,还是在Apex里设置请求的属性,都得用它来准确告诉系统“我要用哪个模型”。打个比方,这个名称就像模型的身份证号,你在代码里不填对,系统就不知道你想找谁干活。 好,这一页的核心内容就是这些。你只需要记住三点:第一,不同环境限制差得远,生产慷慨,沙箱严格,试用更紧,沙箱推理暂时无限制但可能变;第二,模型名有固定前缀,很好认;第三,自定义模型得去“AI Models”里找名字,然后把它用在URL和代码里。这样后面做集成和开发的时候,就能少踩很多坑。

  • 19

    Models 概览

    同学们,我们来看看Agentforce里一个特别重要的概念——批处理模式。你可能会想,这和平时用的批处理有什么不同?其实它的设计很巧妙,所有操作都必须在同一个Apex事务里一气呵成。 具体怎么做呢?咱们慢慢聊,它分三步走。第一步,先创建一条父记录,叫AiJobRun。就像是给这次任务建了个总指挥。它的JobType字段要指定为“Prompt Template”,这说明了我们要处理的是提示模板。然后Target字段呢,要指向你那个提示模板的operName,这种命名方式对组织间的可移植性特别友好,推荐大家用。这时候,这条记录的状态是“新建”,就像一个还没启动的任务单。 第二步,我们要为这一次运行里的每一条输入记录,创建一个子记录,叫AiJobRunItem。它的Input字段稍微讲究一点——它是一个JSON字符串,但必须遵循一个前缀约定:要以“Input:”打头,然后紧跟实际的JSON数据,最后还要附上一个记录的ID作为指针,这样系统才知道要处理哪条数据。所有的AiJobRunItem刚创建出来的状态都是“Ready”,静候启动。 紧接着就是第三步,也是最关键的一步:把第一步创建的那个父记录AiJobRun的状态,从“新建”翻转成“ReadyToStart”。这一翻,就等于正式把任务移交给了平台编排器,它就会去调度、执行那些子项。但有个铁规则你必须记住:一旦翻转,不变性原则就被锁死了,你不能再对这批记录做任何更改。所以,前两步一定要小心,确保万无一失。 另外,还有一个实战中的小提醒:如果你一次运行要处理的数据量接近1万个项目的上限,最好提前在数据库里做好打包,避免撞到瓶颈。而且别忘了,这种批处理模式有新的州长限制,设计的时候要留意。好了,批处理模式的三个步骤就是这样,尽量在这个事务里把事情做对,然后放手让平台去跑。

  • 20

    Models API

    好,同学,我们来看这一页内容。它讲的是,支持MPP的人工智能解决方案是怎么工作的,以及Salesforce在背后准备了哪些“积木”供你选用。你可以把MPP理解成“多平台提供者”,它让AI能在不同系统间自如地跑腿。 整个流程非常简单,就像你每天用手机助手一样,一共就五步: 第一步,你对着人工智能应用问一个问题。 第二步,这个应用马上去连接对应的 HCP 服务器,HCP可以看作是它背后的“主机连接平台”。 第三步,服务器在目标平台——比如你的Salesforce、数据库或者别的系统上,执行你下达的请求。 第四步,处理完的结果,原路返回给人工智能应用。 第五步,应用把结果展示出来,让你看到响应。 这五步环环相扣,反应很快,你只管问,它替你跑腿。 那具体可以用哪些“主机连接平台”的服务器呢?Salesforce在三个平台上,给你准备了六种不同的HCP解决方案,每一个都很专长。 首先是Heroku,它给出一台服务器,专门让你管理应用,灵活搭建自己的逻辑。 然后是MuleSoft,它带来两个组件:Anypoint Connect,负责打通系统;还有一个平台服务器,让集成更顺畅。 最后是Salesforce平台自己,直接贡献了三种: DX LCP服务器,现在还带Beta标签,能帮你用自然语言组织命令; Vibes扩展,它充当LCP的客户端,让你在客户端就能下达指令;还有一个已经托管好的LCP服务器,重点关注安全数据访问。 容易弄混没关系,你记住HCP解决的是“连接和执行”,LCP专门管“语言命令”就好。 而且,每个解决方案都贴心附带了“示例提示”,就是现成的演示脚本,让你一眼就能看到现实世界里怎么用这些能力——比如让AI替你更新多条客户记录,或者跨系统抓报表,照着样例改改就能跑起来。 所以,这一整套设计的妙处在于:你只负责像聊天一样提需求,底层那些复杂的连接、翻译和执行,全由这些服务器和解决方案默默搞定。这样讲下来,是不是清楚多了?

  • 21

    MCP

    同学们,刚才我们聊到了模型上下文协议,也就是MCP。你可以把它理解成一种开放标准,专门用来消除过去那些自定义集成的头疼和复杂。现在,Salesforce在Heroku、MuleSoft和Salesforce平台上,已经给出了六种现成的MCP解决方案。 那这带来什么好处呢?通过MCP,开发人员可以直接使用预构建好的服务器,把AI应用跟后头的企业服务瞬间接通,这彻底改变了我们访问平台功能的方式。 更关键的是,当我们把这个能力和我们Agentforce的Vibes扩展结合起来——这个扩展本身就是一个MCP客户端——你一下子就拥有了一个超强力的、AI驱动的开发工具包。整套搭配起来,上手快、威力大,正适合咱们现在的项目。