コンテンツにスキップ

チャットボット

チャットボットは、ユーザがチャット形式で質問を送信すると、チャット形式で回答が戻るコンポーネントです。
外部サービスで構築したリソースと連携させることで、チャットボット機能およびRAGを利用したチャットボット機能を利用することが出来ます。

ダイアログプロパティ

項目入力値オプションデフォルト値
ID文字列自動設定
数値
文字列
640
高さ数値
文字列
480
X数値
文字列
Y数値
文字列
背景色文字列
カラーピッカー
真偽・オン
・オフ
オン
数値1
丸みサイズ数値0
文字列
カラーピッカー
#DDDDDD
エージェント名色文字列
カラーピッカー
エージェントメッセージ色文字列
カラーピッカー
エージェントメッセージ背景色文字列
カラーピッカー
ユーザ名色文字列
カラーピッカー
ユーザメッセージ色文字列
カラーピッカー
ユーザメッセージ背景色文字列
カラーピッカー
#BAD6F2
サブミットボタン色文字列
カラーピッカー
メッセージフォーム入力文字色文字列
カラーピッカー
メッセージフォーム背景色文字列
カラーピッカー
注意テキスト色文字列
カラーピッカー
読み取り専用真偽・オン
・オフ
オフ
表示真偽・オン
・オフ
オン
エージェント名文字列Agent
ユーザ名文字列You
エージェントアバター文字列https://template-ui-image.webperformer.jp/image/Chatbot-Agent_alpha.svg
ユーザアバター文字列https://template-ui-image.webperformer.jp/image/Chatbot-User_alpha.svg
RAG真偽・オン
・オフ
オン
サービス名選択・AWS Bedrock
・Azure Open AI
・GCP Vertex AI
AWS Bedrock
AI 設定JSON
AI クレデンシャル文字列選択ダイアログ
システムプロンプト文字列
メッセージフォーム値文字列
メッセージフォームプレースホルダー文字列・Type your message… (デフォルト)
・Type your message… (英語)
・メッセージを入力してください… (日本語)
メッセージフォーム行数数値1
メッセージ表形式[{"role":"agent","content":"Hello! How can I help you today?"}](デフォルト)
[{"role":"agent","content":"Hello! How can I help you today?"}](英語)
[{"role":"agent","content":"こんにちは!今日はどんなことをお手伝いしましょうか?"}](日本語)
注意テキスト文字列• AI-generated. May contain errors. (デフォルト)
• AI-generated. May contain errors. (英語)
• AI 応答のため、誤りを含む可能性があります。 (日本語)

アクションプロパティ

項目プロパティデータ型オプションデフォルト値
IDidstring自動設定
widthnumber
string
640
高さheightnumber
string
480
Xxnumber
string
Yynumber
string
背景色backgroundColorstring
borderboolean・true
・false
true
borderWidthnumber1
丸みサイズroundedSizenumber0
borderColorstring#DDDDDD
エージェント名色agentNameColorstring
エージェントメッセージ色agentMessageColorstring
エージェントメッセージ背景色agentMessageBackgroundColorstring
ユーザ名色userNameColorstring
ユーザメッセージ色userMessageColorstring
ユーザメッセージ背景色userMessageBackgroundColorstring#BAD6F2
サブミットボタン色submitButtonColorstring
メッセージフォーム入力文字色messageFormInputColorstring
メッセージフォーム背景色messageFormBackgroundColorstring
注意テキスト色disclaimerColorstring
読み取り専用readOnlyboolean・true
・false
false
表示visibilityboolean・true
・false
true
エージェント名agentNamestringAgent
ユーザ名userNamestringYou
エージェントアバターagentAvatarstringhttps://template-ui-image.webperformer.jp/image/Chatbot-Agent_alpha.svg
ユーザアバターuserAvatarstringhttps://template-ui-image.webperformer.jp/image/Chatbot-User_alpha.svg
メッセージフォーム値messageFormValuestring
メッセージフォームプレースホルダーmessageFormPlaceholderstring・Type your message… (デフォルト)
・Type your message… (英語)
・メッセージを入力してください… (日本語)
メッセージフォーム行数messageFormRowsnumber1
メッセージmessagesarray of object[{"role":"agent","content":"Hello! How can I help you today?"}](デフォルト)
[{"role":"agent","content":"Hello! How can I help you today?"}](英語)
[{"role":"agent","content":"こんにちは!今日はどんなことをお手伝いしましょうか?"}](日本語) 
注意テキストdisclaimerstring• AI-generated. May contain errors. (デフォルト)
• AI-generated. May contain errors. (英語)
• AI 応答のため、誤りを含む可能性があります。 (日本語)

外部サービス

連係することができる外部サービスは下記の通りです。

  • AWS Bedrock
  • Azure OpenAI
  • GCP VertexAI

また、サービス毎にサポートされるリトリーバとエンベディングモデルの組み合わせは以下の表の通りとなります。

サービスリトリーバエンベディングモデル
AWS BedrockAmazon Bedrock Knowledge Bases設定不要
PineconeAmazon Bedrock
Azure Open AIAzure AI SearchAzure Open AI
PineconeAzure Open AI
GCP Vertex AIVertex AI Vector SearchVertex AI
PineconeVertex AI

AI 設定の仕様

AI 設定には、外部サービスで構築したリソースを利用するための設定を記述します。
また、任意で応答内容を制御するための設定を記述することが出来ます。
利用する外部サービスの仕様に合わせて記述してください。

AWS Bedrock:
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-parameters.html

Azure OpenAI:
https://learn.microsoft.com/ja-jp/azure/ai-foundry/openai/reference

GCP Vertex AI:
https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference?hl=ja#request
https://ai.google.dev/gemini-api/docs/safety-settings?hl=ja#javascript
https://cloud.google.com/vertex-ai/docs/general/googleapi-access-methods?hl=ja

サービス パターン 設定項目(*は必須項目です)
AWS Bedrock chat
{ 
    "chat": { 
        "region": <リージョン(文字列)*>, 
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <生成の多様性を制御する確率値(数値)>, 
        "temperature": <生成のランダム値(数値)>, 
        "maxTokens": <応答で出力する最大トークン数(数値)>, 
        "stop": <出力を停止するトークンや文字列のリスト(文字列配列)> 
    } 
}
chat + rag
リトリーバ:Amazon Bedrock Knowledge Bases
{ 
     "chat": { 
        "region": <リージョン(文字列)*>, 
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <生成の多様性を制御する確率値(数値)>, 
        "temperature": <生成のランダム値(数値)>, 
        "maxTokens": <応答で出力する最大トークン数(数値)>, 
        "stop": <出力を停止するトークンや文字列のリスト(文字列配列)>
     }, 
     "rag": { 
         "source": <リトリーバ名(文字列)*>, 
         "param": { 
             "topK": <取得ドキュメント最大件数(数値)*>, 
             "knowledgeBaseId": <Knowledge Base ID(文字列)*>, 
             "region": <リージョン(文字列)*> 
         } 
     } 
}
chat + rag
リトリーバー:Pinecone
{ 
     "chat": { 
        "region": <リージョン(文字列)*>, 
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <生成の多様性を制御する確率値(数値)>, 
        "temperature": <生成のランダム値(数値)>, 
        "maxTokens": <応答で出力する最大トークン数(数値)>, 
        "stop": <出力を停止するトークンや文字列のリスト(文字列配列)>
     }, 
     "rag": { 
         "source": <リトリーバ名(文字列)*>, 
         "param": { 
             "indexName": <インデックス名(文字列)*>, 
             "namespace": <名前空間(文字列)>, 
         }, 
         "embedding": { 
             "region": <リージョン(文字列)*>, 
             "model": <エンベディングモデルの識別子(文字列)*>
         }, 
         "retriever": { 
             "k": <取得ドキュメント最大件数(数値)*> 
         } 
     } 
}
Azure OpenAI chat
{ 
     "chat":{ 
         "azureOpenAIApiDeploymentName": <デプロイメント名(文字列)*>, 
         "azureOpenAIApiInstanceName": <リソース名(文字列)*>, 
         "azureOpenAIApiVersion": <API のバージョン(文字列)*>, 
         "topP": <生成の多様性を制御する確率値(数値)>, 
         "temperature": <生成のランダム値(数値)>, 
         "maxTokens": <応答で出力する最大トークン数(数値)>, 
         "stop": <出力を停止するトークンや文字列のリスト(文字列配列)>, 
         "frequencyPenalty": <同じ語の繰り返しを抑制するためのペナルティ値(数値)>, 
         "presencePenalty": <新しい話題の導入を促すためのペナルティ値(数値)> 
     } 
}
chat+rag
リトリーバ:Azure AI Search

[補足]
インデックス構造は以下の設計にすること
・ id (String) => 取得可能、検索可能
・ content (String) => 取得可能、検索可能
・ content_vector (SingleCollection) => 検索可能
・ metadata (ComplexType)
  〇 source (String) => 取得可能、検索可能
  〇 chunk (String) => 検索可能
  〇 attributes (ComplexTypeCollection)
    ・ key (String) => フィルター可能
    ・ value (String) => 検索可能
{ 
     "chat": {          
         "azureOpenAIApiDeploymentName": <デプロイメント名(文字列)*>, 
         "azureOpenAIApiInstanceName": <リソース名(文字列)*>, 
         "azureOpenAIApiVersion": <API のバージョン(文字列)*>, 
         "topP": <生成の多様性を制御する確率値(数値)>, 
         "temperature": <生成のランダム値(数値)>, 
         "maxTokens": <応答で出力する最大トークン数(数値)>, 
         "stop": <出力を停止するトークンや文字列のリスト(文字列配列)>, 
         "frequencyPenalty": <同じ語の繰り返しを抑制するためのペナルティ値(数値)>, 
         "presencePenalty": <新しい話題の導入を促すためのペナルティ値(数値)> 
     }, 
     "rag": { 
         "source": <リトリーバ名(文字列)*>, 
         "param": { 
             "endpoint": <エンドポイント(文字列)*>, 
             "indexName": <インデックス名(文字列)*>, 
             "search": { 
                 "type": <検索タイプ(文字列)> 
             } 
         }, 
         "embedding": { 
             "azureOpenAIApiDeploymentName": <デプロイメント名(文字列)*>, 
             "azureOpenAIApiInstanceName": <リソース名(文字列)*>, 
             "azureOpenAIApiVersion": <API のバージョン(文字列)*>, 
             "dimensions": <ベクトル化次元数(数値)> 
         }, 
         "retriever": { 
             "k": <取得ドキュメント最大件数(数値)*> 
         } 
     } 
}
chat+rag
リトリーバ:Pinecone
{ 
     "chat": {          
         "azureOpenAIApiDeploymentName": <デプロイメント名(文字列)*>, 
         "azureOpenAIApiInstanceName": <リソース名(文字列)*>, 
         "azureOpenAIApiVersion": <API のバージョン(文字列)*>, 
         "topP": <生成の多様性を制御する確率値(数値)>, 
         "temperature": <生成のランダム値(数値)>, 
         "maxTokens": <応答で出力する最大トークン数(数値)>, 
         "stop": <出力を停止するトークンや文字列のリスト(文字列配列)>, 
         "frequencyPenalty": <同じ語の繰り返しを抑制するためのペナルティ値(数値)>, 
         "presencePenalty": <新しい話題の導入を促すためのペナルティ値(数値)> 
     }, 
     "rag": { 
         "source": <リトリーバ名(文字列)*>, 
         "param": { 
             "indexName": <インデックス名(文字列)*>, 
             "namespace": <名前空間(文字列)> 
         }, 
         "embedding": { 
             "azureOpenAIApiDeploymentName": <デプロイメント名(文字列)*>, 
             "azureOpenAIApiInstanceName": <リソース名(文字列)*>, 
             "azureOpenAIApiVersion": <API のバージョン(文字列)*>, 
             "dimensions": <ベクトル化次元数(数値)> 
         }, 
         "retriever": { 
             "k": <取得ドキュメント最大件数(数値)*> 
         } 
     } 
} 

[補足] azureOpenAIApiInstanceName の代わりに、azureOpenAIEndpoint を指定することも可能 { "azureOpenAIEndpoint": <エンドポイントURL(文字列)*>, }
GCP Vertex AI chat
{ 
    "chat": { 
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <出力の多様性を制御するパラメータ(数値)>, 
        "topK": <確率上位K個のトークンから選択(数値)>, 
        "temperature": <出力のランダム値(低いほど確定的)(数値)>, 
        "maxOutputTokens": <応答で出力される最大トークン数(数値)>, 
        "safetySettings": <安全性設定(配列)>, 
        "stopSequences": <応答出力を停止する文字列のリスト(文字列配列)> 
    } 
}
chat+rag
リトリーバ:Vertex AI Vector Search
{ 
    "chat": {          
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <出力の多様性を制御するパラメータ(数値)>, 
        "topK": <確率上位K個のトークンから選択(数値)>, 
        "temperature": <出力のランダム値(低いほど確定的)(数値)>, 
        "maxOutputTokens": <応答で出力される最大トークン数(数値)>, 
        "safetySettings": <安全性設定(配列)>, 
        "stopSequences": <応答出力を停止する文字列のリスト(文字列配列)> 
    }, 
    "rag": { 
        "source": <リトリーバ名(文字列)*>, 
        "param": { 
            "index": <インデックスID(文字列)*>, 
            "indexEndpoint": <インデックスエンドポイントID(文字列)*>, 
            "location": <リージョン(文字列)*>, 
            "endpoint": <APIエンドポイント(文字列)*>, 
            "deployedIndexId": <デプロイ済インデックスID(文字列)*> 
        }, 
        "docstore": { 
            "bucket": <クラウドストレージ バケット名(文字列)*>, 
            "prefix": <クラウドストレージ プリフィクス名(文字列)*> 
        }, 
        "embedding": { 
            "model": <エンベディングモデルの識別子(文字列)*> 
        }, 
        "retriever": { 
            "k": <取得ドキュメント最大件数(数値)*> 
        } 
    } 
}
chat+rag
リトリーバ:Pinecone
{ 
    "chat": {          
        "model": <AIモデルの識別子(文字列)*>, 
        "topP": <出力の多様性を制御するパラメータ(数値)>, 
        "topK": <確率上位K個のトークンから選択(数値)>, 
        "temperature": <出力のランダム値(低いほど確定的)(数値)>, 
        "maxOutputTokens": <応答で出力される最大トークン数(数値)>, 
        "safetySettings": <安全性設定(配列)>, 
        "stopSequences": <応答出力を停止する文字列のリスト(文字列配列)> 
    }, 
    "rag": { 
        "source": <リトリーバ名(文字列)*>, 
        "param": { 
            "indexName": <インデックス名(文字列)*>, 
            "namespace": <名前空間(文字列)> 
        }, 
        "embedding": { 
            "model": <エンベディングモデルの識別子(文字列)*> 
        }, 
        "retriever": { 
            "k": <取得ドキュメント最大件数(数値)*> 
        } 
    } 
}

AI クレデンシャルファイルの仕様

AI クレデンシャルファイルには、外部サービスで構築したリソースを利用するための認証情報を記述します。

サービス パターン 設定項目(*は必須項目です)
AWS Bedrock chat
{ 
     "chat": { 
         "credentials": { 
             "accessKeyId": <アクセスキーID(文字列)*>, 
             "secretAccessKey": <シークレットアクセスキー(文字列)*> 
         } 
     } 
} 
chat + rag
リトリーバ:Amazon Bedrock Knowledge Bases
{ 
    "chat": {          
        "credentials": { 
            "accessKeyId": <アクセスキーID(文字列)*>, 
            "secretAccessKey": <シークレットアクセスキー(文字列)*> 
        } 
    }, 
    "rag": { 
        "param": { 
            "credentials": { 
                "accessKeyId": <アクセスキーID(文字列)*>, 
                "secretAccessKey": <シークレットアクセスキー(文字列)*> 
            } 
        } 
    } 
}
chat + rag
リトリーバー:Pinecone
{ 
    "chat": {          
        "credentials": { 
            "accessKeyId": <アクセスキーID(文字列)*>, 
            "secretAccessKey": <シークレットアクセスキー(文字列)*> 
        } 
    }, 
    "rag": { 
        "param": { 
            "config": { 
                "apiKey": <APIキー(文字列)*> 
            } 
        }, 
        "embedding": { 
            "credentials": { 
                "accessKeyId": <アクセスキーID(文字列)*>, 
                "secretAccessKey": <シークレットアクセスキー(文字列)*> 
            } 
        } 
    } 
}
Azure OpenAI chat
{ 
    "chat":{ 
        "azureOpenAIApiKey": <API キー(文字列)*> 
    } 
}
chat+rag
リトリーバ:Azure AI Search
{ 
    "chat": {          
         "azureOpenAIApiKey": <API キー(文字列)*> 
    }, 
    "rag": { 
        "param": { 
            "key": <API キー(文字列)*> 
        }, 
        "embedding": { 
            "azureOpenAIApiKey": <API キー(文字列)*> 
        } 
    } 
}
chat+rag
リトリーバ:Pinecone
{ 
    "chat": {          
        "azureOpenAIApiKey": <API キー(文字列)*>
    }, 
    "rag": { 
        "param": { 
            "config": { 
                "apiKey": <APIキー(文字列)*>
            } 
        }, 
        "embedding": { 
            "azureOpenAIApiKey": <API キー(文字列)*>
        } 
    } 
}
GCP Vertex AI chat
{ 
    "chat": { 
        "authOptions": { 
            "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
            "projectId": <プロジェクトID(文字列)*> 
        } 
    } 
}
chat+rag
リトリーバ:Vertex AI Vector Search
{ 
    "chat": {          
       "authOptions": { 
            "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
            "projectId": <プロジェクトID(文字列)*> 
        } 
    }, 
    "rag": { 
        "param": { 
            "authOptions": { 
                "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
                "projectId": <プロジェクトID(文字列)*>, 
                "scopes": <スコープ(文字列配列)*> 
            } 
        }, 
        "docstore": { 
            "authOptions": { 
                "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
                "projectId": <プロジェクトID(文字列)*> 
            } 
        }, 
        "embedding": { 
            "authOptions": { 
                "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
                "projectId": <プロジェクトID(文字列)*> 
            } 
        } 
    } 
}
chat+rag
リトリーバ:Pinecone
{ 
    "chat": {          
        "authOptions": { 
            "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
            "projectId": <プロジェクトID(文字列)*> 
        } 
    }, 
    "rag": { 
        "param": { 
            "config": { 
                "apiKey": <APIキー(文字列)*> 
            } 
        }, 
        "embedding": { 
            "authOptions": { 
                "credentials": <サービスアカウントのキーファイルjson(オブジェクト)*>, 
                "projectId": <プロジェクトID(文字列)*> 
            } 
        } 
    } 
}