[pydantic-ai] Validation 에러 재시도 메시지 개선 — Markdown 코드 블록 포맷
PR 링크: pydantic/pydantic-ai#3193 상태: Merged | 변경: +11 / -5
들어가며
Pydantic AI에서 LLM의 tool call 결과가 validation에 실패하면, 에러 메시지를 포함한 retry prompt를 LLM에게 다시 전달합니다. 기존 포맷은 "1 validation errors: [{...}]" 형태의 평문이었는데, JSON 데이터가 텍스트에 섞여 LLM이 에러 구조를 파싱하기 어려웠습니다. 이 PR은 Markdown 코드 블록으로 감싸고, 단수/복수 문법도 교정합니다.
핵심 코드 분석
Before (messages.py):
json_errors = error_details_ta.dump_json(self.content, exclude={'__all__': {'ctx'}}, indent=2)
description = f'{len(self.content)} validation errors: {json_errors.decode()}'
After:
json_errors = error_details_ta.dump_json(self.content, exclude={'__all__': {'ctx'}}, indent=2)
plural = isinstance(self.content, list) and len(self.content) != 1
description = (
f'{len(self.content)} validation error{"s" if plural else ""}:\n```json\n{json_errors.decode()}\n```'
)
변경 사항:
- 단수/복수 처리:
1 validation errorvs2 validation errors - Markdown json 코드 블록: JSON 에러 상세를
```json ```으로 감싸 구조를 명확히 전달
실제 출력 비교
Before:
1 validation errors: [{"type": "value_error", "loc": ["b"], "msg": "...", "input": "foo"}]
Fix the errors and try again.
After:
1 validation error:
```json
[
{
"type": "value_error",
"loc": ["b"],
"msg": "...",
"input": "foo"
}
]
Fix the errors and try again.
## 왜 이게 좋은가
- LLM이 Markdown 포맷을 더 잘 이해하므로, validation 에러 수정 성공률이 높아질 수 있습니다.
- 코드 블록 구분으로 JSON 구조가 명확해져, LLM이 어떤 필드에서 어떤 에러가 발생했는지 파악하기 쉽습니다.
- 단수/복수 문법 교정은 작지만 프로페셔널한 메시지 품질을 제공합니다.
## 정리
- **LLM에게 보내는 메시지도 포맷이 중요하다**: 구조화된 Markdown은 평문보다 LLM의 이해도를 높입니다.
- **에러 메시지의 문법을 신경 써라**: 단수/복수 같은 세부 사항이 전체적인 품질 인상을 결정합니다.
## 참고 자료
- [pydantic/pydantic-ai#3193](https://github.com/pydantic/pydantic-ai/pull/3193) — PR 전체 diff
> ⚠️ **알림:** 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [vllm] ROCm AITER MHA 백엔드 재설계
- 현재글 : [pydantic-ai] Validation 에러 재시도 메시지 개선 — Markdown 코드 블록 포맷
- 다음글 [triton] Proton 커널 내 프로파일러 Global Memory 지원
댓글