Ollama 구조화된 출력 릴리스
Ollama는 구조화된 출력을 지원하게 되어 개발자가 언어 모델의 응답을 JSON 스키마로 정의된 특정 형식으로 제한할 수 있게 되었습니다. 이 업데이트는 이전의 JSON 모드보다 더 높은 신뢰성과 일관성을 제공하며, Ollama의 cURL API, Python 및 JavaScript 라이브러리에서 모두 지원됩니다.
주요 기능 및 사용 사례
구조화된 출력은 모델이 미리 정의된 스키마에 엄격히 따르도록 해주며, 이는 LLM 응답을 프로그래밍 워크플로우에 통합하는 데 필수적입니다. 주요 사용 사례는 다음과 같습니다:
- 데이터 파싱: 비구조화된 문서에서 구조화된 정보를 추출합니다.
- 시각 분석: 비전 모델을 사용하여 이미지에서 데이터와 설명을 추출합니다.
- 응답 표준화: 모든 언어 모델 응답이 일관된 형식을 따르도록 하여 후속 처리에 적합하게 만듭니다.
구현 방법
구조화된 출력을 사용하려면 요청에 format 매개변수를 전달해야 합니다. 이는 여러 인터페이스를 통해 가능합니다:
cURL API
format 매개변수는 요구되는 속성과 그 타입(예: string, array)을 정의하는 JSON 스키마 객체를 수락합니다.
Python 라이브러리
Ollama는 스키마를 정의할 때 Pydantic을 사용하는 것을 권장합니다. 스키마는 model_json_schema() 메서드를 사용하여 format 매개변수에 전달됩니다.
JavaScript 라이브러리
Ollama는 zod-to-json-schema와 함께 Zod를 사용하여 format 매개변수용 스키마를 직렬화하는 것을 권장합니다.
OpenAI 호환성
Ollama는 OpenAI 호환 beta.chat.completions.parse 메서드를 지원하여, 로컬 Ollama 인스턴스에 연결할 때 Pydantic 모델을 response_format로 사용할 수 있습니다.
고급 응용
구조화된 데이터 추출
PetList(여러 Pet 객체를 포함하는 목록)와 같은 스키마를 정의하면, 모델은 여러 개체에 대한 자연어 설명을 분석하고 유효성 검사된 JSON 배열로 반환할 수 있습니다.
비전 모델 통합
구조화된 출력은 llama3.2-vision과 같은 비전 모델과 호환됩니다. 이는 모델이 summary, objects(신뢰도 점수 포함), scene, colors, time_of_day와 같은 특정 필드를 구조화된 형식으로 반환할 수 있게 해주며, 이미지에 대한 세부적인 분석이 가능합니다.
신뢰성 향상을 위한 최적의 실천 방법
가장 결정론적이고 신뢰성 있는 구조화된 출력을 보장하기 위해 Ollama는 다음 실천 방법을 제안합니다:
- 스키마 정의: Python에서는 Pydantic, JavaScript에서는 Zod를 사용하여 응답 스키마를 정의합니다.
- 프롬프트 엔지니어링: 프롬프트에 명시적으로 "JSON으로 반환"이라는 문구를 포함하여 모델을 안내합니다.
- 결정론적 샘플링: 출력의 변동성을 줄이기 위해
temperature를 0으로 설정합니다.
향후 로드맵
Ollama는 제어된 생성을 향상시키기 위한 몇 가지 향후 개선 사항을 제시했습니다:
- 생성에 더 세밀한 제어를 위해 로짓(logits) 노출
- 구조화된 출력의 성능과 정확도 향상
- 샘플링을 위한 GPU 가속 구현
- JSON 스키마 외 형식에 대한 지원 확장
Sources
- OriginalStructured outputs
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch