
382
에이전트 시대의 AI 시스템 설계
단계
2
의 테스트
단계
2
에서 결정론적으로 테스트할 수 있는 사항 하나는 적용된 변경 사항이 단계
1
의 제안 중
하나가 맞는지이다. 또한, 소개문이 실제로 변경되었는지, 너무 많이 변하지는 않았는지 (이를
테면 여섯 줄 이상 )도 점검할 수 있다.
다음은 이 두 조건을 단언문으로 점검하는 함수이다. 단언 실패 시 적절한 오류 메시지도 출력
한다.
def assert_improvement(improvement: Improvement, orig_text: str, c: Critique):
assert improvement.change in c.improvements,
"원래의 제안 목록에 없는 변경임"
nlines_changed = ... # difflib을 이용해서 변경된 행들의 수를 구한다.
# 전체 코드는 원서 깃허브 저장소에 있다.
assert nlines_changed > 0 and nlines_changed <= 5,
f"{nlines_changed}개의 행이 바뀌었음(1~5 범위 위반)"
그런데 문제가 하나 있다. 단계
2
를 실행하고 테스트하려면 단계
1
이 돌려준
Critique
객체
가 필요하다. 이는 단계
2
를 단계
1
과 독립적으로 개발하고 테스트할 수 없다는 뜻이다.
def improvement_chain ...