注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

ブロック

AIP Logic 関数はブロックで構成されます。ブロックは入力を受け取り、出力を返し、データとの個別のインタラクションを担います。ブロックには、オントロジーの読み取りや書き込み、計算の実行、データの集計、ほかの関数の呼び出し、LLM とのインタラクションなど、さまざまな用途があります。ブロックの出力は後続のブロックで使用できるため、ブロックを連結して複雑な操作を構築できます。

ブロックにはさまざまな種類があります。以下では、よく使われるブロックの一部を説明します。

LLM を使用

LLM を使用ブロックは AIP Logic の中核であり、LLM を活用してロジックブロックを定義できます。ロジックブロックは、プロンプト、ツール、出力で構成されます。LLM を使用ブロックは、Palantir の k-LLM の理念に沿って、プラットフォームで利用可能なあらゆる LLM をサポートします。

LLM ブロック。

複数のロジック関数で使用するモデルを一度に置き換えるには、Workflow Lineage でモデルを一括置換できます。

プロンプト

プロンプトは、自然言語で記述された LLM への指示です。最も重要な情報(LLM が完了すべきタスクの概要など)から始め、続いて LLM が必要とするデータと、ツールを使用するタイミングについてのガイダンスを記述することを推奨します。プロンプトを作成するときは、LLM がアクセスできるのは明示的に指定した情報だけであることに留意してください。

以下のプロンプト例では、LLM を使って過去のメールのやり取りから情報を検索し、解決策を求める顧客にレスポンスを提供します。このプロンプト例は、タスクの概要から始まります。

あなたは苦情対応を支援するエージェントです。入力メールに記載されている出来事と類似した出来事が記載されているほかのメールを見つけてください。メール本文だけを確認してください。過去に効果があった対応に基づいて、最善の解決策を特定してください。推奨する解決策を1つ返し、すべてのメールから得た調査結果を列挙しないでください。

次に、プロンプトでクエリ対象のデータを指定します(この場合は、complaint オブジェクトとして表される苦情メールです)。プロンプトを入力した後、プロンプトの項目に / を入力し、ロジック関数のその時点で利用可能な変数(入力やブロックの出力など)を1個以上選択すると、LLM が入力にアクセスできるようになります。オブジェクトまたはオブジェクトセットを選択するとサブメニューが開き、挿入するプロパティを選択できます。以下のスクリーンショットでは、メールオブジェクトのプロパティを選択しています。

タスクの概要を示すプロンプト例。「あなたは苦情対応を支援するエージェントです。入力メールに記載されている出来事と類似した出来事が記載されているほかのメールを見つけてください。メール本文だけを確認してください。過去に効果があった対応に基づいて、最善の解決策を特定してください。推奨する解決策を1つ返し、すべてのメールから得た調査結果を列挙しないでください。」

ツール

ツールは、AIP Logic が LLM にオントロジーの読み取りや書き込みを可能にし、実際の業務を支える仕組みです。AIP Logic は、オントロジーに基づくツールの3つのカテゴリー(データ、ロジック、アクション)を活用し、データの効率的なクエリ、論理演算の実行、安全なアクションの実行を可能にします。LLM はツールに直接アクセスできません。LLM ができるのはツールの使用を要求することだけであり、そのツール呼び出しは、呼び出し元のユーザーの権限の範囲内で AIP Logic によって実行されます。

読み取り時のみ適用

行と列のアクセス制御(制限付きビュー、オブジェクトセキュリティポリシー、プロパティセキュリティポリシーを含む)は、クエリオブジェクトがプロンプトにデータを読み込む際に、ユーザーが読み取れる内容を絞り込みます。これらの制御は、モデルの出力や、アクションを適用によって構成されるオントロジーの編集には及びません。下流に流れるデータの保護を維持するには、これらの制御をマーキングまたは機密情報区分に基づくアクセス制御と組み合わせてください。モデルの全体像については、アクセス制御の伝播を参照してください。

ツール呼び出しモード

AIP Logic は、プロンプトによるツール呼び出しとネイティブのツール呼び出しをサポートします。ネイティブのツール呼び出しは、基盤となる LLM に組み込まれた機能を使用して、パフォーマンスとトークン効率を向上させます。プロンプトによるツール呼び出しは、プロンプトを使用して LLM にツールの使い方を指示します。

LLM を使用ボード内のすべてのモデルがネイティブのツール呼び出しをサポートしている場合、AIP Logic はプロンプトによる呼び出しからネイティブの呼び出しへ自動的にアップグレードし、デバッガーにメッセージを表示します。ネイティブの呼び出しをサポートしていないモデルが1つでもある場合、AIP Logic は引き続きプロンプトによるツール呼び出しを使用します。

選択可能な AIP Logic ツール:アクションを適用、関数を呼び出す、クエリオブジェクト、計算ツール。

利用可能なツールは以下のとおりです。

アクションを適用

アクションを適用ツールを使うと、LLM がアクションを使用してオントロジーを編集できます。指定したアクションを LLM が使用すべきタイミングを記述できます。オントロジーに変更を適用する方法の詳細については、ロジック関数を使用してオントロジーを編集するを参照してください。

「[Titan] Delivery」に「出荷完了日を調整」アクションを適用。

関数を呼び出す

関数を呼び出すツールでは、LLM が呼び出せる関数を選択できます。関数には、リポジトリでコード定義された関数や、既存のロジック関数を使用できます。

関数のドロップダウンから「extractAnswer」関数が選択された、関数を呼び出すツール。

クエリオブジェクト

クエリオブジェクトツールは、LLM がアクセスできるオブジェクトタイプを指定します。必要な数だけオブジェクトタイプを追加でき、クエリのトークン効率を向上させるために、LLM がアクセスできるプロパティを指定できます。

「[Titan] customer order」、「[Titan] Distribution center」、「[Titan] Finished good」の3個のオブジェクトが追加されたクエリオブジェクトツール。

計算ツール

計算ツールを使うと、LLM で正確な数値計算を実行できます。

アクションを適用

アクションを適用ブロックでは、LLM ブロックを経由することなく、アクションを決定論的に呼び出せます。このブロックでは、パラメーターの入力方法を正確に制御でき、実行速度も向上します。この例では、指定したインシデントに優先ステータスを付与するアクションを呼び出せます。

編集をオントロジーに書き戻すには、アクションから AIP Logic 関数を呼び出す必要があります。関数にアクションを適用ブロックが含まれていても、アクションからロジック関数を実行しない限り、オントロジーは編集されません。

「アクションを適用」ブロック。

関数を実行する

関数を実行するブロックでは、TypeScript や Python の関数、さらにはほかのロジック関数など、Foundry 内の既存の関数を呼び出せます。実行ブロックを使うと、ロジックを自分で再実装するのではなく、目的のタスクをすでに実現している既存の関数を再利用できます。以下の例では、実行ブロックを使用してセマンティック検索関数の出力を活用し、類似したインシデントの解決内容のテキストを返すのに役立てています。

実行ブロック1/2。 実行ブロック2/2。

条件分岐

条件分岐は、条件を評価し、その条件が true か false かに基づいて異なるパスを実行するブロックです。条件分岐は、従来のプログラミングにおける「if-then-else」文に相当します。

  • もし条件が true ならば、ある一連の操作を実行します
  • そうでなければ、別の一連の操作を実行します

AIP Logic インターフェースの条件分岐ブロック

条件分岐は、特定の基準に基づいてデータの処理方法を変えたり、異なるアクションを実行したりする必要がある場合に役立ちます。

分岐の戻り値

「Then」または「Else」セクションでは、条件分岐が返す値を定義します。3つの選択肢があります。

  1. パスを定義: 実行するブロックのシーケンスを作成します。
  2. 変数を返す: 既存の変数または前のブロックの出力を返します。
  3. 何もしない: 何も実行しないように分岐を設定します(別の分岐がオントロジーの編集を返す場合に利用可能です)。

注:条件分岐ブロックには複数の分岐を設定でき、それぞれに独自の「When」条件と「Then」アクションを指定できます。

条件分岐を使用する場合、すべての分岐で一貫した出力を返す必要があります。たとえば、1つの分岐が文字列を出力する場合、ほかのすべての分岐(Else 分岐を含む)も文字列を出力する必要があります。分岐がアクションを通じてオントロジーの編集を返す場合、すべての分岐でアクションを実行するか、「何もしない」を明示的に指定する必要があります。

ループ

ループを使用すると、AIP Logic で要素の集まりを反復処理し、各要素に対して変換やアクションを実行できます。ループは、要素のリストに対して操作を実行したり、複数のオブジェクトに対してオントロジーの編集を行ったりする場合に役立ちます。

ループの出力は、値のリストまたはオントロジーの編集のいずれかです。

ループブロック

ループ内では、element 変数を通じて現在の要素にアクセスし、index 変数を通じて現在の要素のインデックスにアクセスできます(必要に応じて、これらの変数名を変更できます)。

ループは List のみを処理し、Array は処理しません。ループの入力として配列を選択すると、ループの前に「Array to List」ブロックが自動的に挿入され、入力がリストに変換されてからループに渡されます。

ループ変換

注:ループにアクションが含まれていない場合、各反復は並列で実行されます。

変数を作成する

変数を作成ブロックは、後続のブロックで使用できる変数を作成します。変数には、配列、ブール値、日付、Double、Float、Integer、Long、オブジェクト、Short、文字列、タイムスタンプのデータ型を使用できます。

変数を作成セクションのブロック。