注: 以下の翻訳の正確性は検証されていません。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!1import palantir_models as pm 2import models_api.models_api_executable as executable_api 3 4from typing import Optional 5 6import openai 7import logging 8 9logger = logging.getLogger(__name__) 10 11# OpenAIModelAdapterクラスを定義します。これは、palantirのExternalModelAdapterクラスを継承します。 12class OpenAIModelAdapter(pm.ExternalModelAdapter): 13 # 初期化メソッド 14 def __init__(self, base_url, api_type, api_version, engine, api_key): 15 # 使用するエンジンを定義 16 self.engine = engine 17 18 # OpenAIの変数を設定 19 openai.api_type = api_type 20 openai.api_key = api_key 21 openai.api_base = base_url 22 openai.api_version = api_version 23 24 # 外部コンテキストからOpenAIModelAdapterを初期化するクラスメソッド 25 @classmethod 26 def init_external(cls, external_context) -> "pm.ExternalModelAdapter": 27 base_url = external_context.base_url 28 api_type = external_context.connection_config["api_type"] 29 api_version = external_context.connection_config["api_version"] 30 engine = external_context.connection_config["engine"] 31 api_key = external_context.resolved_credentials["api_key"] 32 return cls( 33 base_url, 34 api_type, 35 api_version, 36 engine, 37 api_key 38 ) 39 40 # APIの入力と出力を定義するクラスメソッド 41 @classmethod 42 def api(cls): 43 inputs = {"df_in": pm.Pandas(columns=[("prompt", str)])} 44 outputs = {"df_out": pm.Pandas(columns=[("prompt", str), ("prediction", str)])} 45 return inputs, outputs 46 47 # 予測を行うメソッド 48 def predict(self, df_in): 49 predictions = [] 50 for _, row in df_in.iterrows(): 51 messages = [{"role": "user", "content": row['prompt']}] 52 try: 53 # OpenAIのChatCompletion APIを利用して予測を行います。 54 response = openai.ChatCompletion.create( 55 engine=self.engine, 56 messages=messages, 57 ) 58 # エラーハンドリング 59 except openai.error.Timeout as e: 60 logger.error(f"OpenAI API request timed out: {e}") 61 raise e 62 except openai.error.APIError as e: 63 logger.error(f"OpenAI API returned an API Error: {e}") 64 raise e 65 except openai.error.APIConnectionError as e: 66 logger.error(f"OpenAI API request failed to connect: {e}") 67 raise e 68 except openai.error.InvalidRequestError as e: 69 logger.error(f"OpenAI API request was invalid: {e}") 70 raise e 71 except openai.error.AuthenticationError as e: 72 logger.error(f"OpenAI API request was not authorized: {e}") 73 raise e 74 except openai.error.PermissionError as e: 75 logger.error(f"OpenAI API request was not permitted: {e}") 76 raise e 77 except openai.error.RateLimitError as e: 78 logger.error(f"OpenAI API request exceeded rate limit: {e}") 79 raise e 80 predictions.append(response.choices[0].message.content) 81 df_in['prediction'] = predictions 82 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 モデルに対して行われた例のクエリを示しています。