本文向您介绍一个通过通义晓蜜CCAI-AIO对话分析进行字段信息抽取的最佳实践。
应用场景
通过通义晓蜜CCAI-AIO的信息抽取能力,对客服和用户的对话记录(文本、录音文件)进行理解、识别、抽取,如抽取客服工单中的字段信息,如客户所在的地区信息、年龄、日期时间、办理事项等,提升工单填写效率。
方案概览
使用通义晓蜜CCAI-AIO对话分析进行字段信息抽取,只需几步:
开通百炼服务:首先我们需要开通百炼服务,开通调用服务后才能测试模型体验、调用模型或应用体验服务。
开通并创建通义晓蜜CCAI-AIO对话分析应用:通过百炼创建一个通义晓蜜CCAI-AIO对话分析应用,并获取调用通义晓蜜CCAI-AIO对话分析应用 API 的相关凭证。
基于API实现对话分析:安装SDK,填充API中应用信息,对话内容和属性描述,进行属性抽取。
方案架构
开通百炼服务
开通百炼服务:请参考产品开通。
开通并创建通义晓蜜CCAI-AIO对话分析应用
开通通义晓蜜CCAI-AIO对话分析并创建应用,请参考使用指南。
获取AccessKeyID和AccessKeySecret
如果您还未创建AccessKeyID和AccessKeySecret,请参考获取 AccessKey 与 AgentKey。
如果您使用子账号调用接口,请参考通义晓蜜CCAI-对话分析RAM子账号使用方式和授权操作。
获取Workspace ID和App ID
获取Workspace ID和App ID,请参考获取API-KEY、APP-ID和Workspace ID。
安装SDK
Java
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>contactcenterai20240603</artifactId>
<version>3.3.0</version>
</dependency>
代码示例
请用workspaceId替换示例中的YOUR_WORKSPACEID,AccessKeyID替换示例中的YOUR_ACCESS_KEY_ID,AccessKeySecret替换示例中的YOUR_ACCESS_KEY_SECRET,appId替换示例中的YOUR_APPID,代码才能正常运行。为防止密钥泄露,建议将AccessKeyID和AccessKeySecret设置为环境变量。
同步非流式调用
public class CcaiPaasTest {
public static void main(String[] args) throws Exception {
//建议用户配置env防止ak泄漏
String accessKeyId = "YOUR_ACCESS_KEY_ID";
String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
String workspaceId = "YOUR_WORKSPACEID";
String appId = "YOUR_APPID";
Config config = new Config();
config.setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret).setEndpoint("contactcenterai.cn-shanghai.aliyuncs.com")
.setRegionId("cn-shanghai").setProtocol("HTTPS");
Client client = new Client(config);
AnalyzeConversationRequest request = new AnalyzeConversationRequest();
// 对话内容
List<AnalyzeConversationRequest.AnalyzeConversationRequestDialogueSentences> sentenceList = new ArrayList<>();
AnalyzeConversationRequest.AnalyzeConversationRequestDialogueSentences sentences1 = new AnalyzeConversationRequest.AnalyzeConversationRequestDialogueSentences();
sentences1.setRole("agent");
sentences1.setText("您好,这里是xxx保险公司,请问有什么可以帮您");
sentenceList.add(sentences1);
AnalyzeConversationRequest.AnalyzeConversationRequestDialogueSentences sentences2 = new AnalyzeConversationRequest.AnalyzeConversationRequestDialogueSentences();
sentences2.setRole("user");
sentences2.setText("嗯,我想办理一个健康险,帮我介绍下有哪些");
sentenceList.add(sentences2);
dialogue.setSentences(sentenceList);
dialogue.setSessionId("session-adslsddxxxx");
request.setDialogue(dialogue);
// 抽取字段名称和字段描述
List<AnalyzeConversationRequest.AnalyzeConversationRequestFields> fieldList = new ArrayList<>();
AnalyzeConversationRequest.AnalyzeConversationRequestFields field1 = new AnalyzeConversationRequest.AnalyzeConversationRequestFields();
field1.setName("问题类型");
field1.setDesc("客户咨询的问题类型");
fieldList.add(field1);
AnalyzeConversationRequest.AnalyzeConversationRequestFields field2 = new AnalyzeConversationRequest.AnalyzeConversationRequestFields();
field2.setName("银行名称");
field2.setDesc("客户卡号所属的银行名称");
fieldList.add(field2);
request.setFields(fieldList);
// fields表示属性抽取任务
request.setResultTypes(Arrays.asList("fields"));
request.setStream(false);
com.aliyun.contactcenterai20240603.models.AnalyzeConversationResponse response = client.analyzeConversation(workspaceId, appId, request);
System.out.println(JSONObject.toJSONString(response));
}
}