コンテンツにスキップ

チャットボット

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

プロパティ

No項目入力値デフォルト値アクションプロパティタイプアクションデフォルト値説明
1ID文字列自動設定idstring自動設定[id]プロパティはアクションで設定はできません。
2数値
文字列
640widthnumber/string640コンポーネントの幅
3高さ数値
文字列
480heightnumber/string480コンポーネントの高さ
4X数値
文字列
xnumber/stringX座標の位置
5Y数値
文字列
ynumber/stringY座標の位置
6背景色文字列
カラーピッカー
backgroundColorstringコンポーネントの背景色
7真偽ONborderbooleantrue枠線の表示設定
8数値1borderWidthnumber1枠線の幅
9丸みサイズ数値0roundedSizenumber0角の丸み
10文字列
カラーピッカー
#DDDDDDborderColorstring#DDDDDD枠線の色
11エージェント名色文字列
カラーピッカー
agentNameColorstringエージェント名の文字色
12エージェントメッセージ色文字列
カラーピッカー
agentMessageColorstringエージェントメッセージの文字色
13エージェントメッセージ背景色文字列
カラーピッカー
agentMessageBackgroundColorstringエージェントメッセージの背景色
14ユーザ名色文字列
カラーピッカー
userNameColorstringユーザ名の文字色
15ユーザメッセージ色文字列
カラーピッカー
userMessageColorstringユーザメッセージの文字色
16ユーザメッセージ背景色文字列
カラーピッカー
#BAD6F2userMessageBackgroundColorstring#BAD6F2ユーザメッセージの背景色
17サブミットボタン色文字列
カラーピッカー
submitButtonColorstring送信ボタンの色
18メッセージフォーム入力文字色文字列
カラーピッカー
messageFormInputColorstring入力フォームの文字色
19メッセージフォーム背景色文字列
カラーピッカー
messageFormBackgroundColorstring入力フォームの背景色
20注意テキスト色文字列
カラーピッカー
disclaimerColorstring注意テキストの文字色
21読み取り専用真偽OFFreadOnlybooleanfalse読み取り専用モード
22表示真偽ONvisibilitybooleantrue表示状態
23エージェント名文字列AgentagentNamestringAgentエージェントの名前
24ユーザ名文字列YouuserNamestringYouユーザの名前
25エージェントアバター文字列https://template-ui-image.webperformer.jp/image/Chatbot-Agent_alpha.svgagentAvatarstringhttps://template-ui-image.webperformer.jp/image/Chatbot-Agent_alpha.svgエージェントのアバター画像URL
26ユーザアバター文字列https://template-ui-image.webperformer.jp/image/Chatbot-User_alpha.svguserAvatarstringhttps://template-ui-image.webperformer.jp/image/Chatbot-User_alpha.svgユーザのアバター画像URL
27RAG真偽ONRAG機能の有効化(アクションプロパティなし)
28サービス名選択
1. AWS Bedrock
2. Azure Open AI
3. GCP Vertex AI
AWS Bedrock連携する外部サービス(アクションプロパティなし)
29AI 設定JSONAI設定のJSON(アクションプロパティなし)
30AI クレデンシャル文字列選択ダイアログクレデンシャルファイルパス(アクションプロパティなし)
31システムプロンプト文字列システムプロンプト(アクションプロパティなし)
32メッセージフォーム値文字列messageFormValuestring入力フォームの初期値
33メッセージフォームプレースホルダー文字列Type your message…messageFormPlaceholderstringType your message…入力フォームのプレースホルダー
34メッセージフォーム行数数値1messageFormRowsnumber1入力フォームの行数
35メッセージ表形式[{“role”:“agent”,“content”:“Hello! How can I help you today?”}]messagesarray of object[{“role”:“agent”,“content”:“Hello! How can I help you today?”}]チャットメッセージ
36注意テキスト文字列AI-generated. May contain errors.disclaimerstringAI-generated. May contain errors.注意事項テキスト

外部サービス

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

  • 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(文字列)*> 
            } 
        } 
    } 
}