環境変数の設定
ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。
Alibaba CloudアカウントのAccessKeyペアを使用して、すべてのAPI操作にアクセスできます。API操作の呼び出しや日常のO&Mの実行には、Resource Access Management(RAM)ユーザーを使用することをお勧めします。RAMユーザーの使用方法については、RAMユーザーの作成 を参照してください。
AccessKeyペアの作成方法については、AccessKeyペアの作成 を参照してください。
RAMユーザーのAccessKeyペアを使用する場合は、Alibaba Cloudアカウントを使用して、必要な権限がAliyunServiceRoleForOpenSearchロールに付与されていることを確認してください。詳細については、AliyunServiceRoleForOpenSearch および アクセス許可ルール を参照してください。
プロジェクトコードなど、他の人が簡単にアクセスできる資料にAccessKeyペアを含めないことをお勧めします。そうしないと、AccessKeyペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。
Linux および macOS
次のコマンドを実行します。
<access_key_id>
および<access_key_secret>
を、使用するRAMユーザーのAccessKey IDとAccessKeyシークレットに置き換えます。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows
環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加し、環境変数をAccessKey IDとAccessKeyシークレットに設定します。
AccessKeyペアを有効にするには、Windowsを再起動します。
依存関係
OpenSearch SDKを使用してファイルをアップロードするには、次の依存関係を指定する必要があります。
<dependency>
<groupId>com.aliyun.opensearch</groupId>
<artifactId>aliyun-sdk-opensearch</artifactId>
<version>6.0.0</version>
</dependency>
pip install alibabacloud_tea_util
pip install alibabacloud_opensearch_util
pip install alibabacloud_credentials
V3.4.1 (2021-05-11)
ダウンロードURL:https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230719/mxik/opensearch-sdk-php-release-v3.4.1.zip
テキストをベクトル化するデモコード
BaseRequestについては、Pythonクライアントを使用するためのデモコードを参照してください。
package com.aliyun.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
import java.util.HashMap;
import java.util.Map;
public class LLMSearch {
private static String appName = "OpenSearchアプリケーションの名前"; // アプリケーション名
private static String host = "OpenSearchアプリケーションのAPIエンドポイント"; // APIエンドポイント
private static String path = "/apps/AppName/actions/knowledge-embedding";
public static void main(String[] args) {
// AccessKeyペアを指定します。
// 環境変数からAccessKey IDとAccessKeyシークレットを取得します。このコードを実行する前に、環境変数を設定する必要があります。
String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
//ApiReadTimeOut
OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
openSearch.setTimeout(62000);
OpenSearchClient openSearchClient = new OpenSearchClient(openSearch);
Map<String, String> params = new HashMap<String, String>() {{
put("format", "full_json");
put("_POST_BODY", "{\"content\":\"テストテキスト\",\"query\":false}");
}};
try {
OpenSearchResult openSearchResult = openSearchClient
.callAndDecodeResult(path, params, "POST");
System.out.println("RequestID=" + openSearchResult.getTraceInfo().getRequestId());
System.out.println(openSearchResult.getResult());
} catch (
OpenSearchException e) {
System.out.println("RequestID=" + e.getRequestId());
System.out.println("ErrorCode=" + e.getCode());
System.out.println("ErrorMessage=" + e.getMessage());
} catch (
OpenSearchClientException e) {
System.out.println("ErrorMessage=" + e.getMessage());
}
}
}
# -*- coding: utf-8 -*-
import time, os
from typing import Dict, Any
from Tea.exceptions import TeaException
from Tea.request import TeaRequest
from alibabacloud_tea_util import models as util_models
from BaseRequest import Config, Client
class LLMSearch:
def __init__(self, config: Config):
self.Clients = Client(config=config)
self.runtime = util_models.RuntimeOptions(
connect_timeout=10000,
read_timeout=10000,
autoretry=False,
ignore_ssl=False,
max_idle_conns=50,
max_attempts=3
)
self.header = {}
def searchDoc(self, app_name: str,body:Dict, query_params: dict={}) -> Dict[str, Any]:
try:
response = self.Clients._request(method="POST", pathname=f'/v3/openapi/apps/{app_name}/actions/knowledge-embedding',
query=query_params, headers=self.header, body=body, runtime=self.runtime)
return response
except TeaException as e:
print(e)
if __name__ == "__main__":
# OpenSearch APIのエンドポイントを指定します。値にはhttp://プレフィックスは含まれません。
endpoint = "<endpoint>"
# リクエストプロトコルを指定します。有効な値:HTTPSおよびHTTP。
endpoint_protocol = "HTTP"
# AccessKeyペアを指定します。
# 環境変数からAccessKey IDとAccessKeyシークレットを取得します。
# このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
access_key_id = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID")
access_key_secret = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# 認証方法を指定します。デフォルト値:access_key。stsの値は、Resource Access Management(RAM)およびSecurity Token Service(STS)に基づく認証を指定します。
# 有効な値:stsおよびaccess_key。
auth_type = "access_key"
# RAMおよびSTSに基づく認証を使用する場合は、security_tokenパラメーターを指定する必要があります。Alibaba Cloud RAMのAssumeRole操作を呼び出して、STSトークンを取得できます。
security_token = "<security_token>"
# 共通のリクエストパラメーターを指定します。
# typeおよびsecurity_tokenパラメーターは、SDKをRAMユーザーとして使用する場合にのみ必須です。
Configs = Config(endpoint=endpoint, access_key_id=access_key_id, access_key_secret=access_key_secret,
security_token=security_token, type=auth_type, protocol=endpoint_protocol)
# OpenSearch LLMベースの対話型検索エディションインスタンスを作成します。
# <アプリケーション名>をOpenSearch LLMベースの対話型検索エディションインスタンスの名前に置き換えます。
ops = LLMSearch(Configs)
app_name = "<Application name>"
# --------------- ドキュメントを検索 ---------------
docQuery = {"content":"テストテキスト","query":false}
res1 = ops.searchDoc(app_name=app_name, body=docQuery)
print(res1)
<?php
require_once($path . "/OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// AccessKeyペアを指定します。
// 環境変数からAccessKey IDとAccessKeyシークレットを取得します。
// このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
// AccessKey IDを指定します。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// AccessKeyシークレットを指定します。
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$endPoint = '<OpenSearchアプリケーションのAPIエンドポイント>';
$appName = '<アプリケーション名>';
$options = array('debug' => true);
$requestBody = "{"content":" テストテキスト ","query":false}";
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);
$uri = "/apps/{$appName}/actions/knowledge-embedding";
try{
$ret = $client->post($uri, $requestBody);
print_r(json_decode($ret->result, true));
}catch (\Throwable $e) {
print_r($e);
}
テキストをスライスし、スライスをベクトル化するデモコード
package com.aliyun.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
import java.util.HashMap;
import java.util.Map;
public class LLMSearch {
private static String appName = "OpenSearchアプリケーションの名前"; // アプリケーション名
private static String host = "OpenSearchアプリケーションのAPIエンドポイント"; // APIエンドポイント
private static String path = "/apps/AppName/actions/knowledge-split";
public static void main(String[] args) {
// AccessKeyペアを指定します。
// 環境変数からAccessKey IDとAccessKeyシークレットを取得します。このコードを実行する前に、環境変数を設定する必要があります。
String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
//ApiReadTimeOut
OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
openSearch.setTimeout(62000);
OpenSearchClient openSearchClient = new OpenSearchClient(openSearch);
Map<String, String> params = new HashMap<String, String>() {{
put("format", "full_json");
put("_POST_BODY", "{"title":"テストタイトル","content":"テストテキスト","use_embedding":true}");
}};
try {
OpenSearchResult openSearchResult = openSearchClient
.callAndDecodeResult(path, params, "POST");
System.out.println("RequestID=" + openSearchResult.getTraceInfo().getRequestId());
System.out.println(openSearchResult.getResult());
} catch (
OpenSearchException e) {
System.out.println("RequestID=" + e.getRequestId());
System.out.println("ErrorCode=" + e.getCode());
System.out.println("ErrorMessage=" + e.getMessage());
} catch (
OpenSearchClientException e) {
System.out.println("ErrorMessage=" + e.getMessage());
}
}
}
# -*- coding: utf-8 -*-
import time, os
from typing import Dict, Any
from Tea.exceptions import TeaException
from Tea.request import TeaRequest
from alibabacloud_tea_util import models as util_models
from BaseRequest import Config, Client
class LLMSearch:
def __init__(self, config: Config):
self.Clients = Client(config=config)
self.runtime = util_models.RuntimeOptions(
connect_timeout=10000,
read_timeout=10000,
autoretry=False,
ignore_ssl=False,
max_idle_conns=50,
max_attempts=3
)
self.header = {}
def searchDoc(self, app_name: str,body:Dict, query_params: dict={}) -> Dict[str, Any]:
try:
response = self.Clients._request(method="POST", pathname=f'/v3/openapi/apps/{app_name}/actions/knowledge-split',
query=query_params, headers=self.header, body=body, runtime=self.runtime)
return response
except TeaException as e:
print(e)
if __name__ == "__main__":
# OpenSearch APIのエンドポイントを指定します。値にはhttp://プレフィックスは含まれません。
endpoint = "<endpoint>"
# リクエストプロトコルを指定します。有効な値:HTTPSおよびHTTP。
endpoint_protocol = "HTTP"
# AccessKeyペアを指定します。
# 環境変数からAccessKey IDとAccessKeyシークレットを取得します。
# このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
access_key_id = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID")
access_key_secret = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# 認証方法を指定します。デフォルト値:access_key。stsの値は、RAMとSTSに基づく認証を指定します。
# 有効な値:stsおよびaccess_key。
auth_type = "access_key"
# RAMとSTSに基づく認証を使用する場合は、security_tokenパラメーターを指定する必要があります。Alibaba Cloud RAMのAssumeRole操作を呼び出してSTSトークンを取得できます。
security_token = "<security_token>"
# 共通のリクエストパラメーターを指定します。
# typeおよびsecurity_tokenパラメーターは、SDKをRAMユーザーとして使用する場合にのみ必須です。
Configs = Config(endpoint=endpoint, access_key_id=access_key_id, access_key_secret=access_key_secret,
security_token=security_token, type=auth_type, protocol=endpoint_protocol)
# OpenSearch LLMベースの対話型検索エディションインスタンスを作成します。
# <アプリケーション名>をOpenSearch LLMベースの対話型検索エディションインスタンスの名前に置き換えます。
ops = LLMSearch(Configs)
app_name = "<Application name>"
# --------------- ドキュメントを検索 ---------------
docQuery = {"title":"テストタイトル","content":"テストテキスト","use_embedding":true}
res1 = ops.searchDoc(app_name=app_name, body=docQuery)
print(res1)
<?php
require_once($path . "/OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// AccessKeyペアを指定します。
// 環境変数からAccessKey IDとAccessKeyシークレットを取得します。
// このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
// AccessKey IDを指定します。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// AccessKeyシークレットを指定します。
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$endPoint = '<OpenSearchアプリケーションのAPIエンドポイント>';
$appName = '<アプリケーション名>';
$options = array('debug' => true);
$requestBody = "{"title":"テストタイトル","content":"テストテキスト","use_embedding":true}";
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);
$uri = "/apps/{$appName}/actions/knowledge-split";
try{
$ret = $client->post($uri, $requestBody);
print_r(json_decode($ret->result, true));
}catch (\Throwable $e) {
print_r($e);
}