

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

# OpenSearch Service フローフレームワークテンプレート
<a name="ml-workflow-framework"></a>

Amazon OpenSearch Service フローフレームワークテンプレートを使用すると、一般的なユースケース用のテンプレートを提供することで、複雑な OpenSearch Service のセットアップと前処理タスクを自動化できます。例えば、フローフレームワークテンプレートを使用して機械学習のセットアップタスクを自動化できます。Amazon OpenSearch Service フローフレームワークテンプレートは、JSON または YAML ドキュメントでのセットアッププロセスに関する簡単な説明を提供します。これらのテンプレートでは、会話チャットまたはクエリ生成、AI コネクタ、ツール、エージェント、および OpenSearch Service を生成モデルのバックエンドで使用するために準備するその他のコンポーネントの自動ワークフロー設定について説明されています。

Amazon OpenSearch Service フローフレームワークテンプレートは、特定のニーズに合わせてカスタマイズできます。カスタムフローフレームワークテンプレートの例については、「[flow-framework](https://github.com/opensearch-project/flow-framework/blob/main/sample-templates/deploy-bedrock-claude-model.json)」を参照してください。OpenSearch Service が提供するテンプレートについては、「[workflow-templates](https://opensearch.org/docs/2.13/automating-configurations/workflow-templates/)」を参照してください。詳細な手順、API リファレンス、使用可能なすべての設定のリファレンスを含む包括的なドキュメントについては、オープンソースの OpenSearch ドキュメントの「[automating configuration](https://github.com/opensearch-project/flow-framework/blob/main/sample-templates/deploy-bedrock-claude-model.json)」を参照してください。

**注記**  
フローフレームワークは、OpenSearch Service 2.17 のバックエンドロールフィルタリングをサポートしていません。

# 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\$1enricher 検索プロセッサを追加する。Cohere モデルの API キーを指定する必要があります。 | `create_connector.credential.roleArn`, `create_connector.credential.secretArn` | 
| `multimodal_search_with_bedrock_titan` | Amazon Bedrock マルチモーダルモデルをデプロイし、text\$1image\$1embedding プロセッサとマルチモーダル検索用の k-NN インデックスを使用して取り込みパイプラインを設定する。 AWS 認証情報を入力する必要があります。 | `create_connector.credential.roleArn` | 

**注記**  
シークレット ARN を必要とするすべてのテンプレートのデフォルトは、キー名が「key」のシークレットを 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/) 検索プロセッサを追加します。 | 

# アクセス許可を設定する
<a name="flow-framework-permissions"></a>

バージョン 2.13 以降で新しいドメインを作成する場合、アクセス許可は既に設定されています。バージョン 2.11 以前の既存の OpenSearch Service ドメインでフローフレームワークを有効にしてからバージョン 2.13 以降にアップグレードする場合は、`flow_framework_manager` ロールを定義する必要があります。きめ細かなアクセスコントロールを使用してドメインのウォームインデックスを管理するには、管理者以外のユーザーがこのロールにマッピングされている必要があります。`flow_framework_manager` ロールを手動で作成するには、以下のステップを実行します。

1. OpenSearch Dashboards で、**[セキュリティ]** に進み、**[許可]** を選択します。

1. [**アクショングループの作成**] を選択し、以下のグループを設定します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/flow-framework-permissions.html)

1. **[ロール]**、**[ロールの作成]** の順に選択します。

1. ロール **[flow\$1framework\$1manager]** に名前を付けます。

1. **クラスターの許可** では、`flow_framework_full_access` および `flow_framework_read_access` を選択します。

1. [**インデックス**] では、`*` と入力します。

1. [**インデックスの許可**] では、`indices:admin/aliases/get`、`indices:admin/mappings/get`、および `indices_monitor` を選択します。

1. **[作成]** を選択します。

1. ロールを作成したら、任意のユーザーまたはフローフレームワークインデックスを管理するバックエンドロールに[それをマッピング](fgac.md#fgac-mapping)します。