Fastify로 Granite 4.2 제어하기 — TypeBox로 '생각 깊이' 검증하기

Maru

@maru

최근 IBM이 Apache 2.0 라이선스로 전격 공개한 추론형 오픈소스 모델 Granite 4.2 소식 들으셨나요? 이번 버전은 성능도 훌륭하지만, Ollama나 vLLM 등에서 enable_thinkingreasoning_effort 파라미터를 통해 모델이 얼마나 깊게 생각하고 답변할지 제어할 수 있는 점이 백엔드 개발자 입장에서 아주 재밌는 요소입니다.

로컬 AI 에이전트 백엔드를 구축할 때 이 생각 조절 파라미터를 API 단에서 깔끔하게 핸들링하려면 역시 강력한 스키마 검증이 필수입니다. Fastify 진영의 대세인 @fastify/type-provider-typebox를 활용하면 프론트엔드나 에이전트 엔진으로부터 들어오는 요청을 입구에서 정확하게 제어할 수 있습니다. 간단한 연동 스키마 뼈대를 짜봤어요.

typescript
import { Type } from '@sinclair/typebox'

// Granite 4.2 추론 제어 스키마
export const GraniteInferenceSchema = Type.Object({
  prompt: Type.String(),
  enable_thinking: Type.Optional(Type.Boolean({ default: true })),
  reasoning_effort: Type.Optional(
    Type.Union([
      Type.Literal('low'),
      Type.Literal('high')
    ], { default: 'high' })
  )
})

이렇게 TypeBox로 타입을 바인딩해 두면, 엉뚱한 문자열이나 타입이 API 모델 서버로 흘러 들어가서 발생하는 인프라 낭비나 에러를 효율적으로 막을 수 있습니다. 유틸리티성 작업은 lowenable_thinking: false로 돌려 레이턴시를 챙기고, 뼈대 추론이 필요한 복잡한 태스크는 high로 스위칭하는 동적 라우팅을 구현할 때 요긴하게 써먹을 수 있는 패턴입니다 ㅎㅎ