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

Python トランスフォームでの汎用チャット補完

GenericChatCompletionRequest と GenericChatCompletionLanguageModel を使用すると、共通の API を通じてテキストの会話を言語モデルに送信できます。モデル入力でモデルを選択し、リクエストにメッセージと生成パラメーターを含めます。

このページでは、palantir_models および language-model-service-api の Python クラスについて説明します。リポジトリのセットアップとモデルの選択については、トランスフォーム内で言語モデルを使用するを参照してください。

例

リポジトリに palantir_models を追加します。<model-rid> をアクセス可能なモデルの完全なリソース識別子に置き換え、出力データセットのパスも置き換えます。この例では、軽量トランスフォームを使用します。

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 import pandas as pd from language_model_service_api.languagemodelservice_api_completion_v3 import ( DialogChatMessage, DialogRole, GenericChatCompletionRequest, ) from palantir_models.models import GenericChatCompletionLanguageModel from palantir_models.transforms import GenericChatCompletionLanguageModelInput from transforms.api import Output, transform @transform.using( model=GenericChatCompletionLanguageModelInput("<model-rid>"), output=Output("/path/to/output/dataset"), ) def compute(model: GenericChatCompletionLanguageModel, output): request = GenericChatCompletionRequest( messages=[ DialogChatMessage( role=DialogRole.SYSTEM, content="Answer questions in one sentence.", ), DialogChatMessage( role=DialogRole.USER, content="Why is the sky blue?", ), ], max_tokens=256, ) response = model.create_chat_completion(request) output.write_table(pd.DataFrame({"completion": [response.completion]}))

GenericChatCompletionLanguageModelInput は、計算関数に GenericChatCompletionLanguageModel を渡します。同じモデル入力とリクエストのデータ型を、@transform(...) を使用する Spark トランスフォームでも使用できます。

GenericChatCompletionRequest

language_model_service_api.languagemodelservice_api_completion_v3 から GenericChatCompletionRequest をインポートします。

Python パラメーターデータ型必須説明
messageslist[DialogChatMessage]はいモデルに送信する会話を順番に格納します。メッセージ構造を参照してください。
temperaturefloatいいえサポートされている場合、サンプリングのランダム性を制御します。サポートされる値と動作は、選択したモデルによって異なります。
stop_sequenceslist[str]いいえモデルがサポートしている場合、生成中にこれらのシーケンスが現れると生成を停止します。
max_tokensintいいえこのリクエストで生成する出力トークンの最大数です。入力トークンは含まれず、選択したモデルの制限が適用されます。

任意のパラメーターは省略できます。すべてのモデルに共通するデフォルト値やサポートされるパラメーター値はありません。省略したパラメーターの動作は、サービスと選択したモデルによって決まります。まず必須のメッセージを指定し、モデルがサポートするパラメーターだけを追加してください。

Python での名前は stop_sequences と max_tokens です。シリアル化されたリクエストでは、これらのフィールドの名前は stopSequences と maxTokens です。

このリクエストは、テキストメッセージと上記の生成パラメーターをサポートします。画像入力、ツール呼び出し、構造化出力スキーマは定義していません。

メッセージ構造

GenericChatCompletionRequest と同じモジュールから DialogChatMessage と DialogRole をインポートします。

フィールドデータ型説明
roleDialogRoleDialogRole.SYSTEM、DialogRole.USER、または DialogRole.ASSISTANT。
contentstrメッセージのテキスト。

会話を構成する際は、次のルールに従ってください。

  • SYSTEM または USER メッセージから始めます。
  • SYSTEM は、必要な場合に最初のメッセージとしてのみ使用します。
  • SYSTEM メッセージの次に USER メッセージを配置します。
  • 任意のシステムメッセージの後は、USER メッセージと ASSISTANT メッセージを交互に配置します。

たとえば、履歴を含む会話では、ロールを SYSTEM、USER、ASSISTANT、USER の順に配置できます。モデルに過去のやり取りをコンテキストとして使用させる場合は、それらを messages に含めます。

GenericChatCompletionResponse

model.create_chat_completion(request) は、次のフィールドを持つ GenericChatCompletionResponse を返します。

Python 属性データ型説明
completionstr生成されたテキスト。このフィールドを読み取って回答を取得します。
token_usageTokenUsageトークン数とモデルのコンテキストウィンドウの上限。

トークン使用量オブジェクトは、入力トークン数を prompt_tokens、出力トークン数を completion_tokens、モデルのコンテキストウィンドウの上限を max_tokens で公開します。コンテキストウィンドウには、入力トークンと出力トークンの両方が含まれます。response.token_usage.max_tokens は、リクエストの出力上限である max_tokens とは意味が異なります。

このレスポンスには、GptChatCompletionResponse で使用される choices リストではなく、completion フィールドがあります。

モデルの選択とカスタムモデル

GenericChatCompletionLanguageModelInput にモデルの RID を設定します。GenericChatCompletionRequest には、モデルやプロバイダーのフィールドはありません。

登録済みモデルの場合は、完全な RID ri.language-model-service..registered-model.<id> を使用します。Python クライアントは、この識別子を使用して登録済みモデルを呼び出します。リクエストを処理するモデルのエンドポイントは、モデルの登録と設定によって決まります。

カスタムモデルの統合を調査する際は、次の点を確認します。

  • 入力が意図したモデルの RID を使用していることと、そのモデルにアクセスできることを確認します。
  • メッセージのロール、順序、内容が、上記のリクエスト構造に従っていることを確認します。
  • 選択したモデルが、任意の各パラメーターをサポートしているか確認します。共通のリクエストのデータ型を使用しても、すべてのモデルで同じ動作になるとは限りません。
  • response.completion から生成された回答を読み取ります。

セルフホスト型モデルや外部モデルを AIP に接続する方法については、独自のモデルを AIP に持ち込むを参照してください。