介绍AI Doc在调用OpenAPI时候,查找相关字段以及调用OpenAPI的步骤。
步骤一:准备
在AI Doc的OpenAPI调用过程中,可能涉及以下字段需要填写。具体查找步骤如下。如果您已知模板ID和文件夹ID可以跳过相应章节。
获取模板ID
登录AI Doc官网,进入模板管理页面,可以看到模板ID字段。
获取文档夹ID
登录AI Doc官网,进入文档解析页面,选择需要查看的文件夹,右侧可以看到对应的文件夹ID。
步骤二:创建用于OpenAPI访问的AK和SK
您可以选择使用主账号或者子账号下的AK和SK进行OpenAPI操作,这里以子账号的AK、SK为例。
登录阿里云的控制台,进行创建用户并勾选OpenAPI调用访问。
为该用户授予AliyunEnergyFullAccess权限。
复制AccessKey ID和AccessKey Secret,以备后续代码调用时候使用。
开通 OpenAPI 调用访问后,请及时保存 AccessKey 信息,页面关闭后将无法再次获取信息。
步骤三:使用SDK调用OpenAPI
您可以点击链接前往阿里云OpenAPI门户,搜索“AI文档处理”或者其他OpenAPI,查看相关OpenAPI的调用要求,进行在线调用调试或者下载SDK示例进行本地调试。您也可以前往OpenAPI文档中AI文档处理寻找对应的接口文档进行调试。
AI Doc文档解析或者信息抽取主要分为两步:
第一步:提交文档解析或者信息抽取作业。
第二步:根据第一步返回的jobId获取文档解析或者信息抽取结果。
本文以Java代码为例,进行实际操作。
引入pom
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>energyexpertexternal20220923</artifactId>
<version>${请使用最新版本}</version>
</dependency>
本地调试环境变量设置
在环境变量中配置
AccessKey ID:ALIBABA_CLOUD_ACCESS_KEY_ID
AccessKey Secret:ALIBABA_CLOUD_ACCESS_KEY_SECRET
sdk访问地址:ENDPOINT
文件名称:FILE_NAME
待处理的文档URL:FILE_URL
本地文件路径(上传文件流):FILE_PATH
待处理文档所在目录ID:FOLDER_ID
模板ID(仅信息抽取使用):TEMPLATE_ID
TEMPLATE_ID模板ID参见获取模板ID
FOLDER_ID文件夹ID参见获取文档夹ID
ENDPOINT参见服务接入点
文档解析示例
package com.aliyun.aidoc.sample;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.aliyun.energyexpertexternal20220923.Client;
import com.aliyun.energyexpertexternal20220923.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.models.RuntimeOptions;
/**
* @author Energy Expert AI DOC
*
*/
public class DocParsingSample {
static String ACCESS_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String ACCESS_KEY = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
static String ENDPOINT = System.getenv("ENDPOINT");
static String FOLDER_ID = System.getenv("FOLDER_ID");
static String FILE_URL = System.getenv("FILE_URL");
static String FILE_PATH = System.getenv("FILE_PATH");
static String FILE_NAME = System.getenv("FILE_NAME");
public static void main(String[] args) throws Exception {
//本地上传文件
//String taskId = submitDocParsingTaskAdvance();
//使用公网可以访问的url
String taskId = submitDocParsingTask();
//异步提交文档解析任务,处理时长与文件大小相关,需要等一段时间后获取结果
//getDocParsingResult(taskId);
}
static public void getDocParsingResult(String taskId) {
GetDocParsingResultRequest request = new GetDocParsingResultRequest();
request.setTaskId(taskId);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
GetDocParsingResultResponse response = client.getDocParsingResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
static public String submitDocParsingTaskAdvance() throws Exception {
File file = new File(FILE_PATH);
InputStream inputStream = new FileInputStream(file);
SubmitDocParsingTaskAdvanceRequest request = new SubmitDocParsingTaskAdvanceRequest();
request.setFolderId(FOLDER_ID);
request.setFileName(FILE_NAME);
request.setNeedAnalyzeImg(true);
request.setFileUrlObject(inputStream);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
RuntimeOptions runtimeOptions = new RuntimeOptions();
SubmitDocParsingTaskResponse response = client.submitDocParsingTaskAdvance(request, null, runtimeOptions);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public String submitDocParsingTask() {
SubmitDocParsingTaskRequest request = new SubmitDocParsingTaskRequest();
request.setFolderId(FOLDER_ID);
request.setFileName(FILE_NAME);
request.setFileUrl(FILE_URL);
request.setNeedAnalyzeImg(true);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
SubmitDocParsingTaskResponse response = client.submitDocParsingTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
public static Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setReadTimeout(30 * 1000)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(ACCESS_ID)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(ACCESS_KEY);
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = ENDPOINT;
return new Client(config);
}
}
RAG、长文本理解信息抽取示例
package com.aliyun.aidoc.sample;
import com.aliyun.energyexpertexternal20220923.Client;
import com.aliyun.energyexpertexternal20220923.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.models.RuntimeOptions;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
* @author Energy Expert AI DOC
*
*/
public class DocExtractionSample {
static String ACCESS_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String ACCESS_KEY = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
static String ENDPOINT = System.getenv("ENDPOINT");
static String FOLDER_ID = System.getenv("FOLDER_ID");
static String TEMPLATE_ID = System.getenv("TEMPLATE_ID");
static String FILE_URL = System.getenv("FILE_URL");
static String FILE_PATH = System.getenv("FILE_PATH");
static String FILE_NAME = System.getenv("FILE_NAME");
public static void main(String[] args) throws Exception {
//本地上传文件
//String taskId = submitDocExtractionTaskAdvance();
//使用公网可以访问的url
String taskId = submitDocExtractionTask();
//异步提交文档解析任务,处理时长与文件大小相关,需要等一段时间后获取结果
getDocExtractionResult(taskId);
}
static public void getDocExtractionResult(String taskId) throws Exception {
Client client = DocParsingSample.createClient();
GetDocExtractionResultRequest request = new GetDocExtractionResultRequest();
request.setTaskId(taskId);
try {
// 复制代码运行请自行打印 API 的返回值
GetDocExtractionResultResponse response = client.getDocExtractionResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
static public String submitDocExtractionTaskAdvance() throws Exception {
File file = new File(FILE_PATH);
InputStream inputStream = new FileInputStream(file);
SubmitDocExtractionTaskAdvanceRequest request = new SubmitDocExtractionTaskAdvanceRequest();
request.setFolderId(FOLDER_ID);
request.setTemplateId(TEMPLATE_ID);
request.setExtractType("rag");
request.setFileName(FILE_NAME);
request.setFileUrlObject(inputStream);
Client client = DocParsingSample.createClient();
try {
// 复制代码运行请自行打印 API 的返回值
RuntimeOptions runtimeOptions = new RuntimeOptions();
SubmitDocExtractionTaskResponse response = client.submitDocExtractionTaskAdvance(request, null, runtimeOptions);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public String submitDocExtractionTask() throws Exception {
SubmitDocExtractionTaskRequest request = new SubmitDocExtractionTaskRequest();
request.setFolderId(FOLDER_ID);
request.setTemplateId(TEMPLATE_ID);
request.setFileName(FILE_NAME);
request.setFileUrl(FILE_URL);
request.setExtractType("rag");
Client client = DocParsingSample.createClient();
try {
// 复制代码运行请自行打印 API 的返回值
SubmitDocExtractionTaskResponse response = client.submitDocExtractionTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
public static Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setReadTimeout(30 * 1000)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(ACCESS_ID)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(ACCESS_KEY);
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = ENDPOINT;
return new Client(config);
}
}
VL信息抽取示例
package com.aliyun.aidoc.sample;
import com.aliyun.energyexpertexternal20220923.Client;
import com.aliyun.energyexpertexternal20220923.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.models.RuntimeOptions;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
* @author Energy Expert AI DOC
*
*/
public class VLExtractionSample {
static String ACCESS_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String ACCESS_KEY = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
static String ENDPOINT = System.getenv("ENDPOINT");
static String FOLDER_ID = System.getenv("FOLDER_ID");
static String TEMPLATE_ID = System.getenv("TEMPLATE_ID");
static String FILE_URL = System.getenv("FILE_URL");
static String FILE_PATH = System.getenv("FILE_PATH");
static String FILE_NAME = System.getenv("FILE_NAME");
public static void main(String[] args) throws Exception {
//本地上传文件
//String taskId = submitVLExtractionTaskAdvance();
//使用公网可以访问的url
String taskId = submitVLExtractionTask();
//异步提交文档解析任务,处理时长与文件大小相关,需要等一段时间后获取结果
getVLExtractionResult(taskId);
}
static public void getVLExtractionResult(String taskId) {
GetVLExtractionResultRequest request = new GetVLExtractionResultRequest();
request.setTaskId(taskId);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
GetVLExtractionResultResponse response = client.getVLExtractionResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
static public String submitVLExtractionTaskAdvance() throws Exception {
File file = new File(FILE_PATH);
InputStream inputStream = new FileInputStream(file);
SubmitVLExtractionTaskAdvanceRequest request = new SubmitVLExtractionTaskAdvanceRequest();
request.setFolderId(FOLDER_ID);
request.setTemplateId(TEMPLATE_ID);
request.setFileName(FILE_NAME);
request.setFileUrlObject(inputStream);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
RuntimeOptions runtimeOptions = new RuntimeOptions();
SubmitVLExtractionTaskResponse response = client.submitVLExtractionTaskAdvance(request, null, runtimeOptions);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public String submitVLExtractionTask() {
SubmitVLExtractionTaskRequest request = new SubmitVLExtractionTaskRequest();
request.setFolderId(FOLDER_ID);
request.setTemplateId(TEMPLATE_ID);
request.setFileName(FILE_NAME);
request.setFileUrl(FILE_URL);
try {
Client client = createClient();
// 复制代码运行请自行打印 API 的返回值
SubmitVLExtractionTaskResponse response = client.submitVLExtractionTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
public static Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setReadTimeout(30 * 1000)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(ACCESS_ID)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(ACCESS_KEY);
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = ENDPOINT;
return new Client(config);
}
}
知识库问答
在环境变量中配置ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET作为鉴权依据,SDK调用步骤如下:
调用接口GetChatFolderList获取folderId,如果目录不存在需要登录平台创建目录,提交文档解析抽取任务后进行问答;
调用接口CreateChatSession创建session, 参数userId需要调用者自行维护用户唯一性,如果不传默认使用调用者的Id作为userId;
如果需要对历史session进行问答,可以调用接口GetChatSessionList获取sessionId;
调用接口Chat进行问答,问答接口耗时较长,建议超时设置20秒以上;
如果需要获取问答历史列表需要调用GetChatList接口获取。
java代码调用参考:
package com.aliyun.aidoc.sample;
import com.aliyun.energyexpertexternal20220923.*;
import com.aliyun.energyexpertexternal20220923.models.*;
import com.aliyun.tea.*;
import java.util.List;
public class ChatSample {
static String ACCESS_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String ACCESS_KEY = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
static String ENDPOINT = System.getenv("ENDPOINT");
static String User_ID = System.getenv("User_ID");
static String SESSION_NAME = System.getenv("SESSION_NAME");
static String QUESTION = System.getenv("QUESTION");
public static void main(String[] args_) throws Exception {
String folderId = null;
//确定平台上已经创建目录,可以通过接口getChatFolderList获取目录列表
List<ChatFolderItem> folderItems = getChatFolderList();
if (null != folderItems && folderItems.size() > 0) {
folderId = folderItems.get(0).getFolderId();
}
CreateChatSessionResponseBody.CreateChatSessionResponseBodyData session = creatChatSession(folderId, User_ID, SESSION_NAME);
String sessionId = session.getSessionId();
//如果继续使用历史问答,需要调用session列表接口获取sessionId
//getChatSessionList(userId);
chat(sessionId, QUESTION);
//可以调用getChatList获取问答历史记录
//getChatList(sessionId);
}
static public List<ChatFolderItem> getChatFolderList() throws Exception {
Client client = ChatSample.createClient();
try {
// 复制代码运行请自行打印 API 的返回值
GetChatFolderListResponse response = client.getChatFolderList();
return response.getBody().getData();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public List<GetChatSessionListResponseBody.GetChatSessionListResponseBodyDataSessionList> getChatSessionList(String userId) throws Exception {
Client client = ChatSample.createClient();
GetChatSessionListRequest request = new GetChatSessionListRequest();
request.setCurrentPage(1);
request.setPageSize(10);
try {
// 复制代码运行请自行打印 API 的返回值
GetChatSessionListResponse response = client.getChatSessionList(request);
return response.getBody().getData().getSessionList();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public CreateChatSessionResponseBody.CreateChatSessionResponseBodyData creatChatSession(String folderId, String userId, String name) throws Exception {
Client client = ChatSample.createClient();
CreateChatSessionRequest request = new CreateChatSessionRequest();
request.setFolderId(folderId);
request.setUserId(userId);
request.setName(name);
try {
// 复制代码运行请自行打印 API 的返回值
CreateChatSessionResponse response = client.createChatSession(request);
return response.getBody().getData();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
static public void chat(String sessionId, String question) throws Exception {
Client client = ChatSample.createClient();
ChatRequest request = new ChatRequest();
request.setSessionId(sessionId);
request.setQuestion(question);
try {
// 复制代码运行请自行打印 API 的返回值
ChatResponse response = client.chat(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
static public void getChatList(String sessionId) throws Exception {
Client client = ChatSample.createClient();
GetChatListRequest request = new GetChatListRequest();
request.setCurrentPage("1");
request.setPageSize("10");
request.setSessionId(sessionId);
try {
// 复制代码运行请自行打印 API 的返回值
GetChatListResponse response = client.getChatList(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
public static Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setReadTimeout(30 * 1000)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(ACCESS_ID)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(ACCESS_KEY);
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = ENDPOINT;
return new Client(config);
}
}
流式问答
请使用异步java SDK
package com.aliyun.sdk.service.energyexpertexternal20220923;
import com.alibaba.fastjson.JSON;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.energyexpertexternal20220923.models.ChatStreamRequest;
import com.aliyun.sdk.service.energyexpertexternal20220923.models.ChatStreamResponseBody;
import darabonba.core.ResponseIterable;
import darabonba.core.ResponseIterator;
import darabonba.core.client.ClientOverrideConfiguration;
/**
* @author daifeng.yxy 2025/6/30 10:15
*
*/
public class ChatSample {
static String ACCESS_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String ACCESS_KEY = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
static String ENDPOINT = System.getenv("ENDPOINT");
static String SESSION_ID = System.getenv("SESSION_ID");
static String QUESTION = System.getenv("QUESTION");
public static void main(String[] args) throws Exception {
AsyncClient client = ChatSample.createClient();
ChatStreamRequest request = ChatStreamRequest.builder()
.sessionId(SESSION_ID)
.question(QUESTION)
.build();
ResponseIterable<ChatStreamResponseBody> respStream = client.chatStreamWithResponseIterable(request);
ResponseIterator<ChatStreamResponseBody> iterator = respStream.iterator();
while (iterator.hasNext()) {
System.out.println("----event----");
ChatStreamResponseBody event = iterator.next();
System.out.println(JSON.toJSONString(event.getData()));
}
}
public static AsyncClient createClient() throws Exception {
StaticCredentialProvider provider = StaticCredentialProvider.create(
Credential.builder()
.accessKeyId(ACCESS_ID)
.accessKeySecret(ACCESS_KEY)
.build()
);
AsyncClient client = AsyncClient.builder()
.credentialsProvider(provider)
// Service-level configuration
.serviceConfiguration(Configuration.create()
.setSignatureVersion(SignatureVersion.V3)
)
// Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setProtocol("HTTPS")
.setEndpointOverride(ENDPOINT)
)
.build();
return client;
}
}