.with_structured_output() 메소드는 모델 응답을 구조화된 형식으로 처리할 수 있게 하여 API 개발에서 더 직관적이고 안정적인 구현을 가능하도록 합니다.
.with_structured_output()
.with_structured_output()은 OpenAI 모델이 출력하는 데이터를 특정 형식(Schema)으로 구조화할 수 있도록 도와주는 메소드입니다. 이를 통해 응답 데이터가 예상한 형식을 벗어나지 않도록 강제할 수 있습니다.
- 명확한 응답 구조: API 응답 데이터의 일관성을 유지할 수 있습니다.
- 유효성 검사: 미리 정의된 스키마에 따라 데이터를 검증하여 오류를 줄입니다.
- 코드 간결화: 추가적인 데이터 파싱 및 검증 로직 없이 안정적인 데이터 처리가 가능합니다.
사용 방법
1) 데이터 스키마 정의
- pydantic 또는 JSON 스키마를 사용하여 출력 형식을 정의합니다.
from pydantic import BaseModel
from typing import List
class AnalyzeResponse(BaseModel):
sentiment_score: str
scores: List[str]
keywords: List[str]
2) 데이터 스키마 정의
- Langchain의 모델 객체에 .with_structured_output 메소드를 사용하여 스키마를 연결합니다.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model_name="gpt-4",
temperature=0
).with_structured_output(AnalyzeResponse)
3) 프롬프트와 체인 생성
- 프롬프트를 작성하고, 이를 기반으로 체인을 생성합니다.
- 프롬프트 작성은 생략합니다.
from langchain_core.prompts import load_prompt
prompt = load_prompt("./prompts/analyze_prompt.yaml")
chain = prompt | llm
4) 데이터 처리
response = chain.invoke({"document": ["OpenAI 정말 대단하네"]})
print(response)
>>
{
"sentiment_score": "0.6",
"scores": ["0.9", "0.7", "0.8"],
"keywords": ["OpenAI", "정말", "대단하네"]
}
주의 사항 및 팁
- 스키마정의가 올바르지 않으면 예외가 발생합니다.
- temperature은 출력의 일관성을 높이기 위해 낮은 값을 사용하는 것이 좋습니다.
'AI' 카테고리의 다른 글
[OpenAI] openai.RateLimitError: Error code: 429 에러 (0) | 2025.05.13 |
---|