pydantic
-
@tool이 내부에서 하는 일 — Pydantic BaseModel이 LLM의 호출 인터페이스가 되는 과정IT 2026. 6. 30. 21:00
LangGraph로 AI 에이전트를 만들다 보면 도구(tool) 함수를 정의하는 방식이 눈에 들어온다. 함수 위에 @tool 하나 붙이면 LLM이 그 함수를 알아서 호출한다. 마치 마법처럼 보이지만, 내부에서는 Pydantic BaseModel이 핵심 역할을 한다. 이 글은 그 메커니즘을 분해한다 — @tool이 Python 함수에서 무엇을 만들어내는지, 왜 굳이 BaseModel인지, 그리고 실제로 어떤 문제들이 있었는지.LLM이 함수를 호출하려면 무엇이 필요한가LLM은 텍스트를 입력받아 텍스트를 출력하는 모델이다. "search_movie 함수를 query='크리스토퍼 놀란 영화'로 호출해"라고 지시하려면 LLM에게 두 가지를 알려줘야 한다. 첫째, 그 함수가 어떤 인자를 받는지. 둘째, 각 인자의 ..
-
ProviderStrategy vs ToolStrategy — 구조화 출력 전략 선택IT 2026. 6. 23. 22:00
LLM에게 "JSON으로 줘"라고 말하는 것과, 스키마를 강제로 씌워 정확한 타입으로 받는 것은 전혀 다른 이야기다. 구조화 출력(Structured Output)은 후자다. 모델 응답을 미리 정의한 Pydantic 스키마 형태로 돌려받아, 이후 코드가 타입 안전하게 처리할 수 있도록 보장한다. 그런데 이 구조화 출력을 구현하는 방법이 하나가 아니다. LangChain에는 두 가지 전략이 존재한다 — ProviderStrategy와 ToolStrategy. 두 전략은 모양은 비슷하지만 내부 동작이 전혀 다르고, 잘못 선택하면 성능 저하나 예상치 못한 실패로 이어진다.구조화 출력이란 무엇인가보통 LLM의 응답은 자유 형식 텍스트다. 그러나 에이전트나 파이프라인에서는 모델 출력을 다음 단계 코드가 바로 소비..