TSv2와 Python의 언어 모델 프록시
TSv2와 Python 함수는 모델 별칭과 프록시 엔드포인트를 사용하여 언어 모델을 호출합니다. 플랫폼 인스턴스에 AIP가 활성화되어 있고 사용자가 AIP builder 기능을 사용할 권한이 있어야 합니다.
모델 가져오기
Resource imports의 Platform SDK 탭을 엽니다.
Add > Models에서 사용할 Palantir 제공 모델이나 등록 모델을 선택합니다.
Confirm selection 후 모델마다 고유 별칭을 정합니다. 아래 코드에는 chatModel이라는 별칭을 구성한 모델을 사용합니다.
이후 목록의 연필 아이콘으로 별칭을 편집할 수 있습니다.
라이브러리와 입력 경계
openai 같은 타사 라이브러리는 미리 설치되어 있다고 가정하지 말고 Libraries에서 추가합니다. 아래는 OpenAI Chat Completions 호환 프록시를 사용하는 예제이며 다른 제공자의 프로토콜은 해당 프록시 계약을 따라야 합니다.
별칭은 실제 모델 RID로 해소됩니다. Foundry 인증 도구와 전송 함수를 사용하므로 OpenAI 서비스의 별도 API 키를 코드에 넣지 않습니다.
TypeScript v2
callOpenAi.ts에서 작성합니다. PlatformClient는 Foundry가 실행 시 전달합니다. 출력 토큰 상한은 max_completion_tokens=200으로 설정합니다.
import { PlatformClient } from "@osdk/client";
import OpenAI from "openai";
import { Aliases } from "@osdk/functions";
import { getFoundryToken, getOpenAiBaseUrl, createFetch } from "@osdk/language-models";
export default async function callOpenAi(client: PlatformClient, prompt: string): Promise<string> {
const modelClient = new OpenAI({
apiKey: await getFoundryToken(client),
baseURL: getOpenAiBaseUrl(client),
fetch: createFetch(client),
});
const completion = await modelClient.chat.completions.create({
model: Aliases.model("chatModel").rid,
messages: [{ role: "user", content: prompt }],
max_completion_tokens: 200,
});
const content = completion.choices[0]?.message.content;
if (content == null) {
throw new Error("모델이 텍스트 완료 결과를 반환하지 않았습니다.");
}
return content;
}
Python
Python은 foundry-platform-sdk의 언어 모델 도구와 functions.aliases를 사용합니다.
from openai import OpenAI
from functions.api import function
from functions.aliases import model
from foundry_sdk.v2.language_models import (
get_openai_base_url,
get_foundry_token,
get_http_client,
)
@function
def get_chat_completion(prompt: str) -> str:
model_client = OpenAI(
api_key=get_foundry_token(preview=True),
base_url=get_openai_base_url(preview=True),
http_client=get_http_client(preview=True),
)
completion = model_client.chat.completions.create(
model=model("chatModel").rid,
messages=[{"role": "user", "content": prompt}],
)
if not completion.choices or completion.choices[0].message.content is None:
raise ValueError("모델이 텍스트 완료 결과를 반환하지 않았습니다.")
return completion.choices[0].message.content
응답의 텍스트가 null이거나 없으면 오류를 반환합니다. 모델 요청 실패도 호출자에게 전파됩니다.
설치 환경에서 모델 별칭은 다른 RID로 다시 매핑할 수 없습니다. 점진적인 응답은 스트리밍 함수로 구성할 수 있습니다.