필드 생성 프롬프트 템플릿에 Apex 병합 필드 추가
Apex 사용하는 예제 필드 생성 프롬프트 템플릿을 만듭니다.
필수 Edition
| 지원 제품: Lightning Experience |
| 지원 제품: Einstein for Platform 또는 Einstein 또는 세일즈용 Agentforce 또는 서비스 추가 기능 또는 Agentforce Foundations를 사용하는 Enterprise, Performance 및 무제한 Edition |
| 필요한 사용자 권한 | |
|---|---|
| 프롬프트 빌더 프롬프트 템플릿 만들기 및 관리: | 프롬프트 템플릿 관리자 권한 집합
OR 응용 프로그램 사용자 정의 권한 집합 |
회사의 세일즈 팀에 고객이 전화를 걸기 전에 지정된 고객에 대한 최신 고객 사례 요약을 제공하려고 한다고 가정해 보겠습니다. 플로 섹션에서 동일한 사용 사례를 사용했습니다.
이번에는 요약할 LLM의 사례 데이터를 가져오는 Apex 클래스를 통합하는 필드 생성 프롬프트 템플릿을 만들 수 있습니다.
다음은 프롬프트 템플릿에서 자원으로 액세스하는 Apex 클래스입니다.
public class OpenCasesPrompt {
@InvocableMethod(label='Open Cases'
description='Find Cases for an Account'
CapabilityType='PromptTemplateType://einstein_gpt__fieldCompletion')
public static List<Response> getCasesPrompt(List<Request> requests) {
// Validate the expected number of requests as an input
if (requests.size() != 1)
throw new ListException('The requests list must contain one entry only');
Account a = requests[0].RelatedEntity;
ID searchAcctId = a.Id;
List<Case> cases =
[SELECT Id, Subject, Description
FROM Case
WHERE AccountId = :searchAcctId AND Status != 'Closed'
WITH USER_MODE];
string responseData = null;
if(cases.isEmpty()) {
responseData = 'There are no open cases.';
} else {
for(Case c : cases) {
responseData =
(responseData != null) ? responseData + '\n' : '';
responseData += String.format('Case details: {0}, {1}.',
new List<Object>{c.Subject, c.Description});
}
}
List<Response> responses = new List<Response>();
Response res = new Response();
res.Prompt = responseData;
responses.add(res);
return responses;
}
public class Request {
@InvocableVariable(required=true)
public Account RelatedEntity;
}
public class Response {
@InvocableVariable
public String Prompt;
}
}Apex 클래스에 대한 요구 사항은 Apex 병합 필드에 설명되어 있습니다.
테스트 범위가 중요하므로 테스트 클래스를 추가하십시오. 테스트 클래스는 프롬프트 빌더 전송된 데이터를 시뮬레이션합니다. 두 가지 테스트 사례가 제공되며, 하나는 이벤트가 발견되는 경우 및 다른 하나는 이벤트가 없는 경우입니다.
@IsTest
public class OpenCasesPrompt_Test {
@IsTest
public static void findMatchingCasesForAccount() {
Account a = new Account(Name='Test Account');
insert a;
Case c1 = new Case(Subject='Test Case', Description='Important Case',
Status='New', AccountId=a.id);
Case c2 = new Case(Subject='Test Case 2',
Description='Case Description', Status='In-progress',
AccountId=a.id);
Case c3 = new Case(Subject='Test Case Closed',
Description='Closed Case', Status='Closed', AccountId=a.id);
insert new List<Case>{c1, c2, c3};
List<OpenCasesPrompt.Request> requestsInput
= new List<OpenCasesPrompt.Request>();
OpenCasesPrompt.Request request = new OpenCasesPrompt.Request();
request.RelatedEntity = a;
requestsInput.add(request);
Test.startTest();
List<OpenCasesPrompt.Response> responses =
OpenCasesPrompt.getCasesPrompt(requestsInput);
Test.stopTest();
Assert.areEqual(1, responses.size());
OpenCasesPrompt.Response response = responses[0];
Assert.areEqual('Case details: Test Case, Important Case.\n' +
'Case details: Test Case 2, Case Description.',
response.Prompt);
}
@IsTest
public static void noCasesForAccountResponse() {
List<OpenCasesPrompt.Request> requestsInput
= new List<OpenCasesPrompt.Request>();
OpenCasesPrompt.Request request = new OpenCasesPrompt.Request();
request.RelatedEntity = new Account();
requestsInput.add(request);
List<OpenCasesPrompt.Response> responses =
OpenCasesPrompt.getCasesPrompt(requestsInput);
Assert.areEqual(1, responses.size());
OpenCasesPrompt.Response response = responses[0];
Assert.areEqual('There are no open cases.', response.Prompt);
}
}
이제 Apex 클래스가 준비되었으므로 프롬프트 빌더 호출해 보겠습니다. 이를 수행하려면 먼저 계정 개체에서 진행 중인 사례 요약이라는 사용자 정의 필드를 만들어야 합니다. 사용자 정의 필드의 데이터 유형은 긴 텍스트 영역이어야 합니다. 사용자 정의 필드 만들기를 참조하십시오. 프롬프트 빌더 새 사용자 정의 필드를 볼 수 있도록 로그아웃하고 다시 로그인합니다.
프롬프트 빌더 새 프롬프트 템플릿을 만듭니다.
- 프롬프트 템플릿 유형으로 필드 생성을 선택합니다.
- 프롬프트 템플릿 이름에 Apex를 입력합니다. 진행 중인 사례 요약
- 개체로 계정을 선택합니다.
- 개체 필드로 사례 요약 열기를 선택합니다.
- 설명 필드는 비워 둡니다.
- 만들기를 클릭하면 프롬프트 템플릿 작업 영역으로 리디렉션됩니다.
- 예제 프롬프트 템플릿 라이브러리에서 필드 생성 프롬프트 템플릿을 찾습니다. 계정에 대해 진행 중인 사례를 요약합니다. 이 템플릿을 복사하여 프롬프트 템플릿 작업 영역에 붙여 넣습니다.
-
프롬프트 빌더에서 이 템플릿을 실행하려면 먼저 프롬프트 섹션에서 자원 삽입을 클릭합니다. 이 옵션을 처음 클릭하면 검색 필드가 나타납니다.
-
<account.Id__Merge_Field>Placeholder를 삭제합니다. - 자원 검색 막대를 클릭하고 Account | 계정 ID 를 선택합니다.
- <Get_Open_Cases_For_Account__Prompt__Flow> 자리 표시자를 삭제합니다.
- 자원 검색 막대를 클릭하고 Apex를 선택합니다.
- 템플릿에 OpenCasesPrompt Apex 클래스를 추가하려면 Open Cases를 선택합니다. Open Cases는 OpenCasesPrompt Apex 클래스의 @InvocableMethod 주석에 설정한 레이블 특성입니다.
-
이 기사를 통해 문제를 해결했습니까?
개선을 위한 의견을 보내주세요.

