注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下のドキュメントは、Open AI モデルへのカスタム接続のための構成例と Model Adapter を提供します。ユーザーのユースケースに適しているか確認するために、外部モデル統合の利点を確認してください。
ステップバイステップガイドについては、model adapter の作成方法および外部ホストモデルへの接続作成方法に関するドキュメントを参照してください。
この例を Foundry で使用するには、Code Repositories アプリケーションで model adapter library を使用してモデル adapter を公開し、タグ付けしてください。
この model adapter は、Azure ホストインスタンスの Open AI への接続を構成します。これは Python 3.8.17
、pandas 1.5.3
、および openai 1.1.0
でテストされました。OpenAI クライアントを構築するためには、次の 5 個の入力が必要です:
base_url
- base_url として提供api_type
- connection configuration で提供api_version
- connection configuration で提供engine
- connection configuration で提供api_key
- resolved_credentials として提供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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
import palantir_models as pm import models_api.models_api_executable as executable_api from typing import Optional import openai import logging logger = logging.getLogger(__name__) # OpenAIModelAdapterクラスを定義します。これは、palantirのExternalModelAdapterクラスを継承します。 class OpenAIModelAdapter(pm.ExternalModelAdapter): # 初期化メソッド def __init__(self, base_url, api_type, api_version, engine, api_key): # 使用するエンジンを定義 self.engine = engine # OpenAIの変数を設定 openai.api_type = api_type openai.api_key = api_key openai.api_base = base_url openai.api_version = api_version # 外部コンテキストからOpenAIModelAdapterを初期化するクラスメソッド @classmethod def init_external(cls, external_context) -> "pm.ExternalModelAdapter": base_url = external_context.base_url api_type = external_context.connection_config["api_type"] api_version = external_context.connection_config["api_version"] engine = external_context.connection_config["engine"] api_key = external_context.resolved_credentials["api_key"] return cls( base_url, api_type, api_version, engine, api_key ) # APIの入力と出力を定義するクラスメソッド @classmethod def api(cls): inputs = {"df_in": pm.Pandas(columns=[("prompt", str)])} outputs = {"df_out": pm.Pandas(columns=[("prompt", str), ("prediction", str)])} return inputs, outputs # 予測を行うメソッド def predict(self, df_in): predictions = [] for _, row in df_in.iterrows(): messages = [{"role": "user", "content": row['prompt']}] try: # OpenAIのChatCompletion APIを利用して予測を行います。 response = openai.ChatCompletion.create( engine=self.engine, messages=messages, ) # エラーハンドリング except openai.error.Timeout as e: logger.error(f"OpenAI API request timed out: {e}") raise e except openai.error.APIError as e: logger.error(f"OpenAI API returned an API Error: {e}") raise e except openai.error.APIConnectionError as e: logger.error(f"OpenAI API request failed to connect: {e}") raise e except openai.error.InvalidRequestError as e: logger.error(f"OpenAI API request was invalid: {e}") raise e except openai.error.AuthenticationError as e: logger.error(f"OpenAI API request was not authorized: {e}") raise e except openai.error.PermissionError as e: logger.error(f"OpenAI API request was not permitted: {e}") raise e except openai.error.RateLimitError as e: logger.error(f"OpenAI API request exceeded rate limit: {e}") raise e predictions.append(response.choices[0].message.content) df_in['prediction'] = predictions return df_in
次に、このモデルアダプターを使用するために外部ホストのモデルを設定し、モデルアダプターが要求する設定と資格情報を提供します。
URL と設定と資格情報のマップは、モデルアダプターで定義された同じキーを使用して完成します。
以下の例では、api.llm.palantir.tech
(ポート443)に対して設定されたイーグレスポリシーを使用しています。
外部ホストのモデルに接続するダイアログで公開されたモデルアダプターを選択します。
例の Open AI モデルアダプターが要求する接続設定を定義します。
このアダプターは次の URL を必要とします:https://api.llm.palantir.tech/preview
このアダプターは次の接続設定を必要とします:
例の Open AI モデルアダプターが要求する資格情報設定を定義します。
このアダプターは次の資格情報設定を必要とします:
Open AI モデルが設定されたので、このモデルはライブデプロイメントまたはPythonトランスフォームでホストできます。
以下の画像は、ライブデプロイメントで Open AI モデルに対して行われた例のクエリを示しています。