注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
実行時にモデルを呼び出す関数を使用すると、オントロジーのコンテキストでモデルをデプロイできます。モデル関数は、ライブモデルデプロイメントをラップする、自動生成された関数です。関数リポジトリにインポートしてコードから呼び出すことができます。これにより、モデルの予測の前後にカスタムのビジネスロジックを追加したり、モデルをオントロジーオブジェクトと統合したり、複数のモデル呼び出しをオーケストレーションしたりできます。
モデル関数は、次の2種類のデプロイメントから公開できます。
どちらの方法でも、モデルと同じ入力 API と出力 API を持つ関数が作成されます。関数の動作、バージョンのアップグレード、設定オプションの詳細については、モデル関数開発者ガイドを参照してください。
モデル関数は、TypeScript v1、TypeScript v2、および Python の関数で完全にサポートされています。
ライブデプロイメントの関数をモデル自体または Modeling Objective で作成したら、特定のリポジトリで使用するためにインポートする必要があります。リポジトリの左側のサイドバーにあるリソースのインポートメニューで、追加、クエリ関数を選択します。モデルは、公開時に選択した関数名で検索できます。Python および TypeScript v2 のリポジトリでは、以下のセクションで説明するように、オントロジーに紐付けられたモデル関数のみがサポートされます。
TypeScript v1 のリポジトリでは、モデルを選択してモデル関数をインポートすることもできます。これは、クエリ関数からインポートする場合と機能的に同じです。
推奨されるモデル公開ダイアログの代わりに、Modeling Objectives の API 名カードを使用するレガシーのモデル関数は、引き続き Modeling Objectives セクションからインポートできますが、サンセットの対象となっています。
2026年2月以降、新しいモデル関数はすべてオントロジーに紐付けられます。これは、オントロジーリソースのインポートのみを許可する TypeScript v2 および Python の関数で使用するための前提条件です。それ以前は、モデル関数はモデルのスペースに紐付けられていました。TypeScript v1 では、どちらの種類のモデル関数もインポートできますが、以下で詳しく説明するように、インポートと使用のセマンティクスが若干異なります。
関数がオントロジーに紐付けられているかを確認するには、モデルに移動します。オントロジーに紐付けられていないモデル関数には、移行が利用可能であることが表示されます。関数をオントロジーに紐付けるための移行について、詳しくはこちら。
Marketplace は、リポジトリにインポートされたモデル関数を追跡します。サポート対象のモデル関数を、そのモデルおよび直接デプロイメントとともにパッケージ化することも、インストール時にユーザーが選択する入力として設定することもできます。モデル関数をインポートせずにプラットフォーム SDK を通じて直接クエリする場合、Marketplace はそのモデル関数を追跡しません。
ライブデプロイメントの関数を作成したら、特定のリポジトリで使用するためにインポートする必要があります。その後、ほかのクエリ関数と同様にクエリできます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18from functions.api import function, Double from foundry_sdk_runtime import AllowBetaFeatures from ontology_sdk import FoundryClient from ontology_sdk.ontology.objects import Flight @function(beta=True) def predict_flight_delays(flight: Flight) -> Double: # モデル関数の API に合わせて入力を準備します。 model_output = FoundryClient().ontology.queries.flight_model_deployment( df_in=[ { "lastArrivalTime": flight.last_arrival_time, "lastExpectedArrivalTime": flight.last_expected_arrival_time, }, ] ) return model_output.df_out[0].prediction
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18import { Client } from "@osdk/client"; import { Double } from "@osdk/functions"; import { flightModelDeployment, Flight } from "@ontology/sdk"; async function predictFlightDelays(client: Client, flight: Flight): Promise<Double> { // モデル関数の API に合わせて入力を準備します。 const modelOutput = await client(flightModelDeployment).executeFunction({ "df_in": [ { "lastArrivalTime": flight.lastArrivalTime, "lastExpectedArrivalTime": flight.lastExpectedArrivalTime, }, ] }); return modelOutput.df_out[0].prediction; } export default predictFlightDelays;
まず、関数をインポートする必要があります。
Copied!1 2// モデル関数がオントロジーではなくスペースに関連付けられている場合は、 // Resource imports サイドバーからインポートスニペットをコピーします。
次に、フライトを受け取り、モデル用のデータを準備し、モデルの実行結果を解釈する関数を記述します。モデルは、モデルの入出力仕様または APIに従う非同期関数としてインポートされます。これにより TypeScript は、モデルデプロイメントとの間で送受信されるデータ構造が正しいことをコンパイル時に確認できます。
モデルの API が表形式の入力と表形式の出力をそれぞれちょうど1つ宣言している場合、デフォルトで有効になっている 行単位の処理を有効にするオプションが有効であれば、対応する関数は、入力に指定された列に対応するプロパティを持つ単一の TypeScript オブジェクトを受け付けます。追加の入力または出力を宣言しているモデル API は、行単位の処理の対象にはなりません。以下の predictFlightDelaysRowWise 関数は、このパターンの例を示しています。また、関数内でオブジェクトとともにモデルを使いやすくするために、モデル API で Object または ObjectSet を直接使用することも検討してください。
以下の predictFlightDelays 関数は、FunctionsMap を返します。これは、オブジェクトまたはスカラー値をキーとするマップを返すために使用される TypeScript v1 のデータ型です。この例では、各 Flight オブジェクトを、その予測遅延値にマッピングします。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42import { Function, Double, FunctionsMap } from "@foundry/functions-api"; import { Flight } from "@foundry/ontology-api"; @Function() public async predictFlightDelaysRowWise(flight: Flight): Promise<Double> { // モデル関数の API に合わせて入力を準備します。 // このモデル関数は、1件のフライトを入力として想定しています。 // 複数のフライトを一度に処理するには、 // 行単位の処理を無効にした新しいモデル関数のバージョンを公開します。 // モデル API で Object を直接使用することもできます。 // これにより、モデル API とオブジェクトタイプのプロパティ間の煩雑なマッピングを回避できます。 const modelInput = { "lastArrivalTime": flight.lastArrivalTime, "lastExpectedArrivalTime": flight.lastExpectedArrivalTime, }; // ライブデプロイを呼び出します。 const modelOutput = await FlightModelDeploymentRowWise(modelInput); return modelOutput.prediction; } @Function() public async predictFlightDelays(flights: Flight): Promise<FunctionsMap<Flight, Double>> { let functionsMap = new FunctionsMap(); // モデル関数の API に合わせて入力を準備します。 // ここでは、行単位の処理が有効になっていない場合を扱います。 // モデル API で ObjectSet を直接使用することもできます。 // これにより、モデル API とオブジェクトタイプのプロパティ間の煩雑なマッピングを回避できます。 const dfIn = flights.map(flight => ({ "lastArrivalTime": flight.lastArrivalTime, "lastExpectedArrivalTime": flight.lastExpectedArrivalTime, })); // ライブデプロイを呼び出します。 const modelOutput = await FlightModelDeployment( {"df_in": dfIn} ); for (let i = 0; i < flights.length; i++) { functionsMap.set(flights[i], modelOutput.df_out[i].prediction); } return functionsMap; }
上記の例は、次のモデル API を前提としていることに注意してください。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16import palantir_models as pm class ExampleModelAdapter(pm.ModelAdapter): ... @classmethod def api(cls): inputs = { "df_in": pm.Pandas(columns=[("lastArrivalTime", datetime.datetime), ("lastExpectedArrivalTime", datetime.datetime)]) } outputs = { "df_out": pm.Pandas(columns=[("prediction", float)]) } return inputs, outputs ...
この場合、以下のスニペットのコメントで詳しく説明しているように、インポート構文とクエリ構文の両方を更新する必要があります。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19import { Function, Double } from "@foundry/functions-api"; // オントロジーに紐付けられたモデル関数を使用するには、Queries のインポートを追加します import { Queries, Flight } from "@foundry/ontology-api"; export class MyFunctions { @Function() public async predictFlightDelays(flight: Flight): Promise<Double> { // Queries からAPI名でモデルを呼び出します const modelOutput = await Queries.flightModelDeployment({ "df_in": [ { "lastArrivalTime": flight.lastArrivalTime, "lastExpectedArrivalTime": flight.lastExpectedArrivalTime, }, ] }); return modelOutput.df_out[0].prediction; } }
ユーザーインターフェースから、スペースに紐付けられたモデル関数をオントロジーに紐付けられた関数に移行しても、そのモデルを使用する TypeScript v1 関数の既存の公開済みバージョンは引き続き動作します。ただし、インポート構文が認識されなくなるため、モデル関数を使用するリポジトリのプレビューや、新しいリリースへのタグ付けは機能しなくなります。
移行後に TypeScript v1 関数を更新するには、次の手順に従います。
Foundry プラットフォーム SDK および Functions.Query ↗ メソッドを通じたモデル関数の直接使用は、移行直後に機能しなくなります。これは、この使用パターンでは関数をAPI名で参照しており、そのAPI名がモデル関数のすべてのバージョンにわたって一括で移行されるためです。これらの呼び出し元を修正するには、移行後にAPI名を新しい値に更新します。
モデルは関数の実行の一部として実行されるため、標準の制限がすべて適用されます。 関数がアクションの処理を担っている場合、結果として生じる編集の件数に追加の制限があります。
ライブデプロイメントへの呼び出しでは、モデルの入力データと出力データがネットワーク経由で送信され、その上限は 50 MB です。このネットワーク転送は、関数に設定された制限時間に含まれます。関数のタイムアウトを延長するには、Palantir サポートにお問い合わせください。