Implement summary and tag validation logic#16
Conversation
| options: | ||
| - report | ||
| - strict |
There was a problem hiding this comment.
이 옵션을 사용하는 게 어떤 의미인지 알 수 있을까요? 각 옵션별로 어떻게 동작하는지 궁금합니다.
There was a problem hiding this comment.
report와 strict 둘 다 검증 로직 자체는 같으나 빌드 실패 처리가 다릅니다! report는 요약문이나 태그 검증이 fail로 나오거나 API키가 없어도 최종 결과 report 생성을 위해 빌드 실패로 이어지지는 않지만 strict는 바로 빌드 실패로 이어집니다. 현재 default로 report로 설정하였습니다.
There was a problem hiding this comment.
strict 옵션은 현재 불필요한 기능이라면 제거해주셔도 좋을 것 같습니다~!
There was a problem hiding this comment.
strict 옵션을 삭제하려고 했으나 품질 기준 미달(fail)일 때 의도적으로 실패(exit 1) 시켜서 병합 전 차단이 가능한 옵션이어서 빠른 테스트시 유용할 것 같아 우선 남겨두었습니다!
There was a problem hiding this comment.
@imyeyun
현재 PR에 대해 LLM 검증 통과/실패 결과를 댓글로만 달아주고 머지(병합)와는 관련이 없을텐데 어떤 의미인지 조금 더 설명 부탁드립니다!
There was a problem hiding this comment.
strict옵션은 수동으로 실행하였을 때 fail 항목이 있으면 exit code 1로 종료해서 워크플로를 실패시키는 모드였는데 지금 PR에서는 통과/실패를 댓글로만 안내하고 병합과는 직접 연결되지 않습니다.
action summary로 전체 데이터 점검을 하지 않기로 했기 때문에 사용할 일이 많지 않을 것 같아 삭제 진행 하겠습니다!
| if: github.event_name == 'pull_request' && steps.changed-ids.outputs.entry_ids == '' | ||
| run: | | ||
| mkdir -p reports | ||
| cat <<'EOF' > reports/llm_validation_report.json |
There was a problem hiding this comment.
EOF 앞뒤에 따옴표가 붙으면 뒤에 이어지는 코드에서 변수 치환이 제대로 되지 않는 것으로 보여, 확인 부탁드립니다.
66L도 같이 확인 부탁드려요.
python scripts/validate_llm_metadata.py 명령어 실행 시 생성된 llm_validation_summary.md파일 일부 첨부해드립니다! `# LLM Metadata Validation
|
|
좋습니다! LLM이 검증을 1차적으로 해주니 훨씬 더 든든하네요. |
| prompt = build_prompt(entry_type, entry, evidence) | ||
|
|
||
| print(f"DEBUG model: {self.model}") | ||
| print(f"DEBUG api key loaded: {bool(self.api_key)}, length={len(self.api_key)}") |
There was a problem hiding this comment.
API 키 길이의 노출을 막기 위해서 주석 처리 부탁드립니다.
| - Mode: `${VALIDATION_MODE}` | ||
| - Status: `skipped` | ||
| - Pass: `0` | ||
| - Warning: `0` | ||
| - Fail: `0` |
There was a problem hiding this comment.
코드 실행 로그를 보면 아래와 같이 값이 비어 있는 걸 확인할 수 있습니다.
body: '{"body":"<!-- llm-metadata-validation-comment -->\\n# LLM Metadata Validation\\n- Mode: \\n- Status: \\n- Pass: \\n- Warning: \\n- Fail: \\n- Skipped reason: No newly added metadata entries in this PR.\\n"}',
백틱이 bash에서 특수 문법으로 사용되어 수정이 필요합니다.
백틱앞에 백슬래시를 넣어서 수정해주세요. (` -> \`)
| schedule: | ||
| - cron: "0 2 * * 1" |
There was a problem hiding this comment.
정기적인 전체 메타데이타 성능 검토용으로 action summary기능도 남겨놓은 상태였기에 작성해두었지만 PR댓글 기능만 남기기로한 지금 삭제 진행하겠습니다!
| - name: Upload validation report | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: llm-validation-report | ||
| path: | | ||
| reports/llm_validation_report.json | ||
| reports/llm_validation_summary.md |
There was a problem hiding this comment.
이제 PR에 코멘트 형식으로 결과를 알려줄 거라, 아티팩트 업로드 기능은 불필요할 것 같아요. 검토 부탁드려요.
jih0-kim
left a comment
There was a problem hiding this comment.
꼼꼼하게 리뷰 살펴보시고 수정해주셔서 감사합니다. 코멘트 확인 부탁드려요!
|
@imyeyun
이 수정을 적용하고 더미 entry로 테스트한 결과: 링크 두 가지 사항 검토 후 의견 및 수정 부탁드리겠습니다~! |
말씀해 주신 내용 수정 완료하였고 fail발생시 발생하게된 원인 태그나 요약문만 적는 것보다는 추가적인 설명도 적어주는 것이 이해하는데 더 편할 것 같아서 설명문을 추가하도록 수정하였습니다! |

이슈 : #7
구현 내용
실행 방법
1) GitHub Actions에서 실행
워크플로우 파일: .github/workflows/llm-metadata-validation.yml
동작 방식:
pull_request 이벤트에서 data/*.yaml 변경 시 실행
PR에서는 diff 기준으로 신규 추가된 id만 추출하여 검증
신규 추가 id가 없으면 스킵 리포트 생성
schedule, workflow_dispatch에서는 전체 또는 지정 모드로 실행
2) 로컬 실행
3) 특정 엔트리만 실행
실행 결과
PR에서 신규로 추가된 데이터가 있을 경우: 해당 ID만 검증 리포트 생성
PR에서 신규 추가 데이터가 없을 경우: 스킵 상태 리포트 생성
검증 시 영어/한국어 요약문 모두 근거 기반으로 판단
reason은 한국어로 반환
테스트 실행 방법 및 결과
테스트 실행
pytest -q tests/test_validate_llm_metadata.py테스트 결과
11 passed in 0.21s