아래 문서는 Open AI 모델에 대한 사용자 정의 연결에 대한 예시 설정 및 모델 어댑터를 제공합니다.
단계별 가이드는 우리의 문서 모델 어댑터 만드는 방법 및 외부 호스팅 모델에 연결 만들기를 참조해 주세요.
이 예제를 Foundry에서 사용하려면, Code Repositories 애플리케이션에서 모델 어댑터 라이브러리를 사용하여 모델 어댑터를 게시하고 태그하세요.
이 모델 어댑터는 Open AI의 Azure 호스팅 인스턴스에 연결을 설정합니다. 이는 Python 3.8.17
, pandas 1.5.3
, 그리고 openai 1.1.0
을 사용하여 테스트되었습니다. OpenAI 클라이언트를 구축하기 위해 다음의 다섯 가지 입력이 필요합니다:
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 77
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 클래스는 pm.ExternalModelAdapter를 상속받아 OpenAI API와의 연동을 처리합니다. 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 # 예측 함수는 입력 데이터 프레임(df_in)을 받아 OpenAI API를 호출하고 결과를 반환합니다. 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 모델이 구성되었으므로 이 모델은 실시간 배포 또는 파이썬 변환에서 호스트할 수 있습니다.
아래 이미지는 실시간 배포에서 Open AI 모델에 대한 예제 쿼리를 보여줍니다.