Paper2Agent: 논문 실행 도구의 검증 기준

논문에 나온 방법을 AI에게 설명하게 하는 일과 내 데이터에 실행하게 하는 일 사이에는 확인할 것이 많다. 코드를 찾고, 실행 환경을 맞추고, 입력의 의미를 해석하고, 나온 값이 맞는지 비교해야 한다.

9월 16일 Nature에 출판된 Paper2Agent 연구는 논문·코드·자료를 AI가 사용할 도구와 자료로 연결한다. 생성한 도구는 참조 결과와 검사하며, 반복해서 검증에 실패한 함수는 제공 대상에서 제외한다. 이번 주의 새 소식은 정식 논문 출판이다. 도구 자체가 이번 주 처음 등장한 것은 아니다. Nature 논문

이 접근에서 살펴볼 부분은 AI가 논문을 잘 설명하는지보다 어떤 코드를 실행하고 무엇과 비교한 뒤 사용할 도구로 남기는지다.

자료를 읽는 연결과 계산을 실행하는 연결

MCP는 AI 프로그램과 외부 도구·자료를 연결하는 규약이다. 자료를 읽는 기능과 함수를 실행하는 기능을 구별한다. 논문 본문을 참고 자료로 제공하는 것과, 그 논문의 계산을 수행할 함수를 호출하는 것은 다른 동작이다. MCP 자료 규약, 도구 규약

예를 들어 논문에 가중평균 공식이 있다면 자료 조회는 그 공식을 읽는 일이다. 실행 도구는 실제 값과 가중치를 받아 숫자를 반환한다. 자연어 요청을 받은 AI는 어떤 함수를 사용할지, 각 인자에 무엇을 넣을지 정해야 한다.

여기서 연결 규약이 갖추어졌다는 사실과 계산의 타당성을 분리해야 한다. 입력 이름과 반환 형식이 맞아도 함수를 잘못 연결할 수 있다. 단위가 다르거나, 필수 인자를 기본값으로 처리하거나, 원래 코드의 오류를 그대로 옮겼을 수도 있다.

직접 실행한 작은 반례

이 차이를 확인하려고 가중평균 예제를 만들었다. Paper2Agent를 실행한 실험이 아니라, 논문의 방법을 도구로 옮길 때 어떤 검사가 필요한지 보여 주는 별도 Python 코드다.

값은 10, 20, 100으로 고정했다. 올바른 계산은 각 값에 가중치를 곱해 더한 뒤 가중치의 합으로 나눈다. 잘못 만든 함수는 가중치를 입력받고도 무시한다.

def wrong_wrapper(values, weights):
    return {"mean": sum(values) / len(values)}

def weighted_mean(values, weights):
    total = sum(x * w for x, w in zip(values, weights))
    return total / sum(weights)

위 코드는 계산 차이를 보여 주는 부분만 뽑았다. 실제 검사 코드에서는 배열 길이, 빈 입력, 유한한 숫자, 음수 가중치, 가중치 합도 확인했다.

입력 가중치 손으로 계산한 기준값 잘못 만든 함수 올바른 함수
1, 1, 1 약 43.3333 약 43.3333 약 43.3333
1, 2, 1 37.5 약 43.3333 37.5
1, 1, 0 15 약 43.3333 15

두 구현을 세 입력으로 실행한 여섯 결과는 모두 숫자 mean을 가진 객체였다. 결과 형식만 검사하면 전부 통과한다. 값까지 비교하면 잘못 만든 함수는 세 경우 중 하나만 맞는다.

첫 번째 입력만 검사했다면 가중치를 무시하는 오류를 놓쳤을 것이다. 가중치가 모두 같을 때는 보통 평균과 가중평균이 같기 때문이다. 두 번째 입력은 가중치가 계산에 반영되는지, 세 번째 입력은 가중치 0인 항목이 계산에서 빠지는지 확인한다.

이 결과가 Paper2Agent의 오류율을 뜻하지는 않는다. 직접 만든 반례에서 확인한 것은 쉽게 통과하는 예시 하나로 함수의 의미를 검증할 수 없다는 점이다.

기준값도 새 함수가 만들면 생기는 문제

검사할 함수로 기대값까지 생성하면 같은 오류가 양쪽에 남을 수 있다. 위의 잘못된 함수로 기준 파일을 먼저 만들었다면, 나중에 같은 함수를 실행해 그 파일과 비교하는 검사는 통과한다.

그래서 이번 예제의 기준값은 구현 결과를 복사하지 않고 식에서 따로 정했다. 두 번째 입력은 (10×1 + 20×2 + 100×1) / 4 = 37.5, 세 번째는 (10 + 20) / 2 = 15다.

실제 연구에서는 이렇게 손으로 계산하기 어려운 경우가 많다. 그때도 기준값의 출처는 남길 수 있다. 원 논문의 예제인지, 연구진이 공개한 결과 파일인지, 별도 구현으로 계산한 값인지가 다르면 검증의 의미도 달라진다.

검사 확인할 수 있는 것 남는 질문
결과 파일 생성 실행이 산출물을 만들었는가 내용이 맞는가
입력·출력 형식 검사 호출 규약을 지켰는가 인자의 의미를 지켰는가
참조 결과 대조 선택한 예제를 같은 조건으로 재현했는가 참조 결과 자체가 타당한가
새 입력의 별도 검사 확인한 다른 조건에서도 동작하는가 아직 확인하지 않은 입력은 무엇인가

재현성은 타당성을 판단하는 근거가 될 수 있지만, 같은 오류를 다시 실행하는 일도 재현은 가능하다. 검사 결과에는 어떤 질문까지 답했는지 적어야 한다.

재사용할 때 함께 넘길 기록

Paper2Agent의 현재 저장소는 논문과 관련 파일, 가능한 경우 코드 저장소를 입력으로 받는 스킬 흐름을 안내한다. 특정 튜토리얼이나 작업으로 범위를 좁힐 수도 있다. 이 글에서는 확인 시점의 커밋을 고정해 연결했다. 저장소 버전

연구 방법 하나를 AI에게 도구로 옮기게 한다면, 요청을 다음처럼 구성하겠다. 실제로 도구에 입력했던 발언이 아니라 이번 검토에서 작성한 예시다.

이 논문의 지정한 분석 단계 하나를 실행 함수로 구성한다.
원본 코드 버전과 입력 자료를 기록한다.
참조 예제는 수정 전 코드로 실행하고 결과를 보관한다.
새 함수의 입력 단위·기본값·실패 조건을 명시한다.
참조 예제와 별도 경계 입력을 각각 검사한다.
통과하지 못한 기능은 실행 가능한 도구 목록에서 제외한다.
결과와 함께 실제 인자·환경·검사 기록을 남긴다.

최종 전달물에도 “구현 완료”라는 문장보다 함수, 실제 입력, 출력, 기준값의 출처, 실패 기록이 필요하다. 그래야 다음 AI나 사람이 결과를 다시 확인할 수 있다.

예제 코드는 빈 입력, 길이가 다른 배열, 가중치 합 0, 음수 가중치, 계산 불능을 나타내는 NaN을 거부하는 다섯 검사도 통과했다. 이는 이 예제에서 정한 입력 조건이다. 다른 연구에서 음수 가중치를 허용한다면 그 조건을 그대로 가져가면 안 된다.

새 데이터에서 다시 판단할 것

원래 예제를 재현한 뒤에도 새 데이터의 단위, 수집 조건, 누락값 처리와 적용 범위는 남는다. 예를 들어 입력 배열이 숫자라는 사실만으로 원 논문과 같은 단위라고 볼 수는 없다. 생성된 도구의 설명에 단위가 빠져 있다면 호출은 성공해도 해석은 틀릴 수 있다.

이 때문에 도구를 여러 개 연결할 때는 앞 도구의 출력 형식뿐 아니라 의미도 다음 입력과 맞춰야 한다. 중간 결과를 자연어 요약만으로 전달하면 어떤 인자와 조건을 사용했는지 확인하기 어렵다. 실행 기록을 같이 넘기고 필요한 곳에서 원자료까지 돌아갈 수 있어야 한다.

Paper2Agent를 활용할 때 기대할 일은 반복적인 설치·연결·검사를 AI에 맡기는 것이다. 최종 판단에 사용할 근거는 생성된 설명의 자신감이 아니라, 어떤 입력을 어느 구현으로 실행했고 무엇과 비교했는지를 보여 주는 기록이다.

자료 확인·계산 예제 실행: 2026년 9월 21일. Paper2Agent 설치나 연구 벤치마크 재실행은 하지 않았다. 별도 Python 예제에서 두 구현의 여섯 출력과 잘못된 입력 다섯 가지를 검사했다.

이 글의 목차