[Langchain] langchain-openai api 응답 json 포멧 지정하기

2025. 5. 8. 22:54·AI

.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
'AI' 카테고리의 다른 글
  • [OpenAI] openai.RateLimitError: Error code: 429 에러
6eom9eun
6eom9eun
  • 6eom9eun
    개발 공간
    6eom9eun
  • 전체
    오늘
    어제
    • 전체보기 (33)
      • Front (7)
        • flutter (2)
        • react (5)
      • Back (4)
        • node.js (2)
        • django (4)
      • AI (2)
      • KT Aivle (1)
      • Coding Test (13)
        • 프로그래머스 (5)
        • 백준 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    OpenAI
    poetry
    PYTHON
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
6eom9eun
[Langchain] langchain-openai api 응답 json 포멧 지정하기
상단으로

티스토리툴바