すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:LLM Q&Aテストページの埋め込みと共有

最終更新日:Jul 26, 2025

OpenSearch LLM ベースの会話型検索エディション コンソールは、Q&Aテストページの埋め込み機能を提供します。この機能を使用すると、ユーザーテストパラメーターを保持しながら、ページを独自の Web アプリケーションに統合できます。また、ログイン不要のページ共有をサポートしており、チーム間のコラボレーションテストを容易にします。

仕組み

ログイン サービス signin.aliyun.com は、URLへのログイン トークンの追加をサポートしています。ユーザーが URL にアクセスすると、まずログイン サービスにアクセスします。有効なログイン トークンを検出すると、ログイン サービスはユーザーをターゲットページにリダイレクトし、Q&Aテストページへのログイン不要のアクセスを可能にします。次の図は、アクセス プロセスを示しています。

  1. ユーザーが Web サービスにアクセスします。

  2. Web サーバーは セキュリティトークンサービス ( STS ) にアクセスし、RAM ユーザーの AccessKey ペアを使用してセキュリティトークンを取得します。

  3. STS はセキュリティトークンを返します。

  4. Web サーバーは シングルサインオン ( SSO ) にアクセスし、セキュリティトークンを使用してログイン トークンを取得します。

  5. ログイン サービスはログイン トークンを返します。

  6. Web サーバーはログイン不要の URL を生成し、クライアントに返します。クライアントは、ログイン不要の URL を使用して OpenSearch LLM ベースの会話型検索エディション Q&Aテストページにアクセスします。

使用上の注意

Q&Aテストページの共有機能を使用する前に、次の点に注意してください。

  • この機能は、RAM ロールを偽装しているユーザーのみが使用できます。

  • STS によって生成されたログオントークンは一時的な認証情報であるため、ページ共有URLはブラウザで1回だけ開くことができます。 URLを再度開くと、サインイントークン エラーが発生します。

  • バックエンドでは検証ロジックが使用されます。サインイン トークンの有効期限が切れる5分前に、Q&Aテストページの共有 URL を再生成することをお勧めします。サインイン トークンの デフォルト の有効期間は1時間です。トークンの有効期限が切れると、ログイン不要のページでサインイン トークン エラーが報告されます。

手順

準備

OpenSearch LLM ベースの会話型検索エディション Q&Aテストページの宛先 URL を記録します。

image

例:

https://opensearch4servims.console.alibabacloud.com/llm-chat?hideTopbar=true&hideSidebar=true&region=cn-shanghai&appName={appname}&options=%7B%22retrieve%22%3A%7B%22doc%22%3A%7B%22filter%22%3A%22%22%2C%22top_n%22%3A5%2C%22sf%22%3A%22%22%2C%22dense_weight%22%3A%220.7%22%2C%22formula%22%3A%22%22%2C%22operator%22%3A%22AND%22%7D%2C%22entry%22%3A%7B%22sf%22%3A%22%22%2C%22filter%22%3A%22%22%7D%2C%22image%22%3A%7B%22sf%22%3A%22%22%2C%22dense_weight%22%3A%220.7%22%7D%2C%22qp%22%3A%7B%22query_extend%22%3Afalse%2C%22query_extend_num%22%3A5%7D%2C%22return_hits%22%3Afalse%2C%22graph%22%3A%7B%22enable%22%3Atrue%7D%2C%22web_search%22%3A%7B%22enable%22%3Afalse%7D%2C%22rerank%22%3A%7B%22enable%22%3Atrue%2C%22model%22%3A%22ops-bge-reranker-larger%22%7D%7D%2C%22chat%22%3A%7B%22stream%22%3Atrue%2C%22prompt_config%22%3A%7B%22attitude%22%3A%22normal%22%2C%22rule%22%3A%22detailed%22%2C%22noanswer%22%3A%22sorry%22%2C%22language%22%3A%22Chinese%22%2C%22role%22%3Afalse%2C%22role_name%22%3A%22AI%E5%B0%8F%E5%8A%A9%E6%89%8B%22%2C%22out_format%22%3A%22text%22%7D%2C%22agent%22%3A%7B%22tools%22%3A%5B%5D%7D%2C%22csi_level%22%3A%22strict%22%2C%22history_max%22%3A%22%22%2C%22link%22%3A%22false%22%2C%22rich_text_strategy%22%3A%22%22%2C%22enable_llm_knowledge%22%3Atrue%7D%7D

RAM ユーザーの作成

  1. 詳細については、「RAM ユーザーを作成し、RAM ユーザーに権限を付与する」をご参照ください。ユーザーを作成する際は、[永続 AccessKey を使用してアクセスする] オプションを選択します。ユーザーの作成後、AccessKey ペアを記録します。

    image

  2. RAM ユーザーに、STS を呼び出すための AliyunSTSAssumeRoleAccess 権限を付与します。

RAM ロールの作成

  1. 詳細については、「RAM ロールを作成し、必要なポリシーをロールにアタッチする」をご参照ください。信頼ポリシーを編集して、RAM ユーザーがロールを偽装することを承認します。

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::106******24:user/<作成された RAM ユーザーのユーザー名>" // 作成されたRAMユーザーのユーザー名
            ]
          }
        }
      ],
      "Version": "1"
    }
  2. RAM ロールに、STS を呼び出すための AliyunOpenSearchReadOnlyAccess 権限を付与します。

  3. RAM ロールの Amazon リソースネーム ( ARN ) を acs:ram::106******24:role/role-name 形式で記録します。

ログオン不要のURLを取得する

OpenSearch LLM ベースの会話型検索エディション Q&Aテストページのログイン不要の URL を作成します。完全なサンプル コードについては、「サンプル コード」をご参照ください。

  1. RAM ユーザーの AccessKey ペアを使用して STS にアクセスし、セキュリティトークンを取得します。必要に応じて、トークンの有効期間を指定できます。サンプル コード:

            // 準備した Q&Aテストページの宛先 URL を入力します。
            String DestinationUrl = ""; // Enter the prepared destination URL of the Q&A test page.
            // RAM ロールの ARN を入力します。
            String RoleArn = ""; // Enter the ARN of the RAM role.
            // RAM ロールセッション名を入力します。
            String RoleSessionName = ""; // Enter the RAM role session name.
    
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // 必須。 コードランタイム環境で ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が指定されていることを確認します。
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is specified in the code runtime environment.
                    // 必須。 コードランタイム環境で ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が指定されていることを確認します。
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is specified in the code runtime environment.
            // エンドポイントを指定します。 詳細については、https://api.aliyun.com/product/Sts をご覧ください。
            config.endpoint = "sts.cn-hangzhou.aliyuncs.com"; // Specify the endpoint. For more information, visit https://api.aliyun.com/product/Sts.
    
            com.aliyun.sts20150401.Client client = new com.aliyun.sts20150401.Client(config);
            com.aliyun.sts20150401.models.AssumeRoleRequest assumeRoleRequest = new com.aliyun.sts20150401.models.AssumeRoleRequest()
                    .setRoleArn(RoleArn)
                    .setRoleSessionName(RoleSessionName);
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            com.aliyun.sts20150401.models.AssumeRoleResponseBody resp = client.assumeRoleWithOptions(assumeRoleRequest, runtime).getBody();
  2. RAM シングルサインオン ( SSO ) にアクセスし、ログイン トークンを取得します。次のサンプル コードは、サポートされている URL 形式を示しています。TicketTypemini に設定する必要があることに注意してください。

    http://signin.aliyun.com/federation?Action=GetSigninToken
                        &AccessKeyId=<STS によって返された一時的な AccessKey ID>
                        &AccessKeySecret=<STS によって返された一時的な AccessKey シークレット>
                        &SecurityToken=<STS によって返されたセキュリティトークン>
                        &TicketType=mini

    出力:

    {
        "RequestId": "******c5fd48789d23773af853e9f7_936be_1706585994094_1.229",
        "SigninToken": "svX6LGcBbWLExKD5hcwdLu6RsLQbv36fWZN36WhxkTXpTcDpmzs2K6X8uFvCqGsBTU4KWJMffYz2rAVbdJXHMECgUfyzS869wh2DBdFEQo3e2fJgZ5YtcMSVnoX7pterS2f7926jFvdBXVFEF54JkUCMrDAutNRv1u7ZReC7v8oQoG5UmjJBbHUyvLTn5UDDvDfNowMVyRskrZRFUKT2qA**********"
    }
  3. 準備したURLにログオントークンを追加して、ログオン不要のURLを生成します。

    http://signin.aliyun.com/federation?Action=Login
                                &LoginUrl=<別のページにリダイレクトするために HTTP ステータスコード 302 を返すように構成されているセルフマネージドWebサイトのログオン URL。 encodeURL を使用して URL をトランスコードする必要があります。> // The logon URL on the self-managed website that is configured to return HTTP status code 302 to redirect to another page. You must use encodeURL to transcode the URL.
                                &Destination=<アクセスする実際の OpenSearch LLMベースの対話型検索エディション Q&Aテストページ。 パラメータが指定されている場合は、encodeURL を使用してパラメータをトランスコードする必要があります。> // The actual OpenSearch LLM-Based Conversational Search Edition Q&A test page to access. If parameters are specified, you must use encodeURL to transcode the parameters.
                                &SigninToken=<取得したログオントークン。 encodeURL を使用してトークンをトランスコードする必要があります。> // The logon token that is obtained. You must use encodeURL to transcode the token.

Q&Aテストページを埋め込む

ログイン不要の URL をiFrame として Web ページに埋め込みます。

重要

このテスト中、ブラウザ で初めてログイン不要の URL にアクセスします。テストが完了すると、使用済みのログイン トークンは無効になります。ログイン不要の URL を再生成する必要があります。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Q&Aテストページの URL 共有</title>
</head>
<body>
<iframe width="1280" height="720" src="ログイン不要の URL"> </iframe>
</body>
</html>

サンプル コード

Q&Aテストページのログイン不要の URL を生成するには、次のサンプル コードを参照できます。

依存関係を追加する

次のコードは、JavaのMavenの依存関係を示しています。

<dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>sts20150401</artifactId>
      <version>1.1.6</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-openapi</artifactId>
      <version>0.3.7</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-console</artifactId>
      <version>0.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-util</artifactId>
      <version>0.2.23</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.13</version> 
    </dependency>

ログイン不要の URL を生成する

次のコードを実行して、ログイン不要の URL を生成します。

package com.aliyun.sample;


import com.aliyun.tea.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

import java.net.URLEncoder;

import static java.lang.System.exit;

public class Sample {

    /**
     * 説明