함수에서 Foundry Platform SDK 사용
Platform SDK는 관리와 거버넌스, 스케줄과 빌드 및 미디어 집합 같은 Foundry API를 함수에서 호출하는 도구입니다. 온톨로지 객체를 주로 다루는 OSDK와 역할을 구분합니다. TSv1에는 이 경로의 기본 인증 통합을 지원하지 않으므로 TSv2나 Python이 권장됩니다.
라이브러리와 Python 버전
Libraries에서 Python은 foundry-platform-sdk, TypeScript는 @osdk/foundry를 추가합니다.
Python 요구 버전은 SDK 릴리스의 Requires-Python을 따라야 합니다. 1.110.0은 Python 3.10 이상 4.0 미만을 요구합니다. Python 3.14 지원은 SDK 1.93.0부터 시작하므로 그 이전 SDK를 3.14에서 사용하면 typing 오류가 날 수 있습니다. SDK를 올리거나 호환되는 Python 3.11, 3.12 또는 3.13 환경을 사용합니다.
TSv2의 @osdk/client는 템플릿에 사전 설치된 라이브러리이며 녹색 핀으로 확인할 수 있습니다.
인증된 클라이언트
TSv2 함수의 Client 또는 PlatformClient 인수는 Foundry가 런타임에 채웁니다. 온톨로지와 함께 작업하면 Client, 플랫폼 API만 사용하면 PlatformClient를 사용합니다.
Python의 FoundryClient는 함수 환경의 인증 문맥으로 초기화합니다. 외부 애플리케이션에서 이 코드를 사용하는 경우에는 그 앱의 인증 구성이 별도로 필요합니다.
TypeScript의 모델 쿼리 호출
다음 useLlm.ts는 Palantir 함수 쿼리의 메시지 스키마를 사용합니다. role 값 USER는 OpenAI 프록시의 소문자 user와 다른 계약입니다. 호출하려는 모델에 대한 실제 권한이 필요합니다.
import { PlatformClient } from "@osdk/client";
import { Functions } from "@osdk/foundry";
export default async function useLlm(client: PlatformClient, prompt: string): Promise<string> {
const result = await Functions.Queries.execute(
client,
"com.foundry.languagemodelservice.models.gpt41.CreateChatCompletion",
{ parameters: { messages: [{ role: "USER", content: prompt }] } },
{ preview: true }
);
const completion = result.value["completion"];
if (typeof completion !== "string") {
throw new Error("모델 쿼리가 문자열 completion을 반환하지 않았습니다.");
}
return completion;
}
preview는 이 불안정 엔드포인트의 호출 옵션입니다. 모든 플랫폼 API에 일괄 추가하는 값은 아닙니다.
Python의 미디어 내용 읽기
다음 함수는 실제 미디어 항목의 bytes를 Base64 문자열로 바꿉니다. SDK 1.110.0의 안정화된 MediaSet.read 시그니처를 사용합니다.
import base64
from functions.api import function
from foundry_sdk import FoundryClient
@function
def media_item_to_base64(media_item_rid: str, media_set_rid: str) -> str:
content = FoundryClient().media_sets.MediaSet.read(
media_set_rid=media_set_rid,
media_item_rid=media_item_rid,
)
return base64.b64encode(content).decode("ascii")
이 경로는 전체 bytes와 Base64 결과를 메모리에 두므로 큰 파일에서는 함수 메모리 한도를 고려해야 합니다.
함수 클라이언트의 권한 범위
함수 환경의 인증 클라이언트에는 다음 범위가 제공됩니다.
api:admin-read
api:functions-read
api:ontologies-read
api:orchestration-read
api:usage:mediasets-read
api:usage:ontologies-write
개별 API는 자체 작업 범위를 검사합니다. 외부 OAuth 앱이 미디어 내용 읽기 엔드포인트를 사용할 때의 api:mediasets-read 같은 요건은 그 API의 계약을 따라야 합니다. 함수 런타임의 위 목록과 외부 앱의 요청 범위 이름을 임의로 바꾸어 쓰지 않습니다.
함수는 api:usage:datasets-read 범위의 데이터셋 직접 읽기를 지원하지 않습니다. Code Workspaces 미리보기에서는 사용자 문맥과 전체 범위로 성공하더라도 게시한 함수의 제한된 권한에서는 실패할 수 있습니다. 미리보기 성공을 게시 환경의 데이터셋 접근 권한으로 간주하면 안 됩니다.