728x90
반응형
Ollama는 이제 구조화된 출력을 지원하여, JSON 스키마로 정의된 특정 형식에 모델의 출력을 제약할 수 있습니다. 이 기능은 모델의 출력이 사전에 정의된 형식에 엄격히 따르도록 보장함으로써 AI 모델의 신뢰성과 일관성을 크게 향상시킵니다. Python 및 JavaScript 라이브러리의 업데이트를 통해 구조화된 출력을 구현하는 것이 그 어느 때보다 쉬워졌습니다.
반응형
구조화된 출력이란 무엇인가요?
구조화된 출력은 개발자가 모델 응답에서 정밀성과 예측 가능성을 달성할 수 있게 합니다. 주요 장점은 다음과 같습니다:
- 문서에서 데이터 파싱: 비구조화된 텍스트에서 구조화된 정보를 손쉽게 추출할 수 있습니다.
- 이미지 데이터 추출: 이미지의 객체, 색상, 장면을 포함한 상세한 분석 결과를 얻을 수 있습니다.
- 구조화된 언어 모델 응답: 모델의 모든 응답이 특정 형식과 일치하도록 보장합니다.
- JSON 모드보다 향상된 신뢰성과 일관성: 구조화된 출력은 모호성을 줄이고 더 높은 신뢰도로 결과를 제공합니다.
구조화된 출력 시작하기
라이브러리 업데이트
구조화된 출력을 사용하려면 Ollama 라이브러리를 최신 버전으로 업그레이드하세요:
- Python:
- pip install -U ollama
- JavaScript:
- npm i ollama
작동 방식
API 요청의 format 매개변수를 사용하여 응답에 기대되는 JSON 스키마를 정의합니다.
구조화된 출력 활용 사례
1. 텍스트에서 데이터 파싱
시나리오: 사용자의 텍스트 입력에서 반려동물 정보를 추출합니다.
Python 구현:
from ollama import chat
from pydantic import BaseModel
class Pet(BaseModel):
name: str
animal: str
age: int
color: str | None
favorite_toy: str | None
class PetList(BaseModel):
pets: list[Pet]
response = chat(
messages=[
{
'role': 'user',
'content': '''
저는 두 마리의 반려동물을 키우고 있습니다.
첫 번째는 5살 된 회색 털을 가진 고양이 Luna이며, 실뭉치를 가지고 노는 것을 좋아합니다.
두 번째는 2살 된 검은색 고양이 Loki이며, 테니스 공을 좋아합니다.
'''
}
],
model='llama3.1',
format=PetList.model_json_schema(),
)
pets = PetList.model_validate_json(response.message.content)
print(pets)
출력 예시:
{
"pets": [
{
"name": "Luna",
"animal": "cat",
"age": 5,
"color": "grey",
"favorite_toy": "yarn"
},
{
"name": "Loki",
"animal": "cat",
"age": 2,
"color": "black",
"favorite_toy": "tennis balls"
}
]
}
2. 이미지 설명 생성
시나리오: 이미지를 분석하고 구조화된 정보를 제공합니다.
Python 구현:
from ollama import chat
from pydantic import BaseModel
class Object(BaseModel):
name: str
confidence: float
attributes: str
class ImageDescription(BaseModel):
summary: str
objects: list[Object]
scene: str
colors: list[str]
time_of_day: str
setting: str
path = 'path/to/image.jpg'
response = chat(
model='llama3.2-vision',
format=ImageDescription.model_json_schema(),
messages=[
{
'role': 'user',
'content': '이 이미지를 분석하고, 보이는 장면과 객체, 색상, 텍스트를 설명해주세요.',
'images': [path],
},
],
options={'temperature': 0},
)
image_description = ImageDescription.model_validate_json(response.message.content)
print(image_description)
출력 예시:
{
"summary": "파란 하늘과 물, 모래 해변 위에 있는 야자수.",
"objects": [
{"name": "tree", "confidence": 0.9, "attributes": "palm tree"},
{"name": "beach", "confidence": 1.0, "attributes": "sand"}
],
"scene": "beach",
"colors": ["blue", "green", "white"],
"time_of_day": "Afternoon",
"setting": "Outdoor"
}
구조화된 출력 활용 팁
- Pydantic(Python) 또는 Zod(JavaScript)로 스키마 정의: 명확한 형식을 정의하여 오류를 방지하세요.
- 프롬프트에 "JSON으로 반환" 추가: 모델이 요청한 스키마에 맞춰 응답을 생성하도록 유도하세요.
- Temperature를 0으로 설정: 결정론적이고 예측 가능한 출력을 보장합니다.
구조화된 출력의 기대 효과
- 높아진 신뢰성과 일관성: 응답이 항상 명확한 형식으로 제공되어 오류와 모호성을 줄입니다.
- 데이터 처리 간소화: 구조화된 데이터를 직접 활용하여 후속 데이터 처리 과정을 단순화할 수 있습니다.
- 시간 절약: 명확한 데이터 출력으로 디버깅 시간과 재작업 시간을 크게 절감합니다.
- 더 나은 사용자 경험: 사용자가 원하는 정확한 정보를 제공함으로써 만족도를 향상시킵니다.
728x90
Ollama의 구조화된 출력의 미래 계획
Ollama는 구조화된 출력 기능을 지속적으로 개선하고 있습니다. 다음은 향후 계획입니다:
- 로짓 노출로 출력 제어 지원: 출력의 정밀도를 세밀하게 조정 가능.
- 성능 및 정확도 개선: 더 빠르고 정확한 응답 제공.
- JSON 스키마를 넘어선 형식 지원: 다양한 사용 사례에 대한 호환성 확대.
- GPU 가속 샘플링: 모델 응답의 효율성 향상.
구조화된 출력을 활용하여 AI 기반 애플리케이션에서 전례 없는 신뢰성과 일관성을 확보하세요. Ollama의 최신 버전을 업그레이드하고 AI 개발의 가능성을 재정의해 보세요.
https://ollama.com/blog/structured-outputs
728x90
반응형
'인공지능' 카테고리의 다른 글
오픈소스 AI 모델 트렌드: 가장 인기 있고 많이 다운로드된 모델은? (0) | 2024.12.11 |
---|---|
GPT Pro – AI 혁신의 최전선, 월 28만원의 가치 (0) | 2024.12.10 |
Amazon Nova: AWS 기반 차세대 AI 모델의 혁신 (0) | 2024.12.10 |
PaliGemma 2: 새로운 시대를 여는 비전 언어 모델 (0) | 2024.12.09 |
메타, 최신 오픈소스 AI 모델 ‘Llama 3.3 70B’ 출시 (0) | 2024.12.09 |