PydanticAI: 파이썬 타입 시스템을 활용한 런타임 오류 감소와 예측 가능한 구조 설계
Pydantic의 철학을 LLM 에이전트 영역으로 확장한 오픈소스 프레임워크, PydanticAI가 등장했다. 단순히 프롬프트를 조작하는 수준을 넘어 엄격한 타입 검증과 구조화된 출력을 보장하는 에이전트 구축 라이브러리다. 에이전트가 복잡해질수록 응답 형식이 틀어지거나 잘못된 타입의 인자가 전달되는 경우가 많은데, PydanticAI는 파이썬 타입 체커와 IDE, LLM 인터페이스를 하나로 일치시켜 이 문제를 해결한다.
핵심 기능과 아키텍처
핵심은 파이썬의 네이티브 타입 시스템을 LLM의 입출력 규격으로 직접 변환해 사용하는 것이다.
특히 툴 정의 방식이 효율적이다. @agent.tool 데코레이터를 사용하면 함수의 시그니처와 독스트링(docstring)이 LLM이 인식하는 툴 스키마로 자동 변환된다. 별도의 JSON 스키마를 짤 필요 없이 평소처럼 파이썬 코드를 작성하면 되며, 실행 전 인자 검증과 반환 타입 보장까지 자동으로 이루어진다.
또한 RunContext를 통해 의존성 주입을 지원한다. 데이터베이스 클라이언트나 인증 정보 등 에이전트 실행에 필요한 외부 컨텍스트를 안전하게 함수 내부로 전달할 수 있다.
상용 프레임워크와의 위치 비교
방대한 추상화 레이어를 제공하는 LangChain이나 LlamaIndex와 달리, PydanticAI는 군더더기를 걷어낸 실용적인 접근을 취한다. 파이썬 타입 힌트와 Pydantic 검증 로직 위에 최소한의 에이전트 루프만 구현한 형태다. 타입 안정성을 유지하면서 코드를 세밀하게 제어하려는 개발자에게 최적의 구조다.
실제 사용 흐름과 설정
- 1
エージェントの作成
パッケージをインストールし、モデル名、依存関係の型、結果の出力型を指定してAgentインスタンスを生成する。
- 2
ツールの定義
@agent.toolデコレータを使用し、関数の型ヒントとdocstringからLLM向けツールスキーマを自動生成する。
- 3
実行と依存性注入
RunContextを通じて依存関係を安全に注入し、事前定義された型の実行結果を受け取る。
설정과 기본 사용법은 기존 Pydantic 사용자에게 매우 직관적이다.
먼저 패키지를 설치하고 에이전트 인스턴스를 생성한다.
from pydantic_ai import Agent
agent = Agent(
'openai:gpt-4o',
deps_type=SupportDependencies,
result_type=Sentiment,
)
이후 툴을 정의한다. 함수의 타입 힌트와 독스트링이 스키마로 자동 변환된다는 점이 핵심이다.
@agent.tool
async def customer_balance(ctx: RunContext[SupportDependencies], include_pending: bool = False) -> float:
"""Returns the customer's current account balance."""
db = ctx.deps.db
return await db.get_balance(ctx.deps.customer_id, include_pending=include_pending)
에이전트 실행 시 의존성을 주입하고 정의된 타입의 결과를 받는다. IDE, 타입 체커, LLM이 동일한 타입을 공유하므로 런타임의 타입 버그를 획기적으로 줄일 수 있다.
관측 가능성과 비용 제어
| ツール / 機能 | 役割と特徴 |
|---|---|
| Pydantic Logfire | LLM呼び出しからアプリ全体の実行フローを可視化。OpenTelemetry標準に準拠し既存インフラと連携可能 |
| Pydantic AI Gateway | 全モデル呼び出しに対するリアルタイムのコスト監視と予算制御。セルフホスト対応 |
| genai-prices | モデル価格情報を常に最新の状態に維持 |
| Monty | サンドボックス環境のPythonインタープリタとしてモデル生成コードを安全に実行 |
PydanticAI는 실행 결과의 검증뿐 아니라 운영 측면까지 고려해 설계되었다. Pydantic Logfire는 LLM 호출부터 애플리케이션 전체의 실행 흐름을 시각화하는 관측 플랫폼을 제공하며, OpenTelemetry 표준을 따라 기존 백엔드 인프라와도 쉽게 연동된다.
여기에 Pydantic AI Gateway를 결합하면 모든 모델 호출에 대한 실시간 비용 모니터링과 예산 제어가 가능하다. 게이트웨이는 자체 호스팅이 가능해 보안이 중요한 환경에서도 유용하다. 내부적으로는 genai-prices가 모델 가격 정보를 최신으로 유지하고, 샌드박스 환경의 파이썬 인터프리터인 Monty를 통해 모델이 작성한 코드를 안전하게 실행할 수 있다.
실사용 시나리오와 적합한 대상
복잡한 비즈니스 로직과 DB 조작이 포함된 프로덕션급 LLM 앱을 개발하는 1인 개발자나 소규모 팀에 유용하다. 프롬프트 엔지니어링 과정을 코드 수준으로 가져와 컴파일 타임에 오류를 잡아야 하거나, 엄격한 타입 검증이 필요한 금융·고객 지원 에이전트 개발에 적합하다.
다만, 간단한 챗봇 프로토타입을 빠르게 만들거나 파이프라인 설정을 최소화하고 싶은 경우라면, 엄격한 타입 정의 과정이 다소 번거롭게 느껴질 수 있다. 이럴 때는 Flowise와 같은 low-code 도구를 활용해 시각적으로 빠르게 인터페이스를 구성하는 것이 더 효율적인 대안이 될 수 있다.
시작하기 좋은 진입점
공식 GitHub 리포지토리에는 에이전트 정의부터 구조화된 출력, 실시간 음성 및 이미지 생성까지 다양한 예제가 포함되어 있다. 문서의 예시를 따라 간단한 툴 호출 에이전트를 로컬 환경에서 직접 구현하며 시작해보길 권한다.
参考資料
よくある質問 (FAQ)
Q. PydanticAI는 기존 LangChain이나 LlamaIndex와 무엇이 다른가?
PydanticAI는 파이썬 표준인 Pydantic을 기반으로 엔드투엔드 타입 안전성, IDE 지원, 명시적인 툴 정의에 집중한 가벼운 에이전트 프레임워크다.
Q. 함수의 시그니처와 docstring이 어떻게 툴 스키마가 되는가?
데코레이터로 지정된 함수의 매개변수 타입과 docstring을 분석하여 LLM이 이해할 수 있는 툴 스키마를 자동으로 생성하고, 실행 전 인자 검증까지 처리한다.
Q. Logfire와의 연동은 필수로 설정해야 하는가?
필수는 아니지만, LLM 호출뿐만 아니라 전체 애플리케이션의 실행 흐름과 비용을 관측할 수 있는 Pydantic Logfire를 통해 디버깅 효율을 크게 높일 수 있다.
Q. 실시간 비용 모니터링 기능은 어떻게 작동하는가?
Pydantic AI Gateway를 통해 모든 모델 호출을 중앙에서 관리하며, 실시간 비용 모니터링과 예산 제어 기능을 제공한다.