Agentforce Models API 开发者指南

Models API 完整开发者指南。涵盖四大核心能力(Chat/Text/Embeddings/Feedback)的 Apex 和 REST 双通道访问、四组完整代码示例、LWC 和 Flow 四种集成模式(Simple/Prompt Engineering/Chat UI)、三种组织类型的速率限制对比、模型 API 名称查找方式、以及 Trust Layer 三大特性(语言区域设置/数据脱敏/六类毒性评分)。...

📅 2026/7/5 ✍️ ponybai 🏷️ agentforce, salesforce, api
Models API

四大核心能力

Models API 提供 Apex 类和 REST 端点,将你的应用连接到 Salesforce 合作伙伴的 LLM。所有调用都经过 Einstein Trust Layer。支持 1GP 和 2GP 托管包。所有请求受 Einstein Requests 使用计费约束。

四大核心能力
能力Apex 方法REST 端点说明
Generate ChatModelsAPI.createChatGenerations()POST /models/{name}/chat-generations多消息对话,每条消息有角色(user/system/assistant),模型理解对话上下文
Generate TextModelsAPI.createGenerations()POST /models/{name}/generations单一提示词生成,适合简单任务和模型测试
Generate EmbeddingsModelsAPI.createEmbeddings()POST /models/{name}/embeddings创建嵌入向量,用于 RAG 和语义搜索。仅 Ada 002 模型
Submit FeedbackModelsAPI.submitFeedback()POST /feedback提供生成文本质量反馈(GOOD/BAD),数据存储在 Data 360

通过 Apex 访问 Models API

Models API 在 aiplatform 命名空间中提供 Apex 类,从 Models REST API 规范自动生成。每种能力都有对应方法,含请求/响应对象。

Apex 访问

Generate Text — 最简单的调用

aiplatform.ModelsAPI.createGenerations_Request request = new ...();
request.modelName = 'sfdc_ai__DefaultOpenAIGPT4OmniMini';
request.body.prompt = 'Generate a welcome email...';
// 输出: response.Code200.generation.generatedText

Generate Chat — 多消息对话

List<ModelsAPI_ChatMessageRequest> messages = new List<>();
// 添加 systemMessage (role='system') + userMessage (role='user')
request.body.messages = messages;
// 输出: response.Code200.generationDetails.generations

Generate Embeddings — 向量化

request.modelName = 'sfdc_ai__DefaultOpenAITextEmbeddingAda_002';
body.input = new List<String>{'Every day, once a day...'};
// 输出: response.Code200.embeddings

Submit Feedback — 质量反馈

feedbackRequest.feedback = 'GOOD';  // 或 'BAD'
feedbackRequest.feedbackText = '...';
feedbackRequest.source = 'HUMAN';
// 输出: response.Code202.message

异常处理:所有方法在出错时抛出 *ResponseException,通过 e.responseCode 检查 HTTP 状态。

Apex 代码示例

通过 REST 访问 Models API

REST 访问

步骤 1 — 创建 External Client App

OAuth 范围:apirefresh_token/offline_accesssfap_api。启用 Client Credentials Flow 和 JWT 令牌。

步骤 2 — 生成 JWT Token

curl -X POST https://{my_domain}/services/oauth2/token \
  -d "grant_type=client_credentials&client_id={key}&client_secret={secret}"
// Response: access_token, instance_url, api_instance_url

步骤 3 — 调用 API 端点

四个必需 Header:

  • Authorization: Bearer {token}
  • Content-Type: application/json
  • x-sfdc-app-context: EinsteinGPT
  • x-client-feature-id: ai-platform-models-connected-app
curl -X POST 'https://api.salesforce.com/einstein/platform/v1/models/sfdc_ai__DefaultOpenAIGPT4OmniMini/generations' \
  --header 'Authorization: Bearer {token}' \
  --header 'x-sfdc-app-context: EinsteinGPT' \
  --header 'x-client-feature-id: ai-platform-models-connected-app' \
  --data '{"prompt": "Generate a story about James Lee..."}'

响应包含:generatedTextcontentQuality(毒性分数)、parameters(Token 使用量)。401/404 错误:验证应用范围、完整 access_token、My Domain URL。

REST 设置

构建 LWC 和 Flow

LWC 和 Flow

四种集成模式

模式说明
Simple Gen AI LWC@AuraEnabled 方法 → createGenerations → HTML: lightning-input + button + response textarea
Simple Gen AI Flow@InvocableMethod → Models API → Flow Builder 中可用的 Invocable Action
Prompt Engineering LWCSystem prompt + User prompt → ChatMessageRequest 列表 → createChatGenerations。适合 CoT 提示实验
Chat LWC完整聊天界面:消息历史、角色样式(用户蓝色右对齐/助手灰色左对齐)、打字效果(30ms 逐词显示)、加载动画、自动滚动到底部

所有示例默认使用 sfdc_ai__DefaultOpenAIGPT4OmniMini 模型。这些是演示模式,非生产就绪代码。

LWC 和 Flow 示例

速率限制和模型 API 名称

速率限制

速率限制

组织类型RESTApex
Production2,000 RPM(生成)/ 1,000 RPM(嵌入+反馈)2,000 RPM
Sandbox2,000 RPM(同 Production)500 次/小时(注意是每小时!)
Demo/Trial2,000 RPM150 次/小时

超限返回 HTTP 429。Apex 方法也受 Apex Callout 限制。Agentforce 推理引擎在 Sandbox 中当前无速率限制(已知问题,可能变化)。

模型 API 名称模式

sfdc_ai__Default<Provider><ModelName>

  • 命名空间:sfdc_ai
  • 分隔符:__
  • 配置:Default(或自定义配置名)

查找方式:AI Models → Generative 标签页 → 点击模型 → 详情中的 API 名称。REST 路径:/models/{modelName}/generations。Apex:request.modelName = '...'

速率限制和 API 名称

Trust Layer:语言、数据脱敏和毒性检测

Trust Layer

语言和区域设置

  • localization 载荷:defaultLocale + inputLocales(区域 + 概率)+ expectedLocales
  • 提高数据脱敏和毒性评分的准确性
  • 指南:单一语言用 defaultLocale;混合语言用 inputLocales;始终提供语言+区域

数据脱敏(Data Masking)

  • Einstein Trust Layer 在发送给 LLM 之前对 PII 和 PCI 数据进行脱敏
  • 将敏感值替换为占位符文本 → LLM 用占位符生成响应 → Trust Layer 反脱敏 → 你看到实际数据
  • 审计追踪存储在 Data 360
  • 启用脱敏时上下文窗口限制为 65,536 Token
  • 关闭脱敏可使用完整上下文窗口
  • 无 100% 准确率保证;跨区域用例可能影响检测

毒性评分(Toxicity Scoring)

  • 对所有 LLM 生成自动执行
  • 响应包含:scanToxicity.isDetected(布尔值)+ categories[] 分数(0-1)
  • 六类检测:identity / hate / profanity / violence / sexual / physical
  • 分数越高越可能有害;isDetected=true 表示高可信度有害
  • 数据存储在 Data 360 供审查
  • 指定正确的区域设置以获得最佳检测准确率

Models API 为你提供了安全、受管控的途径来访问世界领先的 LLM——通过 Apex 或 REST,配合完整的 Trust Layer 保护、灵活的速率限制和丰富的集成模式。