더북(TheBook)

examples/6_field_validation.py

from langchain_core.tools import tool
from pydantic import BaseModel, Field

class SentimentInput(BaseModel):
    article: str = Field(
        description="감성 분석할 글",
        min_length=10, # 최소 10자 이상
    )
    language: str = Field(
        description="결과 언어",
        default="한국어", # 기본값
    )

@tool(args_schema=SentimentInput)
def analyze_sentiment(article: str, language: str = "한국어") -> str:
    """글의 감성(긍정/부정/중립)을 분석합니다."""
    return f"{language} 감성 분석 결과" 
# 기본값이 있는 입력값은 생략 가능
print(analyze_sentiment.invoke({"article": "국내 A사가 AI 칩 개발에 성공..."}))
# min_length=10 조건을 만족하지 않으면 검증 오류 발생
try:
    print(analyze_sentiment.invoke({"article": "짧음"}))  
except Exception as e:
    print(f"검증 오류: {e}")