AICOMMAND コマンド

Analytics を外部 AI サービスと統合することで、自然言語データ分析をサポートします。

メモ

AICOMMAND を使用するには、コマンドを実行するコンピューターに互換性のあるバージョンの Python をインストールし、構成する必要があります。次の 2 つの Python ライブラリもインストールする必要があります。Pandas と OpenAI Python API。詳細については、「Python の Analytics 連携用設定」を参照してください。

外部 AI サービスは、Diligent によって提供されません。お客様の組織が提供する必要があります。

組織によって使用が承認されている外部 AI サービスにのみ接続してください。機密データを Analytics から AI サービスに送信する場合は、必ずすべてのセキュリティプロトコルに従ってください。

AI の結果には不正確な部分やエラーが含まれる可能性があります。絶対的な正確さが必要な場合は、別の方法を使用して結果を検証します。

構文

AICOMMAND {<FIELDS> field <...n>|<FIELDS> ALL} <SCRIPT "パスとファイル名"> TO テーブル名 USER_PROMPT "ユーザー プロンプトのテキスト" <PASSWORD num> MODEL "モデル情報" URL "AI サービス API URL" <BATCHSIZE レコードの数> <IF test> <WHILE test> <FIRST range|NEXT range> <OPEN>

パラメーター

名前 説明

FIELDS フィールド名 <...n> | FIELDS ALL

AI サービスに送信するソース Analytics テーブルからのフィールドまたは式。

1 つ以上のフィールドまたは式を指定する必要があります。

  • FIELDS フィールド名指定した 1 つまたは複数のフィールド、または式が含まれます。

    範囲をフィールド名で分けます。フィールドは一覧の順序でエクスポートされます。

    関連付けられたフィールドをエクスポートするには、フィールドの完全修飾名(つまり、テーブル名.フィールド名)を指定します。例:Vendor.Vendor_Name

  • FIELDS ALLテーブルのすべてのフィールドを含めます。

    フィールドは、テーブル レイアウトに現れる順序と同じ並びでエクスポートされます。関連フィールドはエクスポートされません。

メモ

分析目標に厳密に必要なフィールドのみを指定することで、AI サービスに送信されるデータの総量を制限します。

AI サービスから返されたテーブルを元のソース テーブルと結合または関連付ける場合は、一意の識別子フィールドを含めます。詳細については、「一意の識別子フィールドの作成」を参照してください。

SCRIPT "パスとファイル名"

任意

AICOMMAND で独自の Python スクリプトを使用する場合は、スクリプトのファイル パスと名前。

スクリプトを指定した場合、PASSWORD、MODEL、URL はオプションです。詳細については、「独自の Python スクリプトの使用」を参照してください。

TO テーブル名

コマンドの結果を送信する場所:

  • テーブル名結果を Analytics テーブルに保存します

    テーブル名、.FIL ファイル拡張子を持つ引用符で囲まれた文字列として指定します。例:TO "Output.FIL"

    デフォルトでは、テーブル データ ファイル(.FIL)は、Analytics プロジェクトが入っているフォルダーに保存されます。

    既存の異なるフォルダーにデータ ファイルを保存するには、絶対または相対ファイル パスを指定します。

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    メモ

    テーブル名は 64 文字の英数字(.FIL 拡張子を含まない)に制限されています。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。

USER_PROMPT "ユーザー プロンプトのテキスト"

AI サービスに入力するプロンプトのテキスト。

プロンプトは、送信する入力データの処理方法と、必要な出力を AI サービスに指示します。

メモ

ユーザー プロンプトのテキスト は二重引用符 (") で囲む必要があります。ただし、ユーザー プロンプトのテキストの本文には二重引用符を含めないでください。プロンプトのテキストの本文に二重引用符が含まれていると、コマンドが失敗します。プロンプトのテキストには一重引用符 (') を使用できます。

PASSWORD 番号

任意

使用するパスワード定義。

実際のパスワードを入力することを求めたり指定したりするのには、PASSWORD 番号の構文は使用しません。パスワード定義とは、以前に PASSWORD コマンドか SET PASSWORD コマンドを使用して入力または設定されたパスワードのことです。

番号はパスワード定義の番号です。たとえば、以前に 2 つのパスワードをスクリプトで設定したり入力したりしている場合、またはアナリティクス スクリプトをスケジュールしている場合、PASSWORD 2 により、2 番目のパスワードを使用することを指定します。

パスワードの入力または設定の詳細については、次を参照してください。

メモ

AICOMMAND は、キーが保存されていると仮定して、ローカル レジストリに保存されている AI API キーを使用します。キーが保存されていない場合、または別のキーを使用する場合は、PASSWORD を使用する必要があります。詳細については、「外部 AI サービスの接続設定」を参照してください。

MODEL "モデル情報"

使用する特定の AI モデルの識別情報。

例:

MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0"

AI サービスは、使用できるさまざまなモデルを提供する場合があります。

OpenAI と互換性のある大規模言語モデル (LLM)、つまり OpenAI モデル、または OpenAI のモデルと同じ API スキーマを使用するモデルを使用できます。

URL "AI サービス API URL"

AI サービス API の完全な URL。

例:

URL "https://api.anthropic.com/v1"
BATCHSIZE レコードの数

任意

AI サービスに送信される各バッチに含めるレコードの数。

AICOMMAND が失敗した場合は、バッチ サイズに 50 または 25 を指定してみてください。

BATCHSIZE を指定しない場合は、デフォルトのバッチ サイズの 100 レコードが使用されます。

AI サービスは通常、各操作で処理するデータ量を制限します。Analytics テーブル内のレコードはデータ制限内に収まる可能性を高めるために、バッチで AI サービスに送信されます。すべてのバッチに対する AI の回答は、単一の Analytics 出力テーブルに集められます。

IF テスト

任意

現在のレコードを処理するのに満たす必要がある条件。AI サービスに送信されるデータには、この条件を満たすレコードのみが含まれます。

テーブル内の少なくとも 1 つのレコードが IF 条件に含まれている必要があります。条件によってテーブル内のすべてのレコードが除外された場合、結果がエラーになり、コマンドは実行されません。

WHILE テスト

任意

各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。

メモ

WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。

FIRST 範囲 | NEXT 範囲

任意

処理するレコード数:

  • FIRST指定されたレコード数に達するまで、最初のレコードから処理を開始します
  • NEXT指定されたレコード数に達するまで、現在選択されているレコードから処理を開始します

範囲は処理するレコード数を指定します。

FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。

開く

任意

コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。

AI を使用したベンダー評価

ベンダー テーブルの基本チェックを実行して、架空のベンダーが存在する可能性を明らかにします。AI サービスにベンダー名と住所のフィールドを入力し、ベンダーを Common(一般)、Rare(希少)、Unknown(不明)に分類するように指示します。

不明として分類されたベンダーについては、実際に存在するかどうかを判断するために追加の調査が必要になります。

OPEN Vendors
AICOMMAND FIELDS ベンダー名アドレス TO "AI ベンダーの分類" USER_PROMPT "これは一般的に知られているベンダーですか?出力値は、一般的な場合は COMMON、既知でも稀な場合は RARE、そうでない場合は UNKNOWN になる必要があります。"MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1"

AI を使用した費用レビュー

P カード取引をレビューし、品目またはサービスと購入価格との間に不一致がある経費にフラグを付けたいと考えています。AI サービスに経費の説明と経費フィールドを入力し、経費が妥当かどうかを判断するように指示します。

OPEN PcardTransactions
AICOMMAND FIELDS Description UnitCost TO "AI 経費コストレビュー" USER_PROMPT "「説明」と「単価」の組み合わせを考慮して、そのコストが「一般的」か「異常」かを示します。"MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1"

AI を使用したホテル レビューの感情分析

顧客のホテル レビューを含むテーブルで、感情分析と自由回答コメント フィールドの分類を実行したいと考えています。AI サービスにコメントを人間の基本的な 6 つの感情で分類するように指示します。

OPEN hotel_reviews
AICOMMAND FIELDS reviews_rating reviews_text TO "AI ホテル レビュー感情分析" USER_PROMPT "reviews_text フィールドで感情分析を実行し、以下の基本的な人間の感情によってレビューを分類します。幸福、怒り、恐怖、悲しみ、嫌悪、驚きMODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1" BATCHSIZE 50 OPEN

備考

Analytics と外部 AI サービスの統合の動作

フィールドの選択、ユーザー プロンプトの作成、および AICOMMAND の実行は、Analytics と外部 AI サービスの間の往復統合の開始点です。

  1. AnalyticsAICOMMAND は、Analytics テーブルから選択した 1 つまたは複数のフィールドを抽出し、CSV ファイルに保存します。

  2. AnalyticsAICOMMAND は、ユーザー プロンプトと AI サービス API の接続情報を、デフォルトの Python スクリプトまたは作成した Python スクリプトで使用できるようにします。

    デフォルトの Python スクリプトの場所:

    C:\Program Files (x86)\ACL Software\ACL for Windows <version>\acl_py_util\ai_main.py

    注意

    デフォルトの Python スクリプトを移動したり、変更したりしないでください。AICOMMAND のデフォルトの動作は、デフォルトの Python スクリプトが正しい場所にあり、かつ変更されていないことに依存します。

  3. PythonPython スクリプトは CSV ファイルをインポートし、Pandas データフレームに変換します。

  4. PythonPython スクリプトは、データフレームとユーザー プロンプトを AI サービス API に送信します。API データ制限内に収まるようにするために、スクリプトはデータフレームをバッチで送信します。

  5. AI サービスAI サービスは、ユーザー プロンプトの指示に基づいてデータフレームを処理します。

  6. AI サービスAI サービスは、AI 処理の結果を含む ai_response 列を追加して、データフレームを Python スクリプトに返します。

  7. PythonPython スクリプトは返されたデータフレームを Analytics テーブルに変換し、AICOMMAND で指定された出力テーブル名を使用して Analytics にエクスポートします。

  8. AnalyticsAnalytics で出力テーブルを開いて AI 処理の結果を表示したり、その結果を追加のデータ分析の基礎として使用したりすることができます。

独自の Python スクリプトの使用

AICOMMAND では独自の Python スクリプトを使用できます。AI サービス API の操作に必要なロジックを使用してスクリプトを作成します。AICOMMAND では、SCRIPT パラメーターを使用して、スクリプトのパスとファイル名を指定します。

使用可能なアプローチの 1 つとして、AICOMMAND で使用するデフォルトの Python スクリプトを独自のスクリプトの開始点としてコピーできます。デフォルト スクリプトは、Analytics のインストール フォルダーに置かれています。Analytics をデフォルトの場所にインストールした場合、スクリプトは次の場所にあります。

C:\Program Files (x86)\ACL Software\ACL for Windows <version>\acl_py_util\ai_main.py

注意

デフォルトの Python スクリプトを移動したり、変更したりしないでください。AICOMMAND のデフォルトの動作は、デフォルトの Python スクリプトが正しい場所にあり、かつ変更されていないことに依存します。

AICOMMAND で使用される Python スクリプトには、デフォルトのスクリプトか独自のスクリプトかに関係なく、外部 AI サービスの接続設定が含まれている必要があります。独自のスクリプトには、次の 2 つのオプションがあります。

  • Analytics からの接続設定を使用するAICOMMAND パラメーターで指定されたホスト、モデル、AI API キーの値を使用します。

    Python スクリプトで AICOMMAND 値を使用するには、3 つの変数を定義するか、デフォルトの Python スクリプトから変数定義をコピーします。

    an_api_key = os.getenv("ACL_PY_API_KEY")
    ai_base_url = os.getenv("ACL_PY_AI_BASE_URL")
    ai_model = os.getenv("ACL_PY_AI_MODEL")
  • 独自の方法を使用する独自の方法を使用して、ホスト、モデル、AI API キーの値を指定します。独自の方法を使用する場合は、AICOMMAND パラメーターで接続値を指定する必要はありません。

一意の識別子フィールドの作成

AI サービスから返されたテーブルを元のソース テーブルと結合したくても、一意の識別子フィールドがない場合は、AICOMMAND を使用する前に RECNO( ) 関数を使用して識別子フィールドを作成することができます。

  1. ソース テーブルで、以下の式を使用する record_number という名前の演算フィールドを作成します。

    RECNO( )

    RECNO( ) 関数は、テーブル内の各レコードに対して、record_number フィールドに一意のレコード番号を追加します。

    詳細については、DEFINE FIELD .。。COMPUTED コマンド

  2. AICOMMAND を使用し、外部の AI サービスを使用してデータを処理します。

  3. record_number フィールドを共通キーフィールドとして使用し、AI サービスから返されたテーブルをソース テーブルと結合します。

    詳細については、JOIN コマンドを参照してください。

ai_response フィールドでの複数のコンポーネントの分離

AICOMMAND によって返される出力テーブルでは、ai_response フィールドの値が複数のコンポーネントまたは要素を含んでいる場合があります。たとえば、以下に示す 1 つの値には、sentimentsentiment_scorekey_reasonsthemes という 4 つのコンポーネントが含まれています。themes コンポーネントには、3 つの個別の値が含まれています。

感情:Positive, sentiment_score: 0.6, key_reasons(主な理由):clean rooms, friendly staff, breakfast issues(清潔な部屋、フレンドリーなスタッフ、朝食の問題)themes(テーマ):cleanliness, staff, food(清潔さ、スタッフ、食べ物)

後続の分析をサポートするために、次に示す計算式を使用して、構築する個別の計算フィールドにコンポーネントと値を分離できます。

計算フィールドの構築方法に関する一般的な情報については、「演算フィールドの定義」を参照してください。

演算フィールドの名前 計算式 結果値
sentiment(感情)
REGEXREPLACE(ai_response, "sentiment\:\s(.*?),.*", "$1")
評価する
sentiment_score(感情スコア)
VALUE(REGEXREPLACE(ai_response, ".*sentiment_score\:\s(.*?),.*", "$1"), 1)
0.6
key_reasons(主な理由)
REGEXREPLACE(ai_response, ".*key_reasons\:\s(.*?),\sthemes.*", "$1")
clean rooms, friendly staff, breakfast issues(清潔な部屋、フレンドリーなスタッフ、朝食の問題)
テーマ
REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1")
cleanliness, staff, food(清潔さ、スタッフ、食べ物)
theme_1
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 1)
cleanliness(清潔さ)
theme_2
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 2)
staff(スタッフ)
theme_3
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 3)
food(食べ物)