

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# OpenSearch Service での ML コネクタの作成
<a name="ml-create"></a>

Amazon OpenSearch Service フローフレームワークテンプレートを使用すると、ml-commons で提供される Create Connector API を使用して、ML コネクタを設定およびインストールできます。ML コネクタを使用して、OpenSearch Service を他の AWS サービスやサードパーティーのプラットフォームに接続できます。詳細については、「[Creating connectors for third-party ML platforms](https://opensearch.org/docs/2.13/ml-commons-plugin/remote-models/connectors/)」を参照してください。Amazon OpenSearch Service フローフレームワーク API を使用すると、OpenSearch Service のセットアップタスクと前処理タスクを自動化し、ML コネクタの作成に使用できます。

OpenSearch Service でコネクタを作成する前に、以下を実行する必要があります。
+ Amazon SageMaker AI ドメインを作成する
+ IAM ロールを作成します。
+ パスロールの許可を設定します。
+ OpenSearch Dashboards でフローフレームワークロールと ml-commons ロールをマッピングします。

 AWS サービス用に ML コネクタを設定する方法の詳細については、[AWS 「 サービスの Amazon OpenSearch Service ML コネクタ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html#connector-sagemaker-prereq)」を参照してください。OpenSearch Service ML コネクタをサードパーティープラットフォームで使用する方法の詳細については、「[のサービス用の Amazon OpenSearch Service ML コネクタ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html#connector-sagemaker-prereq)」を参照してください。

## フローフレームワークサービスを使用したコネクタの作成
<a name="ml-workflow"></a>

コネクタを使用してフローフレームワークテンプレートを作成するには、OpenSearch Service ドメインエンドポイントに `POST` リクエストを送信する必要があります。署名付きリクエストを送信するには、cURL、サンプル Python クライアント、Postman、またはその他の方法を使用できます。`POST` リクエストは以下のような形式です。

```
POST /_plugins/_flow_framework/workflow 
{
  "name": "Deploy Claude Model",
  "description": "Deploy a model using a connector to Claude",
  "use_case": "PROVISION",
  "version": {
    "template": "1.0.0",
    "compatibility": [
      "2.12.0",
      "3.0.0"
    ]
  },
  "workflows": {
    "provision": {
      "nodes": [
        {
          "id": "create_claude_connector",
          "type": "create_connector",
          "user_inputs": {
            "name": "Claude Instant Runtime Connector",
            "version": "1",
            "protocol": "aws_sigv4",
            "description": "The connector to Bedrock service for Claude model",
            "actions": [
              {
                "headers": {
                  "x-amz-content-sha256": "required",
                  "content-type": "application/json"
                },
                "method": "POST",
                "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature},  \"anthropic_version\":\"${parameters.anthropic_version}\" }",
                "action_type": "predict",
                "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke"
              }
            ],
            "credential": {
                "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" 
             },
            "parameters": {
              "endpoint": "bedrock-runtime.us-west-2.amazonaws.com",
              "content_type": "application/json",
              "auth": "Sig_V4",
              "max_tokens_to_sample": "8000",
              "service_name": "bedrock",
              "temperature": "0.0001",
              "response_filter": "$.completion",
              "region": "us-west-2",
              "anthropic_version": "bedrock-2023-05-31"
            }
          }
        }
      ]
    }
  }
}
```

ドメインが仮想プライベートクラウド (Amazon VPC) に存在する場合は、リクエストで AI コネクタを正常に作成するには、Amazon VPC に接続している必要があります。Amazon VPC へのアクセスはネットワーク構成によって異なりますが、通常は VPN あるいは社内ネットワークへの接続が必要になります。OpenSearch Service ドメインにアクセスできるかを確認するには、ウェブブラウザで `https://{{your-vpc-domain}}.{{region}}.es.amazonaws.com` を開き、デフォルトの JSON 応答を受信していることを確認します。({{プレースホルダーテキスト}}を独自の値に置き換えます。

### Python クライアントのサンプリング
<a name="ml-python-sample"></a>

Python クライアントは、`HTTP` リクエストよりも自動化が容易で、再利用性が向上します。Python クライアントで AI コネクタを作成するには、以下のサンプルコードを Python ファイルに保存します。このクライアントには、[AWS SDK for Python (Boto3)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html#connector-sagemaker-prereq)、[Requests:HTTP for Humans](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html#connector-sagemaker-prereq)、および [requests-aws4auth 1.2.3](https://pypi.org/project/requests-aws4auth/) パッケージが必要です。

```
import boto3
import requests 
from requests_aws4auth import AWS4Auth

host = 'domain-endpoint/'
region = 'region'
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

path = '_plugins/_flow_framework/workflow'
url = host + path

payload = {
  "name": "Deploy Claude Model",
  "description": "Deploy a model using a connector to Claude",
  "use_case": "PROVISION",
  "version": {
    "template": "1.0.0",
    "compatibility": [
      "2.12.0",
      "3.0.0"
    ]
  },
  "workflows": {
    "provision": {
      "nodes": [
        {
          "id": "create_claude_connector",
          "type": "create_connector",
          "user_inputs": {
            "name": "Claude Instant Runtime Connector",
            "version": "1",
            "protocol": "aws_sigv4",
            "description": "The connector to Bedrock service for Claude model",
            "actions": [
              {
                "headers": {
                  "x-amz-content-sha256": "required",
                  "content-type": "application/json"
                },
                "method": "POST",
                "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature},  \"anthropic_version\":\"${parameters.anthropic_version}\" }",
                "action_type": "predict",
                "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke"
              }
            ],
            "credential": {
                "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" 
             },
            "parameters": {
              "endpoint": "bedrock-runtime.us-west-2.amazonaws.com",
              "content_type": "application/json",
              "auth": "Sig_V4",
              "max_tokens_to_sample": "8000",
              "service_name": "bedrock",
              "temperature": "0.0001",
              "response_filter": "$.completion",
              "region": "us-west-2",
              "anthropic_version": "bedrock-2023-05-31"
            }
          }
        }
      ]
    }
  }
}

headers = {"Content-Type": "application/json"}

r = requests.post(url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)
```

#### 事前定義されたワークフローテンプレート
<a name="ml-predefined"></a>

Amazon OpenSearch Service には、一般的な機械学習 (ML) のユースケース用に複数のワークフローテンプレートが用意されています。テンプレートを使用すると、複雑なセットアップが簡単になるほか、セマンティック検索や会話検索などのユースケースの多数のデフォルト値を活用できます。ワークフローテンプレートは、Create Workflow API を呼び出すときに指定できます。
+ OpenSearch Service が提供するワークフローテンプレートを使用するには、`use_case` クエリパラメータとしてテンプレートのユースケースを指定します。
+ カスタムワークフローテンプレートを使用するには、リクエスト本文に完全なテンプレートを指定します。カスタムテンプレートの例については、JSON テンプレートの例または YAML テンプレートの例を参照してください。

#### テンプレートのユースケース
<a name="templates"></a>

この表は、使用可能なさまざまなテンプレートの概要、テンプレートの説明、および必要なパラメータを示しています。


| テンプレートのユースケース | 説明 | 必須パラメータ | 
| --- | --- | --- | 
| `bedrock_titan_embedding_model_deploy` | Amazon Bedrock 埋め込みモデルを作成してデプロイする (デフォルトでは `titan-embed-text-v1` | `create_connector.credential.roleArn` | 
| `bedrock_titan_embedding_model_deploy` | Amazon Bedrock マルチモーダル埋め込みモデルを作成してデプロイする (デフォルトでは `titan-embed-text-v1` | `create_connector.credential.roleArn` | 
| `cohere_embedding_model_deploy` | Cohere 埋め込みモデルを作成してデプロイする (デフォルトでは embed-english-v3.0)。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `cohere_chat_model_deploy` | Cohere チャットモデルを作成してデプロイする (デフォルトでは Cohere コマンド)。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `open_ai_embedding_model_deploy` | OpenAI 埋め込みモデルを作成してデプロイする (デフォルトでは text-embedding-ada-002)。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `openai_chat_model_deploy` | OpenAI チャットモデルを作成してデプロイする (デフォルトでは gpt-3.5-turbo)。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `semantic_search_with_cohere_embedding` | セマンティック検索を設定し、Cohere 埋め込みモデルをデプロイする。Cohere モデルの API キーを指定する必要があります。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `semantic_search_with_cohere_embedding_query_enricher` | セマンティック検索を設定し、Cohere 埋め込みモデルをデプロイする。ニューラルクエリのデフォルトのモデル ID を設定する query\_enricher 検索プロセッサを追加する。Cohere モデルの API キーを指定する必要があります。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `multimodal_search_with_bedrock_titan` | Amazon Bedrock マルチモーダルモデルをデプロイし、text\_image\_embedding プロセッサとマルチモーダル検索用の k-NN インデックスを使用して取り込みパイプラインを設定する。 AWS 認証情報を入力する必要があります。 | `create_connector.credential.roleArn` | 

**注記**  
シークレット ARN を必要とするすべてのテンプレートの場合、デフォルトは「キー」のキー名を持つシークレットを AWS Secrets Manager に保存します。

## 事前トレーニング済みモデルを含むデフォルトのテンプレート
<a name="ml-pretrained-default"></a>

Amazon OpenSearch Service には、オープンソースの OpenSearch Service では利用できない 2 つの追加のデフォルトワークフローテンプレートが用意されています。


| テンプレートのユースケース | 説明 | 
| --- | --- | 
| `semantic_search_with_local_model` | [セマンティック検索](https://opensearch.org/docs/2.14/search-plugins/semantic-search/)を設定し、事前トレーニング済みモデル (`msmarco-distilbert-base-tas-b`) をデプロイします。ニューラルクエリのデフォルトのモデル ID を設定し、「my-nlp-index」というリンクされた k-NN インデックスを作成する [https://opensearch.org/docs/2.14/search-plugins/search-pipelines/neural-query-enricher/](https://opensearch.org/docs/2.14/search-plugins/search-pipelines/neural-query-enricher/) 検索プロセッサを追加します。 | 
| `hybrid_search_with_local_model` | [ハイブリッド検索](https://opensearch.org/docs/2.14/search-plugins/hybrid-search/)を設定し、事前トレーニング済みモデル (`msmarco-distilbert-base-tas-b`) をデプロイします。ニューラルクエリのデフォルトのモデル ID を設定し、「my-nlp-index」というリンクされた k-NN インデックスを作成する [https://opensearch.org/docs/2.14/search-plugins/search-pipelines/neural-query-enricher/](https://opensearch.org/docs/2.14/search-plugins/search-pipelines/neural-query-enricher/) 検索プロセッサを追加します。 | 