함수 인터페이스
함수 인터페이스(Function interface)는 함수의 입력, 출력과 오류 계약을 정의합니다. 실행 로직은 해당 인터페이스를 구현하는 함수가 제공합니다. 소비 앱은 어떤 함수가 그 인터페이스를 구현하는지 발견하고 알려진 계약에 맞게 호출할 수 있습니다.
온톨로지 인터페이스가 객체 유형의 공통 구조를 정의하는 것과 구분해야 합니다.
ChatCompletion과 모델 연결
Palantir의 ChatCompletion 함수 인터페이스는 여러 차례의 대화 메시지를 받아 문맥에 맞는 텍스트를 생성하는 계약입니다. 기존 AIP Logic의 Use LLM은 이 인터페이스를 구현한 함수를 Registered 모델로 발견하여 사용합니다. 앱이 이해할 수 있는 입력과 출력 및 오류를 구현해야 합니다.
기존 함수 인터페이스 등록은 TSv1 전용입니다. 같은 방식의 TSv2 구현은 없으며 새 연결에는 현재 등록 모델 방식이 권장됩니다.
기존 Pipeline Builder 연동은 Beta로 제공하며 플랫폼 인스턴스에 따라 사용할 수 있습니다. 이 경로는 웹훅을 지원하지 않으므로 직접 소스 호출과 처리량 오류를 따라야 합니다.
타입 사용자 지정
함수 구현은 인터페이스와 호환되는 타입을 사용할 수 있습니다. 제공된 타입을 그대로 쓰는 것 외에 호환되는 사용자 타입을 정의할 수도 있습니다. 인터페이스의 입력 타입에 모든 필드가 선택이라면 사용자 타입에도 적어도 하나의 공통 선택 필드가 있어야 합니다.
다음 타입 계약은 GenericCompletionParams를 상속하여 기존 선택 필드를 유지하면서 모델별 선택 설정을 추가합니다.
import {
GenericCompletionParams,
FunctionsGenericChatCompletionRequestMessages,
FunctionsGenericChatCompletionResponse,
} from "@palantir/languagemodelservice/api";
interface CustomParams extends GenericCompletionParams {
modelSpecificParam?: string;
}
type CustomChatCompletion = (
messages: FunctionsGenericChatCompletionRequestMessages,
params: CustomParams
) => Promise<FunctionsGenericChatCompletionResponse>;
게시할 실제 구현에서는 @ChatCompletion()을 선언하고 messages, params의 순서와 이름을 그대로 사용합니다. 외부 모델 호출과 응답 변환, 실패 처리는 등록 구현 예제에 따라 구현합니다. 별도 선택 필드를 추가했다면 해당 제공자가 지원하는 요청 매개변수로 명시적으로 변환해야 효과가 있습니다.
구현 오류
입력 이름 불일치
Function input name does not match the required input name of the function interface at the specific input position은 특정 인수 위치의 이름이 계약과 다르다는 뜻입니다. 타입만 같아도 충분하지 않으며 입력 이름과 순서를 일치시켜야 합니다.
필수 입력 누락
Function is missing input parameter of the function interface가 나오면 인터페이스의 필수 입력이 구현에 없습니다. 계약의 입력을 모두 포함합니다.
타입 비호환
Type {type1} is not assignable to type {type2}는 구현 타입이 인터페이스 타입과 호환되지 않는다는 뜻입니다. 입력과 출력 구조, 선택 필드의 공통 부분 및 반환 오류를 확인합니다.
함수의 다른 연결 방식
모델을 단순히 호출할 때는 모델 함수, TSv1 언어 모델 또는 TSv2와 Python 프록시를 사용할 수 있습니다. 앱이 기대하는 결과 타입의 또 다른 예로 알림 구성 함수는 메시지 내용이나 수신자 계약을 반환합니다.