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

Palantir提供の言語モデルをトランスフォーム内で使用する

前提条件

Palantir提供の言語モデルを使用するには、まずユーザーのエンロールメントでAIPを有効化する必要があります。

Palantirは、一連の言語および埋め込みモデルを提供しており、これらはPythonトランスフォーム内で使用することができます。モデルは palantir_models ライブラリを通じて使用できます。このライブラリは、transforms.api.transformデコレータと共に使用できる一連の FoundryInputParams を提供しています。

リポジトリのセットアップ

言語モデルのサポートをトランスフォームに追加するには、コードリポジトリの左側にあるライブラリ検索パネルを開きます。palantir_models を検索し、ライブラリ タブの中で ライブラリを追加してインストール を選択します。

その後、コードリポジトリはすべての依存関係を解決し、再度チェックを実行します。チェックには少し時間がかかる場合がありますが、完了後、トランスフォームでライブラリを使用できるようになります。

トランスフォームのセットアップ

前提条件

palantir_model クラスは、transforms.api.transformデコレータとのみ使用できます。

この例では、palantir_models.transforms.OpenAiGptChatLanguageModelInput を使用します。まず、OpenAiGptChatLanguageModelInput をPythonファイルにインポートします。このクラスは、トランスフォームの作成に使用できるようになります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel @transform( # 入力データセットへのパスを指定します source_df=Input("/path/to/input/dataset"), # 使用する言語モデルを指定します。ここでは、OpenAiのGPT-4(Azure版)を利用します model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4_azure"), # 出力データセットへのパスを指定します output=Output("/path/to/output/dataset"), ) # この関数は、ソースデータフレームとモデルを入力として受け取り、何らかの計算を行った後に出力します def compute_generic(ctx, source_df, model: OpenAiGptChatLanguageModel, output): ...

リソース識別子の入力を開始すると、使用可能なモデルを示すドロップダウンメニューが自動的に表示されます。ドロップダウンから希望のオプションを選択できます。

ユーザーが "ri." を入力した後に選択可能なLLMを表示するドロップダウンメニュー

言語モデルを使用して補完を生成する

この例では、言語モデルを使用して、入力データセットの各レビューのセンチメントを決定します。OpenAiGptChatLanguageModelInput は、ランタイムでトランスフォームに OpenAiGptChatLanguageModel を提供し、それを使用してレビューの補完を生成することができます。

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 # 必要なライブラリをインポートします from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel from language_model_service_api.languagemodelservice_api_completion_v3 import GptChatCompletionRequest from language_model_service_api.languagemodelservice_api import ChatMessage, ChatMessageRole # データセットとモデルを入力として受け取り、出力パスに結果を書き出す変換を定義します @transform( reviews=Input("/path/to/reviews/dataset"), # レビューデータセットのパス model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4_azure"), # 使用するモデル output=Output("/output/path"), # 出力結果を保存するパス ) def compute_sentiment(ctx, reviews, model: OpenAiGptChatLanguageModel, output): # レビューの内容を受け取り、その感情を判断する関数を定義します def get_completions(review_content: str) -> str: system_prompt = "Take the following review determine the sentiment of the review" # システムのプロンプトメッセージ # チャットメッセージのリクエストを作成します request = GptChatCompletionRequest( [ChatMessage(ChatMessageRole.SYSTEM, system_prompt), ChatMessage(ChatMessageRole.USER, review_content)] ) # モデルを使用してチャットの完了を作成します resp = model.create_chat_completion(request) # 返信の最初の選択肢の内容を返します return resp.choices[0].message.content # pandasのデータフレームとしてレビューデータを読み込みます reviews_df = reviews.pandas() # 各レビューの内容について感情を判断し、その結果を新しい列として追加します reviews_df['sentiment'] = reviews_df['review_content'].apply(get_completions) # pandasのデータフレームをSparkのデータフレームに変換します out_df = ctx.spark_session.createDataFrame(reviews_df) # 結果を指定した出力パスに書き出します return output.write_dataframe(out_df)

エンベディング

生成言語モデルとともに、Palantir はエンベディングモデルも提供しています。次の例では、palantir_models.transforms.GenericEmbeddingModelInput を使用して、同じ reviews データセットに対してエンベディングを計算する方法を示しています。GenericEmbeddingModelInput は、ランタイムでトランスフォームに GenericEmbeddingModel を提供し、各レビューのエンベディングを計算するために使用できます。

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 from transforms.api import transform, Input, Output # 必要なライブラリをインポート from language_model_service_api.languagemodelservice_api_embeddings_v3 import GenericEmbeddingsRequest from palantir_models.models import GenericEmbeddingModel from palantir_models.transforms import GenericEmbeddingModelInput @transform( # 入力データとモデルを指定 reviews=Input("/path/to/reviews/dataset"), embedding_model=GenericEmbeddingModelInput("ri.language-model-service..language-model.text-embedding-ada-002_azure"), output=Output("/path/to/embedding/output") ) def compute_embeddings(ctx, reviews, embedding_model: GenericEmbeddingModel, output): # 内部関数でエンベッディングを生成 def internal_create_embeddings(val: str): return embedding_model.create_embeddings(GenericEmbeddingsRequest(inputs=[val])).embeddings # pandasデータフレームに変換 reviews_df = reviews.pandas() # レビューコンテンツに適用してエンベッディングを計算 reviews_df['embedding'] = reviews_df['review_content'].apply(internal_create_embeddings) # 出力データフレームを作成 out_df = ctx.spark_session.createDataFrame(reviews_df) # 結果を書き込む return output.write_dataframe(out_df)