注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下のドキュメントでは、Open AIモデルへのカスタム接続の例として、設定とモデルアダプターを提供しています。
手順に沿ったガイドは、モデルアダプターの作成方法と外部ホストされたモデルへの接続の作成方法のドキュメントを参照してください。
この例をFoundryで使用するには、Code Repositoriesアプリケーション内のmodel adapter libraryを使用して、モデルアダプターを公開し、タグを付けます。
このモデルアダプターは、AzureでホストされているOpen AIインスタンスへの接続を設定します。これは Python 3.8.17
、pandas 1.5.3
、および openai 1.1.0
でテストされました。OpenAIクライアントを構築するためには、以下の5つの入力が必要です。
base_url
- base_url として提供されますapi_type
- 接続設定 で提供されますapi_version
- 接続設定 で提供されますengine
- 接続設定 で提供されます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
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__) # OpenAIモデルアダプタークラス 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 @classmethod def init_external(cls, external_context) -> "pm.ExternalModelAdapter": base_url = external_model_context.external_model.base_url api_type = external_model_context.external_model.connection_configuration["api_type"] api_version = external_model_context.external_model.connection_configuration["api_version"] engine = external_model_context.external_model.connection_configuration["engine"] api_key = external_model_context.resolved_credentials["api_key"] return cls( base_url, api_type, api_version, engine, api_key ) @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: 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 モデルに対して行われた例のクエリを示しています。