このトピックでは、AI Doc を使用する場合に関連フィールドを見つけて OpenAPI 操作を呼び出す方法について説明します。
ステップ 1: 準備
AI Doc OpenAPI 操作を呼び出す場合は、いくつかのフィールドに入力する必要があります。これらのフィールドを見つける具体的な手順は次のとおりです。テンプレート ID とフォルダ ID をすでに知っている場合は、対応するセクションをスキップできます。
テンプレート ID を取得する
AI Doc ウェブサイト にログインし、テンプレート管理ページに移動すると、テンプレート ID フィールドが表示されます。

フォルダ ID を取得する
AI Doc ウェブサイト にログインし、ドキュメント解析ページに移動して、表示するフォルダを選択すると、対応するフォルダ ID が右側に表示されます。

ステップ 2: OpenAPI アクセス用の AccessKey ペアを作成する
OpenAPI 操作には、Alibaba Cloud アカウントの AccessKey ペアまたは RAM ユーザーのいずれかを使用できます。この例では、RAM ユーザーの AccessKey ペアを使用します。
Alibaba Cloud コンソール にログインし、ユーザーを作成して、OpenAPI 呼び出しアクセスを選択します。

このユーザーに AliyunEnergyFullAccess 権限を付与します。
後でコード呼び出しで使用する AccessKey ID と AccessKey Secret をコピーします。
OpenAPI 呼び出しアクセスを有効にした後、AccessKey 情報をすぐに保存してください。ページを閉じると、この情報を取得できなくなります。

ステップ 3: SDK を使用して OpenAPI 操作を呼び出す
リンクをクリックして [Alibaba Cloud OpenAPI ポータル] にアクセスし、「AI document processing」またはその他の OpenAPI 操作を検索し、関連する OpenAPI 操作の呼び出し要件を表示し、オンラインでテストするか、[SDK の例をダウンロード] してローカルでテストできます。また、OpenAPI ドキュメント AI ドキュメント処理 にアクセスして、テスト用の対応する API ドキュメントを見つけることもできます。
AI Doc ドキュメント解析または情報抽出は、主に次の 2 つのステップで構成されます。
ステップ 1: ドキュメント解析または情報抽出ジョブを送信します。
ステップ 2: ステップ 1 で返された 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 を取得する をご参照ください。
FOLDER_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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetDocParsingResultResponse response = client.getDocParsingResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
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) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
SubmitDocParsingTaskResponse response = client.submitDocParsingTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// エンドポイント。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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetDocExtractionResultResponse response = client.getDocExtractionResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
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) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
SubmitDocExtractionTaskResponse response = client.submitDocExtractionTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// エンドポイント。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
*
*/
// VL 抽出サンプル
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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetVLExtractionResultResponse response = client.getVLExtractionResult(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
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) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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();
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
SubmitVLExtractionTaskResponse response = client.submitVLExtractionTask(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
return response.getBody().getData().getTaskId();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// エンドポイント。https://api.aliyun.com/product/energyExpertExternal を参照してください。
config.endpoint = ENDPOINT;
return new Client(config);
}
}
ナレッジベース Q&A
認証クレデンシャルとして、環境変数に ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定します。SDK 呼び出し手順は次のとおりです。
GetChatFolderList インターフェースを呼び出して、folderId を取得します。ディレクトリが存在しない場合は、プラットフォームにログインしてディレクトリを作成し、ドキュメント解析および抽出タスクを送信してから、Q&A を実行する必要があります。
CreateChatSession インターフェースを呼び出して、セッションを作成します。userId パラメータは、ユーザーの一意性を確保するために呼び出し元が維持する必要があります。指定しない場合、呼び出し元の ID がデフォルトで userId として使用されます。
履歴セッションで Q&A を実行する必要がある場合は、GetChatSessionList インターフェースを呼び出して sessionId を取得できます。
Chat インターフェースを呼び出して、Q&A を実行します。Q&A インターフェースは比較的時間がかかるため、タイムアウトを 20 秒以上に設定することをお勧めします。
Q&A 履歴リストを取得する必要がある場合は、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();
// 履歴 Q&A を引き続き使用する場合は、セッションリストインターフェースを呼び出して sessionId を取得する必要があります。
//getChatSessionList(userId);
chat(sessionId, QUESTION);
// getChatList を呼び出して Q&A 履歴レコードを取得できます。
//getChatList(sessionId);
}
static public List<ChatFolderItem> getChatFolderList() throws Exception {
Client client = ChatSample.createClient();
try {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetChatFolderListResponse response = client.getChatFolderList();
return response.getBody().getData();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetChatSessionListResponse response = client.getChatSessionList(request);
return response.getBody().getData().getSessionList();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
CreateChatSessionResponse response = client.createChatSession(request);
return response.getBody().getData();
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
ChatResponse response = client.chat(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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 {
// 必要に応じて、操作のレスポンスを表示するコードを記述します。
GetChatListResponse response = client.getChatList(request);
System.out.println(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトの例外を無視しないでください。この例では、例外は参照用にのみ提供されています。
// エラーメッセージ
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);
// エンドポイント。https://api.aliyun.com/product/energyExpertExternal を参照してください。
config.endpoint = ENDPOINT;
return new Client(config);
}
}
ストリーミング Q&A
非同期 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)
// サービスレベルの設定
.serviceConfiguration(Configuration.create()
.setSignatureVersion(SignatureVersion.V3)
)
// クライアントレベルの設定の再書き込み、エンドポイント、HTTP リクエストパラメーターなどを設定できます。
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setProtocol("HTTPS")
.setEndpointOverride(ENDPOINT)
)
.build();
return client;
}
}