22. コンフィグレーション

22.1. コンフィグレーションファイル

コンフィグレーションファイルは、対話処理を行うための構成・処理方式を決めるパラメータを記述したファイルで、以下の2種類があります。

  • 対話用コンフィグレーションファイル : 対話エンジンの構成・処理方式を指定するファイル。(以降、’コンフィグファイル’と記載します。)
  • ログ出力用コンフィグレーションファイル : 対話エンジンのログ出力の方式を指定するファイル。(以降、’ログコンフィグ’と記載します。)
コンフィグファイルは、対話エンジンの起動時に、–configオプションで、コンフィグファイルのパスを指定します。
ログコンフィグは、対話エンジンの起動時に、–loggingオプションで、ログコンフィグのファイルパスを指定します。
コンフィグファイルで指定できるフォーマットは、.yaml、.json、.xmlのいずれかです。
-–cformatオプションでフォーマットを指定するか、-–configオプションで指定するコンフィグファイルの拡張子からフォーマットが決まります。

起動コマンド例

python3 ../../src/programy/clients/console.py --config ./config.yaml --cformat yaml --logging ./logging.yaml

22.2. コマンドラインオプション

起動時に指定するコマンドラインオプションには、以下のものがあります。
このコマンドラインオプションは、全てのclientで同じオプション指定を行うことができます。
  • -–config [コンフィグファイルパス] : client実行時に使用するコンフィグファイルのパスを指定します。
  • -–cformat [yaml|json|xml] : コンフィグファイルのフォーマットを指定します。指定はオプションで行い、未指定の場合、コンフィグファイルの拡張子から自動判別します。
  • -–logging [ログコンフィグパス] : ログコンフィグのファイルパスを指定します。
  • -–noloop : 対話処理ループを実行しないオプションです。コンフィグファイルの読み込み、AIMLの読み込みを行い、対話エンジンを終了します。対話エンジンの起動確認用として利用します。
  • -—subs : 代替え引数設定ファイルを指定します。コンフィグファイル内に記載された代数をsubsで指定した内容に置換します。詳細については、 コマンドラインオプションの置換 を参照してください。

通信系のclientでレスポンス内に付加情報を格納する場合のオプションとして、以下の指定もあります。

  • -—version : 対話エンジンのversion名を指定します。レスポンス内に、{“version”: “version名”} の形式で格納されます。未指定の場合には、レスポンス内への格納は行いません。

22.3. コンフィグファイル

コンフィグファイルは、複数のセクションで構成されており、大きく分けて、次の3つのセクションに分類されます。

  • client : アプリケーション層としての構成に関する定義を行うセクションです。
  • bot : 対話要求に対して、対話処理全体の制御を行う層で、発話文の分解や応答時の付加動作等に関する定義を行うセクションです。
  • brain : 発話文毎のマッチ処理やシナリオを実行する層で、要素毎の動作を制御する定義を行うセクションです。
clientのセクションでは、アプリケーション(クライアントアプリ)としての動作環境を定義します。
動作形態には、コンソール起動や、REST通信等の様々なインタフェースがある為、それぞれの動作形態毎に名称(クライアント名)を付与して定義します。
これにより、1つのコンフィグファイルに複数のクライアントアプリ用の構成を定義することができます。
(クライアントアプリ側からクライアント名を指定することで、対応した動作環境が生成されます。)

clientのセクションの共通的な定義として、以下の項目が規定されています。

  • description : clientに関する説明文を指定します。
  • renderer : 対話結果に対する編集等を行う場合の処理クラスを指定します。(対話結果がXML形式の場合の画面描画処理等で利用します。)
  • bot : clientが利用するbot定義の名称を指定しますが、内部処理として’bot’固定で、変更しても無効です。
  • bot_selector : 複数のbotが存在する場合のセレクターの処理クラスを指定しますが、内部処理として指定は無効です。

又、アプリケーションの動作環境に応じた個別の項目も必要に応じて定義します。

コンソールクライアントの個別定義例

console:
    description: Program-Y Console Client
    prompt: ">>>"

REST通信クライアントの個別定義例

yadlan:
    description: Program-Y REST Client
    host: 0.0.0.0
    port: 5100
    debug: false
    workers: 4
    config_key: false
さらに、clientセクションには、対話処理で使用するファイル環境に関する定義を行います。
詳細については、ファイル管理 を参照してください。

botのセクションには、以下のサブセクションがあります。

  • Botコンフィグレーション
    • conversations : 対話履歴に関する項目を定義します。
    • splitter : 発話文の分解に関する項目を定義します。
    • joiner : 応答文生成時の終端文字に関する項目を定義します。
    • spelling : スペルチェックに関する項目を定義します。
    • translation : 翻訳制御に関する項目を定義します。
    • sentiment : 感情判定に関する項目を定義します。

brainのセクションには、以下のサブセクションがあります。

  • Brainコンフィグレーション
    • overrides : 機能拡張に関する項目を定義します。
    • defaults : 取得失敗時等のdefault文字列を定義します。
    • binaries : シナリオのバイナリデータ利用に関する項目を定義します。
    • braintree : シナリオのダンプ出力に関する項目を定義します。
    • services : SubAgent連携機能に関する項目を定義します。
    • nlu : NLU通信に関する項目を定義します。
    • security : 利用制限に関する項目を定義します。
    • oob : OOB(Out of Band)処理に関する項目を定義します。
    • dynamic : 動的データ処理に関する項目を定義します。
    • tokenizer : 単語分解や文字列結合に関する項目を定義します。
    • debugfiles : 異常情報の出力に関する項目を定義します。

22.4. ログコンフィグ

ログコンフィグについては、 ログ設定 を参照してください。