创建模型 API Lightning Web 组件
学习目标
完成本单元后,您将能够:
- 创建自定义 Apex 类。
- 构建 Lightning Web 组件。
- 将 Lightning Web 组件部署到您的 AI Playground。
- 使用 Lightning 应用程序生成器编辑组织页面。
现在您已经设置了环境,是时候为 Lightning Web 组件添加功能了。在本单元中,我们将跟随 Maria 一起创建自定义 Apex 类、设计 UI、添加功能 JavaScript,并将模型 API 仪表板部署到 AI Playground。
开发人员文档作者示例用例
此视频将通过一个与本模块中的示例类似的基本示例,向您展示如何构建一个可访问模型 API 的 Lightning Web 组件。
创建模型 API 的 Apex 类
- 在 VS Code 中,右键单击 force-app/main 下的 classes(类) 文件夹,并选择 SFDX: Create Apex Class(SFDX:创建 Apex 类)。将类命名为
DashboardController。
- VS Code 中的新建 Apex 类包含 5 行默认代码。请删除此默认代码。本模块将提供 Apex 类和 Lightning Web 组件文件的完整代码示例,因此您无需任何默认代码。
- 在 Apex 类文件
DashboardController.cls中,复制并粘贴以下代码。
public with sharing class DashboardController {
@AuraEnabled
public static String createChatGenerations(String input) {
String fileContent = HousingData.jsonString;
// Escape double quotes, newlines, and carriage returns within the JSON string
String escapedFileContent = HousingData.jsonString
.replace('\\', '\\\\') // Escape backslashes
.replace('"', '\\"') // Escape double quotes
.replace('\n', '\\n') // Escape newlines
.replace('\r', '\\r'); // Escape carriage returns
// Construct the input string
String instructions = '[{"role": "user", "message": "Summarize the sample housing data as if you were a real estate broker. Housing Data: ' + escapedFileContent + '"}]';
// Deserialize the file content into a list of ChatMessage objects
List<DashboardController.ChatMessage> messages = (List<DashboardController.ChatMessage>) JSON.deserialize(
instructions,
List<DashboardController.ChatMessage>.class
);
// Instantiate the API class
aiplatform.ModelsAPI modelsAPI = new aiplatform.ModelsAPI();
// Prepare the request and body objects
aiplatform.ModelsAPI.createChatGenerations_Request request = new aiplatform.ModelsAPI.createChatGenerations_Request();
aiplatform.ModelsAPI_ChatGenerationsRequest body = new aiplatform.ModelsAPI_ChatGenerationsRequest();
// Specify model
request.modelName = 'sfdc_ai__DefaultGPT35Turbo';
// Create a list to hold chat messages
List<aiplatform.ModelsAPI_ChatMessageRequest> messagesList = new List<aiplatform.ModelsAPI_ChatMessageRequest>();
// Loop through the input messages and create message requests
for (ChatMessage msg : messages) {
aiplatform.ModelsAPI_ChatMessageRequest messageRequest = new aiplatform.ModelsAPI_ChatMessageRequest();
messageRequest.content = msg.message != null ? msg.message : ''; // Handle null message
messageRequest.role = msg.role != null ? msg.role : 'user'; // Handle null role
messagesList.add(messageRequest);
}
// Set the messages in the request body
body.messages = messagesList;
// Set the request body and model name
request.body = body;
String response = '';
try {
// Call the API and get the response
aiplatform.ModelsAPI.createChatGenerations_Response apiResponse = modelsAPI.createChatGenerations(
request
);
// Check that we have a non-null response
if (
apiResponse?.Code200?.generationDetails?.generations != null &&
!apiResponse.Code200.generationDetails.generations.isEmpty()
) {
// Set the variable from the response
response = apiResponse.Code200.generationDetails.generations[0]
.content;
} else {
// Handle the case where response is null
response = 'No content generated';
}
// Handle error
} catch(aiplatform.ModelsAPI.createChatGenerations_ResponseException e) {
System.debug('Response code: ' + e.responseCode);
System.debug('The following exception occurred: ' + e);
// Add error to the output
response = 'Unable to get a valid response. Error code: ' + e.responseCode;
}
return response;
}
public class ChatMessage {
public String role;
public String message;
public ChatMessage() {
}
public ChatMessage(String role, String message) {
this.role = role;
this.message = message;
}
}
}- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
为落地训练数据创建新类
为使模型 API 仪表板正常运行,Maria 需要通过相关住房市场数据对 LLM 进行落地训练。在此步骤中,我们将创建一个新类并填充数据,以便 DashboardController 类能够引用。
此数据是用于演示的 LWC 中的本地文件。正式实施此仪表板时,此步骤中的数据将从住房市场 API 动态检索。
- 在 VS Code 中,右键单击 classes(类)文件夹,并选择 SFDX: Create Apex Class(SFDX:创建 Apex 类)。将类命名为
HousingData。
- 在 Apex 类文件
HousingData.cls中,复制并粘贴以下代码。
public class HousingData {
public static final String jsonString = '{\n' +
'[' +
' {\n' +
' "County": "Adams",\n' +
' "Sales (SAAR)": 130,\n' +
' "% Change by quarter": 8.3,\n' +
' "% Change by year": -7.1,\n' +
' "Building Permits": 12,\n' +
' "% Change by year (Building Permits)": -25.0,\n' +
' "Median Price ($)": 318100,\n' +
' "% Change by year (Median Price)": 6.9,\n' +
' "Median Buyer HAI": 83.7,\n' +
' "First-time Buyer HAI": 59.7\n' +
' },\n' +
' {\n' +
' "County": "Benton",\n' +
' "Sales (SAAR)": 3060,\n' +
' "% Change by quarter": 2.3,\n' +
' "% Change by year": -16.2,\n' +
' "Building Permits": 447,\n' +
' "% Change by year (Building Permits)": 42.4,\n' +
' "Median Price ($)": 426900,\n' +
' "% Change by year (Median Price)": 0.3,\n' +
' "Median Buyer HAI": 81.8,\n' +
' "First-time Buyer HAI": 58.4\n' +
' },\n' +
' {\n' +
' "County": "Chelan",\n' +
' "Sales (SAAR)": 760,\n' +
' "% Change by quarter": -3.8,\n' +
' "% Change by year": -16.5,\n' +
' "Building Permits": 115,\n' +
' "% Change by year (Building Permits)": 74.2,\n' +
' "Median Price ($)": 563500,\n' +
' "% Change by year (Median Price)": 15.8,\n' +
' "Median Buyer HAI": 52.5,\n' +
' "First-time Buyer HAI": 37.5\n' +
' },\n' +
' {\n' +
' "County": "Clark",\n' +
' "Sales (SAAR)": 4830,\n' +
' "% Change by quarter": -19.0,\n' +
' "% Change by year": -34.3,\n' +
' "Building Permits": 698,\n' +
' "% Change by year (Building Permits)": -16.1,\n' +
' "Median Price ($)": 531500,\n' +
' "% Change by year (Median Price)": 5.8,\n' +
' "Median Buyer HAI": 72.9,\n' +
' "First-time Buyer HAI": 52.0\n' +
' },\n' +
' {\n' +
' "County": "Columbia",\n' +
' "Sales (SAAR)": 80,\n' +
' "% Change by quarter": 0.0,\n' +
' "% Change by year": -11.1,\n' +
' "Building Permits": 2,\n' +
' "% Change by year (Building Permits)": -86.7,\n' +
' "Median Price ($)": 228300,\n' +
' "% Change by year (Median Price)": -13.2,\n' +
' "Median Buyer HAI": 166.9,\n' +
' "First-time Buyer HAI": 119.1\n' +
' },\n' +
' {\n' +
' "County": "Franklin",\n' +
' "Sales (SAAR)": 1030,\n' +
' "% Change by quarter": 3.0,\n' +
' "% Change by year": -16.3,\n' +
' "Building Permits": 138,\n' +
' "% Change by year (Building Permits)": 29.0,\n' +
' "Median Price ($)": 426900,\n' +
' "% Change by year (Median Price)": 0.3,\n' +
' "Median Buyer HAI": 90.7,\n' +
' "First-time Buyer HAI": 64.7\n' +
' },\n' +
' {\n' +
' "County": "Garfield",\n' +
' "Sales (SAAR)": 0,\n' +
' "% Change by quarter": "NA",\n' +
' "% Change by year": "NA",\n' +
' "Building Permits": 0,\n' +
' "% Change by year (Building Permits)": "NA",\n' +
' "Median Price ($)": 268000,\n' +
' "% Change by year (Median Price)": 14.9,\n' +
' "Median Buyer HAI": 104.1,\n' +
' "First-time Buyer HAI": 74.3\n' +
' },\n' +
' {\n' +
' "County": "Grays Harbor",\n' +
' "Sales (SAAR)": 1660,\n' +
' "% Change by quarter": 0.0,\n' +
' "% Change by year": -19.4,\n' +
' "Building Permits": 69,\n' +
' "% Change by year (Building Permits)": -6.8,\n' +
' "Median Price ($)": 351300,\n' +
' "% Change by year (Median Price)": 7.6,\n' +
' "Median Buyer HAI": 71.1,\n' +
' "First-time Buyer HAI": 50.7\n' +
' },\n' +
' {\n' +
' "County": "Jefferson",\n' +
' "Sales (SAAR)": 480,\n' +
' "% Change by quarter": -5.9,\n' +
' "% Change by year": -12.7,\n' +
' "Building Permits": 31,\n' +
' "% Change by year (Building Permits)": 24.0,\n' +
' "Median Price ($)": 650000,\n' +
' "% Change by year (Median Price)": 16.4,\n' +
' "Median Buyer HAI": 43.2,\n' +
' "First-time Buyer HAI": 30.9\n' +
' },\n' +
' {\n' +
' "County": "King",\n' +
' "Sales (SAAR)": 18520,\n' +
' "% Change by quarter": -0.1,\n' +
' "% Change by year": -21.1,\n' +
' "Building Permits": 3110,\n' +
' "% Change by year (Building Permits)": 4.7,\n' +
' "Median Price ($)": 931000,\n' +
' "% Change by year (Median Price)": 13.4,\n' +
' "Median Buyer HAI": 58.6,\n' +
' "First-time Buyer HAI": 41.8\n' +
' },\n' +
' {\n' +
' "County": "Kitsap",\n' +
' "Sales (SAAR)": 3680,\n' +
' "% Change by quarter": -0.8,\n' +
' "% Change by year": -20.0,\n' +
' "Building Permits": 400,\n' +
' "% Change by year (Building Permits)": -49.0,\n' +
' "Median Price ($)": 532200,\n' +
' "% Change by year (Median Price)": 5.6,\n' +
' "Median Buyer HAI": 76.0,\n' +
' "First-time Buyer HAI": 54.2\n' +
' },\n' +
' {\n' +
' "County": "Kittitas",\n' +
' "Sales (SAAR)": 960,\n' +
' "% Change by quarter": 6.7,\n' +
' "% Change by year": -13.5,\n' +
' "Building Permits": 85,\n' +
' "% Change by year (Building Permits)": -15.0,\n' +
' "Median Price ($)": 521700,\n' +
' "% Change by year (Median Price)": -5.1,\n' +
' "Median Buyer HAI": 49.3,\n' +
' "First-time Buyer HAI": 35.2\n' +
' },\n' +
' {\n' +
' "County": "Lewis",\n' +
' "Sales (SAAR)": 970,\n' +
' "% Change by quarter": -6.7,\n' +
' "% Change by year": -26.5,\n' +
' "Building Permits": 110,\n' +
' "% Change by year (Building Permits)": 80.3,\n' +
' "Median Price ($)": 413000,\n' +
' "% Change by year (Median Price)": 5.7,\n' +
' "Median Buyer HAI": 72.0,\n' +
' "First-time Buyer HAI": 51.4\n' +
' },\n' +
' {\n' +
' "County": "Mason",\n' +
' "Sales (SAAR)": 1010,\n' +
' "% Change by quarter": -4.7,\n' +
' "% Change by year": -18.5,\n' +
' "Building Permits": 93,\n' +
' "% Change by year (Building Permits)": 31.0,\n' +
' "Median Price ($)": 391200,\n' +
' "% Change by year (Median Price)": 1.9,\n' +
' "Median Buyer HAI": 89.0,\n' +
' "First-time Buyer HAI": 63.5\n' +
' },\n' +
' {\n' +
' "County": "Okanogan",\n' +
' "Sales (SAAR)": 360,\n' +
' "% Change by quarter": -2.7,\n' +
' "% Change by year": -29.4,\n' +
' "Building Permits": 57,\n' +
' "% Change by year (Building Permits)": 29.5,\n' +
' "Median Price ($)": 369400,\n' +
' "% Change by year (Median Price)": 29.6,\n' +
' "Median Buyer HAI": 68.4,\n' +
' "First-time Buyer HAI": 48.8\n' +
' },\n' +
' {\n' +
' "County": "Pierce",\n' +
' "Sales (SAAR)": 9780,\n' +
' "% Change by quarter": -2.4,\n' +
' "% Change by year": -25.6,\n' +
' "Building Permits": 629,\n' +
' "% Change by year (Building Permits)": -17.1,\n' +
' "Median Price ($)": 547800,\n' +
' "% Change by year (Median Price)": 4.5,\n' +
' "Median Buyer HAI": 72.5,\n' +
' "First-time Buyer HAI": 51.7\n' +
' },\n' +
' {\n' +
' "County": "San Juan",\n' +
' "Sales (SAAR)": 220,\n' +
' "% Change by quarter": 0.0,\n' +
' "% Change by year": -8.3,\n' +
' "Building Permits": 23,\n' +
' "% Change by year (Building Permits)": 43.8,\n' +
' "Median Price ($)": 737500,\n' +
' "% Change by year (Median Price)": -13.2,\n' +
' "Median Buyer HAI": 41.4,\n' +
' "First-time Buyer HAI": 29.6\n' +
' },\n' +
' {\n' +
' "County": "Skagit",\n' +
' "Sales (SAAR)": 1420,\n' +
' "% Change by quarter": -6.0,\n' +
' "% Change by year": -24.9,\n' +
' "Building Permits": 169,\n' +
' "% Change by year (Building Permits)": 70.7,\n' +
' "Median Price ($)": 553100,\n' +
' "% Change by year (Median Price)": 6.7,\n' +
' "Median Buyer HAI": 53.9,\n' +
' "First-time Buyer HAI": 38.4\n' +
' },\n' +
' {\n' +
' "County": "Snohomish",\n' +
' "Sales (SAAR)": 7740,\n' +
' "% Change by quarter": -2.5,\n' +
' "% Change by year": -23.1,\n' +
' "Building Permits": 1060,\n' +
' "% Change by year (Building Permits)": 20.7,\n' +
' "Median Price ($)": 737700,\n' +
' "% Change by year (Median Price)": 6.4,\n' +
' "Median Buyer HAI": 69.1,\n' +
' "First-time Buyer HAI": 49.3\n' +
' },\n' +
' {\n' +
' "County": "Spokane",\n' +
' "Sales (SAAR)": 6010,\n' +
' "% Change by quarter": 2.6,\n' +
' "% Change by year": -13.4,\n' +
' "Building Permits": 736,\n' +
' "% Change by year (Building Permits)": -31.7,\n' +
' "Median Price ($)": 426500,\n' +
' "% Change by year (Median Price)": 4.8,\n' +
' "Median Buyer HAI": 74.9,\n' +
' "First-time Buyer HAI": 53.5\n' +
' },\n' +
' {\n' +
' "County": "Stevens",\n' +
' "Sales (SAAR)": 690,\n' +
' "% Change by quarter": -1.4,\n' +
' "% Change by year": -2.8,\n' +
' "Building Permits": 50,\n' +
' "% Change by year (Building Permits)": 31.6,\n' +
' "Median Price ($)": 303600,\n' +
' "% Change by year (Median Price)": 10.4,\n' +
' "Median Buyer HAI": 92.4,\n' +
' "First-time Buyer HAI": 66.0\n' +
' },\n' +
' {\n' +
' "County": "Wahkiakum",\n' +
' "Sales (SAAR)": 80,\n' +
' "% Change by quarter": -11.1,\n' +
' "% Change by year": 14.3,\n' +
' "Building Permits": 5,\n' +
' "% Change by year (Building Permits)": 25.0,\n' +
' "Median Price ($)": 417000,\n' +
' "% Change by year (Median Price)": 1.1,\n' +
' "Median Buyer HAI": 71.3,\n' +
' "First-time Buyer HAI": 50.9\n' +
' },\n' +
' {\n' +
' "County": "Walla Walla",\n' +
' "Sales (SAAR)": 560,\n' +
' "% Change by quarter": 1.8,\n' +
' "% Change by year": -11.1,\n' +
' "Building Permits": 40,\n' +
' "% Change by year (Building Permits)": -45.2,\n' +
' "Median Price ($)": 418700,\n' +
' "% Change by year (Median Price)": 3.1,\n' +
' "Median Buyer HAI": 68.2,\n' +
' "First-time Buyer HAI": 48.7\n' +
' },\n' +
' {\n' +
' "County": "Whatcom",\n' +
' "Sales (SAAR)": 2460,\n' +
' "% Change by quarter": 0.8,\n' +
' "% Change by year": -16.9,\n' +
' "Building Permits": 279,\n' +
' "% Change by year (Building Permits)": 16.2,\n' +
' "Median Price ($)": 650600,\n' +
' "% Change by year (Median Price)": 12.0,\n' +
' "Median Buyer HAI": 50.7,\n' +
' "First-time Buyer HAI": 36.2\n' +
' },\n' +
' {\n' +
' "County": "Yakima",\n' +
' "Sales (SAAR)": 1710,\n' +
' "% Change by quarter": -2.3,\n' +
' "% Change by year": -18.6,\n' +
' "Building Permits": 82,\n' +
' "% Change by year (Building Permits)": -33.3,\n' +
' "Median Price ($)": 341600,\n' +
' "% Change by year (Median Price)": 1.7,\n' +
' "Median Buyer HAI": 82.3,\n' +
' "First-time Buyer HAI": 58.7\n' +
' },\n' +
' {\n' +
' "County": "Statewide",\n' +
' "Sales (SAAR)": 77990,\n' +
' "% Change by quarter": -2.3,\n' +
' "% Change by year": -21.5,\n' +
' "Building Permits": 9229,\n' +
' "% Change by year (Building Permits)": -6.4,\n' +
' "Median Price ($)": 626100,\n' +
' "% Change by year (Median Price)": 9.3,\n' +
' "Median Buyer HAI": 63.1,\n' +
' "First-time Buyer HAI": 45.0\n' +
' }\n' +
']\n' +
'}';
}- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
- 再次右键单击 classes(类)文件夹,然后选择 SFDX: Deploy This Source to Org(SFDX:将此源部署到组织)。
- 在集成终端的 Output(输出)选项卡中,查看部署的结果。若命令运行成功,Deployed Source(已部署源)消息将列出上传到组织的 4 个文件。
构建模型 API Lightning Web 组件
- 在 Visual Studio Code 中,按 Ctrl+Shift+P (Windows) 或 Cmd+Shift+P (macOS) 打开命令面板。
- 输入
SFDX。
- 选择 SFDX:创建 Lightning Web 组件.
- 输入
modelsAPIDashboard作为新组件的名称。
- 按 Enter 以接受默认
force-app/main/default/lwc。
- 按 Enter 键。
- 查看
lwc下modelsAPIDashboard文件夹中新创建的文件。
- 在 HTML 文件
modelsAPIDashboard.html中,复制并粘贴以下代码。
<template>
<div
class="slds-var-m-around_medium slds-grid slds-grid_vertical slds-box slds-theme_default">
<h1><font size="3"><b>Housing Market Dashboard</b></font>
</h1>
<!-- Chat messages container -->
<div
class="slds-scrollable_y"
style="height: 440px"
lwc:ref="chatContainer"
>
<!-- Iterate over each message in the messages array -->
<template for:each={messages} for:item="message">
<div key={message.id} class="slds-var-m-around_small">
<!-- If the message is from the assistant -->
<div class="custom-chat-message_inbound slds-var-p-around_small">
<div class="slds-chat-message__body">
<div class="slds-chat-message__text">{message.text}</div>
</div>
</div>
</div>
</template>
</div>
<!-- Loading indicator -->
<template lwc:if={isLoading}>
<div class="loading-container slds-var-m-around_small">
<div class="loading-text">
Analyzing data… One moment.
</div>
<div class="loading-indicator"></div>
</div>
</template>
<!-- Send button -->
<div class="slds-grid slds-grid_vertical-align-center send-button-container">
<div class="slds-col slds-size_1-of-4">
<lightning-button
label="Analyze"
variant="brand"
onclick={handleSendMessage}
disabled={isLoading}
></lightning-button>
</div>
</div>
</div>
</template>- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
- 右键单击
modelsAPIDashboard文件夹并选择 New File(新文件)。
- 输入
modelsAPIDashboard.css作为文件名称。
- 在 CSS 文件
modelsAPIDashboard.css中,复制并粘贴以下代码。
.custom-chat-message_inbound {
border-radius: 10px;
max-width: 100%;
background-color: #f3f2f2;
align-self: flex-start;
}
.custom-chat-message_outbound {
border-radius: 10px;
max-width: 100%;
background-color: #0070d2;
color: white;
align-self: flex-end;
}
.send-button-container {
padding-top: 10px;
padding-bottom: 1px;
}
.custom-textarea {
width: 100%;
}
.loading-indicator {
width: 50px;
height: 25px;
overflow: hidden;
vertical-align: middle;
position: relative;
}
.loading-indicator::after {
content: "";
display: inline-block;
width: 50px;
height: 50px;
overflow: hidden;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: loading 1s infinite steps(7);
}
@keyframes loading {
0% {
content: ".";
}
12.5% {
content: "..";
}
25% {
content: "...";
}
37.5% {
content: ".....";
}
50% {
content: "......";
}
62.5% {
content: "........";
}
75% {
content: "............";
}
87.5% {
content: "";
}
}- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
- 在 JavaScript 文件
modelsAPIDashboard.js中,复制并粘贴以下代码。
import { LightningElement, track } from "lwc";
import createChatGenerations from "@salesforce/apex/DashboardController.createChatGenerations";
export default class HousingMarket extends LightningElement {
@track housingData = [];
@track isLoading = false;
@track error;
@track messages = []; // Initialize messages
connectedCallback() {
this.fetchHousingMarketData();
}
// Get Housing Market Data
fetchHousingMarketData() {
this.isLoading = true;
createChatGenerations()
.then((result) => {
console.log(result);
this.error = undefined;
})
.catch((error) => {
this.error = error;
this.housingData = [];
})
.finally(() => {
this.isLoading = false;
});
}
// Handle analyze button click
handleSendMessage() {
this.isLoading = true; // Show loading indicator
// Call Apex method to fetch chat response
createChatGenerations()
.then((result) => {
const assistantMessageObj = {
id: this.messages.length + 1,
text: result,
role: "assistant",
isUser: false,
};
this.messages = [...this.messages, assistantMessageObj]; // Add assistant message to messages array
})
.catch((error) => {
console.error("Error fetching bot response", JSON.stringify(error));
})
.finally(() => {
this.isLoading = false; // Hide loading indicator
});
}
}- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
在元数据文件中添加这些目标,以便从各种 Lightning Experience 页面中使用该组件。
- 在 XML 文件
modelsAPIDashboard.js-meta.xml中,复制并粘贴以下代码。
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>61.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__AppPage</target>
<target>lightning__HomePage</target>
<target>lightning__RecordPage</target>
</targets>
</LightningComponentBundle>- 按 Ctrl+S (Windows) 或 Cmd+S (macOS) 保存文件。
部署您的 AI Playground
- 右键单击
lwc下的modelsAPIDashboard文件夹。
- 单击 SFDX: Deploy This Source to Org(SFDX:将此源代码部署到组织)。

- 在集成终端的 Output(输出)选项卡中,查看部署的结果。若命令运行成功,Deployed Source(已部署源)消息将列出上传到组织的 4 个文件。
在 Lightning 应用程序生成器中编辑页面
- 在 Visual Studio Code 中,按 Ctrl+Shift+P (Windows) 或 Cmd+Shift+P (macOS) 打开命令面板。
- 输入
SFDX。
- 选择 SFDX: Open Default Org(SFDX:打开默认组织)。
这将在单独的浏览器中打开您的 AI Playground。
- 单击齿轮图标 (
),然后选择 Setup(设置)。
- 在 Quick Find(快速查找)中,搜索并选择 Feature Settings(功能设置)部分的 Home(主页)。
- 对于 Advanced Seller Home(高级卖方主页),将设置切换为 Inactive(未启用)。
- 在 App Launcher(应用程序启动器)(
) 中,搜索并选择 Sales(销售)。
- 单击齿轮图标 (
),然后选择 Edit Page(编辑页面)。
- 滚动到 Components(组件)列表底部的 Custom(自定义)部分。
- 从 Lightning Components(Lightning 组件)列表的 Custom(自定义)区域中,将 modelsAPIDashboard Lightning Web 组件拖放到 Page Canvas(页面画布)顶部。
- 单击保存。
- 单击 Activate(激活)。
- 单击 Assign as Org Default(分配为组织默认设置)。
- 单击保存。
- 再次单击 Save(保存),然后单击后退按钮 (
) 返回页面。
- 刷新页面以查看新组件。
恭喜您创建了第一个模型 API Lightning Web 组件!
现在,DreamHouse Realty 已直接在销售主页上提供了仪表板组件。借助此仪表板,销售团队能够了解当前住房市场趋势,并能更好地理解购房者的需求。此组件示例虽然非常简单,但通过此次实施,您可以看到利用模型 API 将业务用例与生成式 AI 相结合所产生的强大功能。
