Agentforce Models API 开发者指南

Models API 完整开发者指南:四大核心能力(Chat/Embeddings/Text/Feedback)+ Apex 方法表、完整 Apex 代码示例(GenerateText/Chat/Feedback)、REST API 设置(ECA+JWT+端点调用)、LWC+Flow 集成、速率限制+API 名称查找、反馈机制(含 REST Body 示例)、Trust Layer(多语言 localization+数据脱敏+毒性检测+零数据保留+审计追踪)。...

📅 2026/7/22 ✍️ ponybai 🏷️ agentforce, salesforce, api

Models API 概览

s254

Models API 提供 Apex 类REST 端点,连接你的应用到 Anthropic、Google、OpenAI 等合作伙伴的 LLM。支持所有可在 AI Models 中配置的 Salesforce 启用模型。所有调用经 Einstein Trust Layer 路由。支持 1GP 和 2GP 托管包。

注意:所有 Models API 请求受 Salesforce Einstein Requests 使用和计费费率约束。参见 Usage and BillingRate Card

四大核心能力

s255
能力Apex 方法说明
Generate ChatcreateChatGenerations基于消息列表(user/system/assistant 角色)生成对话响应。适合多轮对话场景
Generate EmbeddingscreateEmbeddings生成文本的向量表示。用于 RAG 和语义搜索(cosine similarity/Euclidean distance/dot product)
Generate TextcreateGenerations从单条 Prompt 生成文本。适合简单非对话任务和模型能力测试
Submit FeedbacksubmitFeedback提交对生成文本的反馈(GOOD/BAD + 文本说明)。数据存入 Data 360 用于质量审查

通过 Apex 访问 Models API

s256

Models API 的 Apex 类使用 External Services 框架从 REST API 规范自动生成。Apex 方法在 aiplatform 命名空间的 ModelsAPI 类中。受 Apex Callout Limits 约束。

Apex 方法与代码示例

s257

Generate Text(文本生成)

aiplatform.ModelsAPI.createGenerations_Request req = new aiplatform.ModelsAPI.createGenerations_Request();
req.modelName = 'sfdc_ai__DefaultOpenAIGPT4OmniMini';
aiplatform.ModelsAPI_GenerationRequest body = new aiplatform.ModelsAPI_GenerationRequest();
req.body = body;
body.prompt = 'Generate a welcome email for the new developer Jane Doe.';
try {
    aiplatform.ModelsAPI modelsAPI = new aiplatform.ModelsAPI();
    aiplatform.ModelsAPI.createGenerations_Response res = modelsAPI.createGenerations(req);
    System.debug('Generated: ' + res.Code200.generation.generatedText);
} catch(aiplatform.ModelsAPI.createGenerations_ResponseException e) {
    System.debug('Error: ' + e.responseCode);
}

Generate Chat(对话生成)— 含角色消息列表

List messages = new List();
aiplatform.ModelsAPI_ChatMessage sysMsg = new aiplatform.ModelsAPI_ChatMessage();
sysMsg.role = 'system'; sysMsg.content = 'You are a helpful assistant.';
messages.add(sysMsg);
aiplatform.ModelsAPI_ChatMessage userMsg = new aiplatform.ModelsAPI_ChatMessage();
userMsg.role = 'user'; userMsg.content = 'Write a haiku about recursion.';
messages.add(userMsg);
// req.modelName = '...'; req.body.messages = messages;
// res.Code200.generation.generatedText 获取响应

Submit Feedback(反馈)

aiplatform.ModelsAPI.submitFeedback_Request req = new aiplatform.ModelsAPI.submitFeedback_Request();
aiplatform.ModelsAPI_FeedbackRequest fb = new aiplatform.ModelsAPI_FeedbackRequest();
fb.id = 'unique-feedback-id'; fb.generationId = 'generation-uuid';
fb.feedback = 'BAD'; fb.feedbackText = 'Response was confusing';
fb.source = 'HUMAN'; req.body = fb;
aiplatform.ModelsAPI.submitFeedback_Response res = modelsAPI.submitFeedback(req);
提示:Apex 测试参考 External Services 框架测试指南。Models API 的 Apex 类基于此框架。

通过 REST 访问 Models API

s258

最快入门方式:Postman Collection

REST 设置:App、JWT 与 API 调用

s259

Step 1:创建 External Client App

OAuth Scopes:api(用户数据访问)、refresh_token, offline_accesssfap_api(访问 Salesforce REST API 平台)。启用 Client Credentials Flow + Issue JWT Web Token。Policies → 设置 Run As 用户。

Step 2:生成 JWT Token

获取 Consumer Key + Secret → 调用 Token 端点:

curl -X POST https://{MY_DOMAIN}/services/oauth2/token \
  -d grant_type=client_credentials \
  -d client_id={KEY} -d client_secret={SECRET}

# 使用 Token 调用 API
curl https://{INSTANCE}/services/data/v66.0/einstein/llm/generations \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"model":"sfdc_ai__DefaultGPT41","prompt":"Summarize this case...","params":{"temperature":0.7}}'

端点:Generate Text/Chat/Embeddings 均可通过 REST 调用。完整参考见 Models REST API Reference

构建 LWC 与 Flow

s260

Models API 的 Apex 类可在 Lightning Web Components 和 Flow 中使用,将 AI 能力嵌入 UI 和业务流程。

LWC 与 Flow 示例

s261

LWC 集成:通过 imperative Apex(@wire 或直接调用)连接 Models API。例如创建"AI Summarize"按钮 → 点击调用封装 Models API 的 Apex 方法 → 显示 LLM 生成的摘要。

Flow 集成:创建 @InvocableMethod Apex 类封装 Models API 调用 → 在 Flow Builder 中作为 Action 使用。例如:Case 创建后 → Flow 触发 → 调用 Models API 生成分类建议 → 写入自定义字段。

详细的 LWC 和 Flow 构建指南参见 Build Lightning Web Components and Flows with Models API

速率限制、API 名称与反馈

s262

速率限制与模型 API 名称

s263

速率限制:Models API 受 Einstein Requests 配额约束。每个 Generation/Chat/Embeddings 调用消耗 1+ Requests。具体配额取决于 Org 类型和许可证。参见 Usage and BillingRate Limits for Models API

模型 API 名称查找:AI Models → Generative 选项卡 → 点击已配置模型名称 → 详情页显示 API 名称(格式 sfdc_ai__Default...)。任何 Salesforce-Managed 或自定义配置的模型都可通过此方式获取 API 名称。

反馈机制详解

每个反馈调用需两个 ID:id(唯一标识此反馈)和 generationId(标识反馈目标的 Generation UUID)。可提供:feedback(GOOD/BAD)、feedbackText(自由文本,存储时截断至 1024 字符)、source(HUMAN/AUTO)。数据存入 Data 360 用于审计和质量改进。

// REST Feedback Body
{"id":"feedback-uuid","generationId":"gen-uuid","feedback":"BAD","feedbackText":"The summary was confusing","source":"HUMAN"}

Trust Layer:语言、脱敏与毒性检测

s264

所有 Models API 调用经过 Einstein Trust Layer,提供多层保护:

  • 多语言支持:通过 localization 负载指定 defaultLocale(如 en_US)和 inputLocales 列表(含 probability 权重)。支持 ISO 语言代码和语言_国家组合格式。正确指定可提升数据脱敏和毒性检测的准确性
  • 数据脱敏(Data Masking):自动识别并脱敏 PII 数据(SSN/信用卡号/邮箱/电话)。指定正确的语言/区域可显著提升脱敏准确率
  • 毒性检测(Toxicity Scoring):检测 LLM 输出中的有害内容。正确配置 localization 可提高检测精度
  • 零数据保留:与第三方 LLM 供应商的协议确保你的数据不被保留
  • 审计追踪:反馈数据 + Generation 日志存入 Data 360(Event Log + Audit & Feedback)

Localization 负载示例

{"localization":{"defaultLocale":"en_US","inputLocales":[{"locale":"en_US","probability":0.6},{"locale":"es_ES","probability":0.4}]}}

参见:Specify Languages and Locales with Models APIData MaskingToxicity Confidence ScoringTrust Layer Region and Language Support