一、认识 Prompt Builder(Get to Know Prompt Builder)
学完本单元,你将能够:识别什么让提示词有效;列出 Prompt Builder 中可用的提示词模板类型;讨论 Einstein Trust Layer 的重要性。
提示词、模板与 Prompt Builder(Prompts, Templates, and Prompt Builder)
生成式 AI 席卷了消费者世界——从几秒钟总结 500 页的书,到创作数字艺术、规划假期。企业领导者也在寻找用生成式 AI 加速销售、营销、服务等领域生产力的方法。这一切都始于有效的提示词——提示词是你与每一种生成式技术背后的大语言模型(LLM)沟通的方式。
「有效」意味着什么?对 LLM 来说,通常意味着特定于你的需求、目标和客户。看一个例子:用流行的图像生成平台 DreamStudio 重新设计一个游戏室。当你提供具体性和上下文时,生成输出会戏剧性地不同。
- 提示词:「Design my game room.(设计我的游戏室)」
- 提示词:「Design my game room with a ping pong table. Styled with a neon color scheme.(设计一个带乒乓球桌、霓虹配色的游戏室)」
所以,具体的提示词才能带来有效的提示词。但「具体」对业务来说可能是个挑战,因为它要求你把业务数据添加到提示词中。如何为每个客户或产品做到这一点?你的业务数据安全吗?这个挑战正是 Prompt Builder 和 Einstein Trust Layer 的用武之地。
Prompt Builder 帮助你创建安全地连接你与你的数据和 LLM 的有效提示词。使用 Prompt Builder,你可以安全地构建、测试和微调可复用的提示词模板,为整个业务提供快速的 AI 驱动工作流。这些模板通过合并字段、Flow、Data 360 甚至 Apex 安全地访问 Salesforce 数据。
提示词模板类型(Prompt Template Types)
Prompt Builder 提供四种模板类型,用于不同的业务工作流:
- Sales Email(销售邮件)提示词模板:帮助团队根据记录数据为客户、产品和事件起草真正个性化的邮件。
- Field Generation(字段生成)提示词模板:把生成式 AI 驱动的工作流带到 Salesforce 记录中的自定义字段。
- Record Summary(记录摘要)提示词模板:基于记录的数据为 Salesforce 记录创建富文本摘要。
- Flex 提示词模板:为其他模板类型未覆盖的业务用途生成内容,允许你定义自己的资源。
但它安全吗?(But Is It Secure?)
在 Salesforce,我们明白当 AI 与实时数据结合时,安全更加重要。Prompt Builder 使用 Einstein Trust Layer 构建安全、可信的提示词,避免向 LLM 发送敏感信息。
当你从 Prompt Builder 构建的提示词生成响应时,提示词会发送到 Einstein Trust Layer,它在把提示词发送给 LLM 之前会屏蔽(mask)任何敏感数据。当提示词通过共享信任边界发送到外部模型时,你的数据会被加密以确保传输安全。此外,提示词中的任何敏感信息都会被屏蔽。最后,基于「零保留」(zero retention)标准,你的数据永远不会存储在 Salesforce 之外。
二、创建并接地提示词模板(Create and Ground Prompt Templates)
学完本单元,你将能够:描述什么是接地(grounding);用 Prompt Builder 创建销售邮件提示词模板;给提示词模板添加资源;用 Apex 类为提示词模板提供数据。
构建销售邮件提示词模板(Build a Sales Email Prompt Template)
Salesforce 管理员 Linda Rosenberg 需要创建一个模板,让销售团队用来生成邮件,以减少团队为客户制作产品活动邀请所花费的时间。
要创建销售邮件提示词模板,你的 org 需要 Einstein for Sales、Einstein for Platform 或 Einstein for Service 附加组件,并在 Setup 中启用 Einstein for Sales。Linda 导航到 Salesforce Setup 中的 Prompt Builder,进入 Prompt Builder Explore 页面。从这里,她点击 New Prompt Template 按钮,开始完成模板类型设置。Linda 明白邮件可能发送给任何 Cloud Kicks 联系人,所以 Contact 是收件人对象。她这样完成设置:
- Prompt Template Type(模板类型):Sales Email
- Prompt Template Name(名称):Invite Customer to Local Product Event
- API Name:Invite_Customer_to_Local_Product_Event
- Template Description:Email customer to invite to local product event.
- Recipient(收件人):Contact
- Related Object(相关对象):Account
为你的模板接地(Ground Your Template)
让模板具体就能让它有效。说「具体」的另一种说法,是你的模板被接地(grounded)了。
Linda 定义好模板类型后,就在 Prompt Template Workspace 中起草并接地她的提示词。她加入了客户姓名、发件人、他们的头衔,以及活动详情:
「你是一名 Salesforce 管理员,你的名字是 Linda Rosenberg,来自 Cloud Kicks 组织。你的潜在客户是 Rob Hutchinson,Acme Inc. 的一名总监,他们位于安大略省多伦多。在邮件中,邀请潜在客户参加 9 月 18 日的活动『Floating on Clouds: Toronto Kickoff』……不超过 70 字……」
提示词看起来不错。但她的第一版草稿硬编码了单一的发件人和收件人。如果提示词只用一次那没问题,但提示词模板的概念是它可以用于任何发件人和收件人。她需要的是一种把公司 CRM 数据自动接入模板并接地的方式。好在 Linda 知道她可以用合并字段、Apex 和 Flow 作为资源,让 Prompt Builder 安全地访问 Salesforce 数据。
给提示词模板添加合并字段(Add Merge Fields to a Prompt Template)
Linda 审查她的提示词,寻找可以用合并字段把提示词从「一次性硬编码」变为「任何发件人和收件人都可复用」的地方。在 Prompt Template Workspace 中,她用 Resources 下拉选择器选择要使用的资源类型。对于销售邮件提示词模板,有多个选项可用:Current Organization、Sender、Recipient 都可用。
Linda 选择 Sender 和 Recipient,然后选择具体信息(头衔、姓名、公司等)来接地模板。完成后提示词变成这样:
「你是一名 {!$Input:Sender.Title},你的名字是 {!$Input:Sender.Name},来自 {!$Input:Sender.CompanyName}。你的潜在客户是 {!$Input:Recipient.Name},一名 {!$Input:Recipient.Title}。他们位于 {!$Input:Recipient.MailingCity}……」
(本模块中你看到的语法 {!$Resource},是一种帮助你轻松复制粘贴文本到 Prompt Template Workspace 的特殊语法,确保所有资源都留在你预期的位置。)
完成后,她注意到提示词中有一处需要调整才能显示正确响应:「Floating on Clouds: Toronto Kickoff」on September 18。在 Cloud Kicks,「Floating on Clouds」是一个全国性活动,根据客户所在城市接待本地客户。Linda 想确保模板尽可能个性化,生成邀请客户参加本地活动的邮件。她明白这部分只用合并字段不够,需要把逻辑融入模板。在 Prompt Builder 中有几种方法,包括 Apex 或模板触发的 Prompt Flow。先来探索如何在提示词模板中使用 Apex。
给提示词模板添加 Apex(Add Apex to a Prompt Template)
如果你想在提示词中使用来自 SOQL 查询或外部 API 的数据,可以考虑 Apex。Apex 也适用于生成格式良好的 JSON 或做程序化数据过滤。
在本例中,Linda 想创建一个 Apex 类,查找离给定联系人较近的活动,并返回活动名称、主题、地点和开始时间。她用 Developer Console 创建了一个名为 ContactEvents 的类,方法标注为 InvocableMethod。该 InvocableMethod 必须接受 List<Request>,其中 Request 类中定义的输入与提示词内的输入匹配;同时必须标注与模板类型匹配的 CapabilityType。
类创建好后,Linda 返回 Prompt Template Workspace,注意到 Apex 现在是一个资源。她点击 Resources 并选择 Apex 添加该类:
她把 {!$Apex:ContactEvents.Prompt} 添加到提示词中。现在 Linda 不再只引用单一活动,而是可以依赖她的 Apex 类返回离指定联系人较近的活动。
三、构建字段生成提示词模板(Build a Field Generation Prompt Template)
学完本单元,你将能够:用 Prompt Builder 创建字段生成提示词模板;创建向提示词模板发送数据的 flow;创建 Flex 提示词模板。
创建字段生成提示词模板(Create a Field Generation Prompt Template)
字段生成提示词模板是一种特定类型的提示词模板,设计用于把 LLM 生成的响应返回到记录上的特定字段。借助 Lightning App Builder(LAB),一个 Einstein 按钮可以触发指定的提示词模板,把提示词发送给 LLM,并把响应返回到特定字段。
Linda 想帮助客户支持客服快速上手服务任何 Cloud Kicks 客户。她将用字段生成提示词模板,在客服点击案例摘要字段的 Einstein 按钮时,生成相关案例评论历史的摘要。她创建新模板并完成设置:
- Prompt Template Type:Field Generation
- Prompt Template Name:Case Comments Summary
- API Name:Case_Comments_Summary
- Template Description:Summary of case details.
- Object:Case
- Object Field:Case_AI_Summary__c
在模板工作区她创建提示词:「你是一名支持代表,负责为客户与公司支持代表之间发生的案例创建简短摘要。」点击 Save 和 Activate 后,她就有了一个可用的模板。
在 LAB 中配置字段(Configure a Field in LAB)
要使用 Einstein 按钮触发字段生成提示词模板,Linda 必须在 Lightning App Builder 中配置字段。她可以拖一个 Record Detail 组件或 Field Section 组件到页面上。对于 Record Detail 组件,她必须先把组件迁移到 Dynamic Forms(在右侧面板选择 Upgrade 并按向导操作)。她可以选择任何支持字段生成的表单字段,包括可写文本、文本域、文本域(长)、文本域(富文本)等字段类型——字段生成提示词不兼容只读字段。在 Field Properties 面板的 Einstein Generative AI 部分,她选择一个 Field Generation 提示词模板分配给表单字段。
然后 Linda 保存并激活记录页面。她明白需要在提示词模板中加入实时数据才能让它相关,这可以从 flow 调用。
给提示词模板添加 Flow(上)(Add a Flow to a Prompt Template 1/2)
借助 Flow Builder,管理员可以创建模板触发的 Prompt Flow,无需写任何代码即可在提示词模板中加入复杂逻辑。Linda 在 Flow Builder 中为她的 Case Comments Summary 模板创建一个 Template-Triggered Prompt Flow。在 Start 面板输入:
- Input Type:Automatic Inputs
- Prompt Template Type:Field Generation Template Capability(与创建模板时的类型匹配)
- Object:Case
Linda 希望提示词包含案例的所有评论,所以她添加一个 Get Records 元素来检索并存储评论到集合中(Object 为 Case Comment,Field Parent ID Equals Case ID,存储 All records)。
接着她添加一个 Decision 元素,把 flow 分成两条路径:找到评论(Yes)与没找到评论(No)。她添加一个 Loop 元素在 Yes 路径上,一次处理集合中的一条评论记录。
给提示词模板添加 Flow(下)(Add a Flow to a Prompt Template 2/2)
Add Prompt Instruction 元素就像 flow 与提示词之间的直接通道——元素中提示指令里的所有内容都会直接合并到运行该 flow 的提示词中。在 Yes 路径,Linda 添加一个 Add Prompt Instruction 元素,提示指令为「Summarize the case's comments using」,并插入当前循环项的 CommentBody,把当前案例评论的文本合并进提示词。在 No 路径,她添加另一个元素,提示指令为「The case has no comments to summarize.」
当 Linda 保存并激活 flow 后,它在 Prompt Builder 中立即可用。她返回模板工作区的 Resources 列表,看到 Flows 现在是一个资源类别,选择 Get Case Summary 后,新 flow 被插入为 {!$Flow:Get_Case_Summary.Prompt}。
构建 Flex 提示词模板(Build a Flex Prompt Template)
到目前为止我们介绍了 Sales Email 和 Field Generation 模板。如果你的具体用例不符合这些模板,Prompt Builder 为所有场景提供灵活性。Flex 模板的输入不像其他模板那样预定义——你在创建模板时选择它们,最多可以添加五个输入。定义后,资源选择器会显示这些输入,提示词模板可以用合并字段引用它们。
Linda 想用账户名称、资产详情和联系信息创建产品描述。由于 Field Generation 模板在数量(三个)和类型(account、asset、contact)上都无法提供她需要的输入选择,她决定创建 Flex 模板:Prompt Template Type 为 Flex,名称为 Product Details,然后定义三个资源——Account Info(Account)、Asset Info(Asset)、Contact Info(Contact)。提示词写作:
「用以下信息写一份详细的产品描述:The Account Name is {!$Input:Account_Info.Name},The Product Info is {!$Input:Asset_Info.Description},The Contact Info is {!$Input:Contact_Info.Name}」
Prompt Builder 足够灵活,能适应你的日常业务需求——无论你选择用 flow 还是创建 Apex 类,它都能帮助你减少日常任务上花费的时间。
四、审查、修改并保存提示词模板(Review, Revise, and Save Prompt Templates)
学完本单元,你将能够:回忆如何提高提示词响应的准确性并限制毒性;讨论如何审查和修改提示词响应。
预览你的提示词(Preview Your Prompt)
Prompt Template Workspace 包含几个支持测试过程的关键部分:Prompt(创建模板、添加资源、定义指令)、Resolved Prompt(查看提示词和资源如何为所选记录解析——被屏蔽的数据会显示在这里,合并字段资源显示关联的 CRM 字段值,Flow 资源显示其输出)、Response(审查基于解析后提示词生成的 LLM 输出)。侧面板包含 Template 和 Preview Settings——Template Settings 列出可用 LLM 及其局限,Preview Settings 定制结果。当你使用 Flex 模板并定义三个或更多输入时,Preview Settings 中会出现 Inputs 部分。
Prompt Builder 引导用户走完创建和测试提示词的端到端流程。每次你修改模板并重新生成预览,Einstein 都会更新解析后的提示词和 LLM 响应。
审查生成的响应(Review a Generated Response)
Linda 选择用于测试模板的对象记录(收件人记录 Andy Smith - Contact),然后点击 Save & Preview。她可以查看「解析后的」提示词模板——即合并字段被所选记录数据替换后的提示词。在她的测试中,模板返回了 Cloud Kicks 主办的所有活动——这是使用 Apex 的威力体现:ContactEvents 类返回 Cloud Kicks 即将举办的任何活动,模板给 LLM 提供了聚合或简化数据输出所需的所有信息。接着在 Response 中,基于提示词模板中的具体指令,Einstein 能够基于 Salesforce 数据生成一封邮件。
查看即时 Response 让 Linda 能够评估是否需要调整模板。
防范毒性(Guard Against Toxicity)
大语言模型在海量数据上训练,这一事实使模型有产生可能渗入响应的有毒措辞的风险。为避免这个风险,你需要给提示词模板添加限制和护栏(guardrails)。以下是创建护栏时需要考虑的七个方面,以帮助提高响应的准确性、恰当性并避免毒性。
生成提示词响应后的考量(Considerations After Generating a Prompt Response)
审查生成的响应时,需要考虑七点:
- 主题相关性(Topical Relevance):模型响应必须在对话中语法正确,并与提示词的整体请求直接相关。
- 动作/目标完成(Action/Goal Completion):评估响应是否与预期动作一致、是否实现提示词的目标、是否满足用户需求并处理了提示词要求的一切。
- 语域/语气恰当性(Register/Tonal Appropriateness):考虑语气和风格是否适合响应与用户之间的互动,确保词汇、标点和风格符合最终用户的需求(例如「让摘要的情绪保持轻松」)。
- 事实准确性(Factual Accuracy):留意不准确或幻觉,检查是否正确使用提示词数据并避免加入非预期的细节(例如「严格遵循指令,不要添加任何未提供的信息」)。
- 重复(Repetition):考虑响应中变化的程度是否满足预期(例如「使用清晰、简洁、直接的语言,主动语态,严格避免填充词和冗余语言」)。
- 毒性(Toxicity):审查响应中是否有冒犯、不尊重或辱骂性等可能对用户体验产生负面影响的内容。
- 偏见/伦理(Bias/Ethics):验证响应是否促进公平和包容,检查语言中是否有微妙偏见——不得仅凭姓名假定性别身份、不得边缘化残障参与者、不得对种族或社会经济地位做假设。必须平等对待来自不同社会经济地位、性取向、宗教、种族、外貌、国籍、性别认同、残障和年龄的任何人,信息不足时必须选择「未知」选项,而不是基于刻板印象做假设。
保存与版本化提示词模板(Saving and Versioning Prompt Templates)
Prompt Builder 让用户能灵活地在必要时修改或版本化模板。Linda 准备更新她的模板加入护栏。她打开现有模板,点击 Save As,有两个选项:Save as a New Version(对同一模板以相同模板名提供增量更改)和 Save as a New Template(用新模板名和 API 名创建新模板)。Linda 选择 Save as a New Version。
在新版本中,Linda 添加了帮助确保响应可信、无偏见且无毒性的修订,例如:「你必须平等对待来自不同社会经济地位、性取向、宗教、种族、外貌、国籍、性别认同、残障和年龄的任何个人。当信息不足时,必须选择未知选项,而不是基于刻板印象做假设。」以及「严格遵循指令,不要添加任何未提供的信息;用一句话总结,使用清晰简洁的语言……」审查并修改后,点击 Save 和 Activate,模板即可使用。
模板的激活版本就是其他功能将使用的版本——例如当用户用 Einstein 起草邮件或生成记录字段时,使用的是模板的激活版本。最后别忘了:每个使用模板的人都必须承担「人在回路中」的责任,在使用响应前审查它们。




















