AI-Native 시리즈 · 리서치
모델에게 문제를 쓰게 하라. 솔버에게 답을 서명하게 하라.
1분 요약 — 이 글에서 얻어갈 것
언어 모델은 무엇이 중요한지 추론할 수 있지만 계획이 실현 가능하다고 보장하지는 못한다. 정수 프로그램 솔버는 실현 가능성을 보장하지만 무엇이 중요한지는 판단하지 못한다. 2024~2025년의 연구(LLM-Modulo, OptiMUS, AlphaGeometry)와 내가 직접 만든 세 가지 시스템은 하나의 아키텍처로 수렴한다: 모델이 문제를 쓰고, 솔버가 답을 서명하며, 두 개의 시계로 돌아가는 MPC 루프가 현실이 보고해오는 대로 재계산한다 — 다만 반드시 대비해야 할 실패 모드가 하나 있다. 솔버가 모델의 추측을 거짓된 권위로 세탁해버리는 것이다.
언어 모델에게 이번 분기 계획을 세워달라고 해보라. 아름다운 결과가 나온다. 두 번 물어보면 아름답고 서로 다른 계획이 두 개 나온다. 그리고 그중 어느 쪽이든 실제 제약과 대조해보면(이 엔지니어는 이미 일정이 꽉 찼고, 저 마감은 절대 못 미루고, 이 예산은 한계가 있고) 조용히 여러 군데를 위반하고 있다. 대신 이진 정수 프로그램에게 물어보면 주어진 모든 제약을 증명 가능하게 지키는 답이 정확히 하나 나온다. 다만 그 제약이 맞는 제약이었는지, 최대화하라고 시킨 그 목표가 정말 최대화할 가치가 있는 것인지는 결코 알려주지 않는다.
이 둘은 경쟁하는 두 개의 도구가 아니다. 하나의 두뇌를 이루는 두 개의 반쪽이며, 이 글이 다루고자 하는 흥미로운 엔지니어링 질문은 바로 그 이음매다..
연구가 실제로 정리해낸 것
지난 2년간의 연구는 "LLM이 계획을 세울 수 있는가?"라는 질문에 유난히 명료한 답을 내놓았다. 승자를 가르는 문제가 아니라 역할 분담의 문제였다.
첫 번째 절반: LLM은 보증자가 될 수 없다. Kambhampati와 동료들은 ICML 2024 포지션 논문에서 단호하게 말한다: "We argue that auto-regressive LLMs cannot, by themselves, do planning or self-verification (which is after all a form of reasoning)" (번역: 자기회귀 방식의 LLM은 그 자체로 계획 수립도 자기검증도—어차피 이것도 추론의 한 형태이니—할 수 없다는 것이 우리 주장이다) [1]. 실증적 근거 역시 그만큼 단호하다. Game of 24, 그래프 색칠, 고전적 계획 수립 과제에서 Stechly 등은 모델이 자기 답을 스스로 비판하게 하면 상황이 더 나빠진다는 것을 발견했다: "We observe significant performance collapse with self-critique and significant performance gains with sound external verification" (번역: 자기비판에서는 유의미한 성능 붕괴가, 견고한 외부 검증에서는 유의미한 성능 향상이 관찰되었다) [2]. 후속 연구는 "self-critiquing appears to diminish plan generation performance, especially when compared to systems with external, sound verifiers" (번역: 자기비판은 계획 생성 성능을 떨어뜨리는 것으로 보이며, 외부의 견고한 검증기를 갖춘 시스템과 비교하면 특히 그렇다)라고 결론지었다 [3]. 쉽게 말하면, LLM이 LLM을 점검하는 것은 소문이 소문을 검증하는 꼴이다.
두 번째 절반: LLM은 놀랍도록 뛰어나게 문제를 작성한다. Stanford의 OptiMUS는 자연어 설명을 혼합정수 선형계획법(mixed-integer linear program)으로 변환하며, "can develop mathematical models, write and debug solver code, evaluate the generated solutions, and improve its model and code based on these evaluations" (번역: 수학적 모델을 개발하고, 솔버 코드를 작성 및 디버깅하며, 생성된 해를 평가하고, 이러한 평가를 바탕으로 자신의 모델과 코드를 개선할 수 있다) [4], 기존 최고 성능을 20~30% 뛰어넘는 결과를 냈다. ICLR 2024에서 발표된 Chain-of-Experts는 복잡한 오퍼레이션 리서치 모델링을 위해 "the first LLM-based solution, namely Chain-of-Experts (CoE), a novel multi-agent cooperative framework to enhance reasoning capabilities" (번역: 최초의 LLM 기반 해법인 Chain-of-Experts(CoE), 추론 능력을 향상시키기 위한 새로운 다중 에이전트 협력 프레임워크)를 제시했다 [5]. 2025년에는 OR-LLM-Agent가 등장해 파이프라인을 "three sequential stages: mathematical modeling, code generation, and debugging" (번역: 수학적 모델링, 코드 생성, 디버깅이라는 세 개의 순차적 단계)로 나누었고, OR 벤치마크에서 최상위권 범용 모델들마저 앞질렀다 [6]. 지저분한 상황을 결정 변수와 제약조건으로 옮기는 지루하고 오류에 취약한 번역 작업, 즉 문제 서술(formulation)이야말로 인간이 싫어하고 모델이 잘하는 바로 그 부분이다.
그리고 이 결합이 실제로 작동함을 보여주는 대표적 사례가 있다: AlphaGeometry는 "uses a neural language model, trained from scratch on our large-scale synthetic data, to guide a symbolic deduction engine through infinite branching points" (번역: 처음부터 대규모 합성 데이터로 학습시킨 신경망 언어 모델을 이용해 무한히 분기하는 지점에서 기호적 추론 엔진을 이끈다)는 시스템으로 올림피아드 금메달에 근접한 성적을 냈다 [7]. 신경망 절반은 탐색이 폭발하는 지점에서 제안을 내놓고, 기호적 절반은 확실하게 유도해낸다. 최고의 기호 전용 시스템이 열 문제를 푼 데 비해, 이 시스템은 스물다섯 문제를 풀었다. 어느 한쪽만으로는 근처에도 못 간다.
한 가지만 더 짚자면, 내 플래너가 바로 이것 위에 세워져 있기 때문인데, receding-horizon control(수평선 후퇴 제어), 즉 한 구간을 계획하고 실행한 뒤 현실을 지켜보고 실제 위치에서 다시 계획을 세우는 방식은 로봇공학에만 쓰이는 트릭이 아니다. 이것은 일반적인 의사결정 패러다임이다. 최근 연구는 경쟁적 공급망 전체를 에이전트로 모델링하면서 "every agent re-plans their actions in a receding horizon manner based on estimates of market and supplier parameters" (번역: 모든 에이전트는 시장과 공급자 파라미터에 대한 추정치를 바탕으로 수평선 후퇴 방식으로 자신의 행동을 다시 계획한다)고 밝혔다 [8].
내 작업대 위의 세 시스템
나는 이 질문에 문헌을 통해 다가간 것이 아니다. 몇 년의 간격을 두고 따로따로 만들어져, 서로가 하나의 기계의 부품이라는 사실조차 모른 채 각자 한 조각씩을 맡고 있는 세 개의 결과물을 손에 쥔 채로 이 질문에 도달했다.
솔버: Life GPS (2019년, 공개). 전체 이야기는 이전 에세이에서 밝혔다: 일주일을 시간 슬롯의 격자로 취급하고 그 위에서 이진 정수 선형계획법을 푸는 주간 플래너다. 결정 변수는 x[slot,task] ∈ {0,1}이고, 목적함수는 가중 충족도, 제약조건은 슬롯당 과업 하나, 과업별 하한과 상한, 마감일이다. 다시 작성된 Python 엔진(allocator.py, PuLP + CBC)은 가장 중요한 부분을 담당한다: replan() 지나간 시간을 동결하고, 실제로 소비한 만큼 모든 예산을 차감하고, 남은 구간을 다시 풀어내는 것, 즉 삶에 적용된 Model Predictive Control(모델 예측 제어)이다. 그리고 이 글을 조사하면서 비로소 알아챈 세부사항이 있다. 이 재작성판에는 이미 두 개의 LLM 이음매가 있다는 점이다. intake() 주입된 llm_fn 를 받아들여 "MVP를 출시하고, 매일 명상하고, 닷새, 여덟 시간"과 같은 문장을 검증된 PlanRequest; explain() 는 해결된 그리드를 다시 문장으로 풀어낸다. 아래의 통합은 솔버에 AI를 억지로 갖다 붙이자는 제안이 아니다. 소켓은 이미 벽에 뚫려 있다.
전략가 (비공개). 내가 비공개로 유지하는 전략 운영체제다. 진단(Rumelt식 커널: 지금 실제로 무슨 일이 벌어지고 있는가?)에서 시작해, 진짜로 서로 다른 옵션 세트, 스트레스 시나리오, 경쟁 대응을 거쳐, 다음과 같은 의사결정 노드에 이르는 엄격한 파이프라인을 돌린다: 언제나 인간이 서명하는 모든 주장은 근거에 근거해 검증되며, 실행은 선행지표와 가정이 깨질 때 발동하는 트립와이어로 추적된다. 솔버 스스로는 만들어낼 수 없는 바로 그것, 즉 목적함수(무엇을 가치 있게 여길지, 각 가중치를 뒷받침하는 근거와 함께)와 제약 집합(어떤 규칙이 구속력을 갖는지, 그리고 왜인지)이 바로 이 전략가의 산출물이다. 최적화 용어로 말하자면 그렇다는 뜻이다.
장난감이 아니라는 증거 (비공개). 전략 엔진의 첫 실전 참여는 역할 기반 접근 권한이 설정된 팀 허브를 통해 이루어진다. 근거 등록부, 옵션, 90일 계획이 모두 동일한 파이프라인에서 흘러나오는 실제 클라이언트 프로젝트다. 이 대목에서 중요한 것은 하나뿐이다: 실제 프로젝트에서의 가중치와 제약은 이름이 붙은 근거와 인간의 서명에 결부되어 있지, 모델의 감이 아니라는 점이다.
아키텍처: 세 개의 층, 두 개의 시계
연구와 세 가지 결과물을 나란히 놓아 보면, 설계는 거의 저절로 완성된다.
1층 — 전략가 (느린 시계: 몇 주 단위, 또는 트립와이어가 발동할 때마다). 인간이 의사결정 노드에 자리한 채 이루어지는 언어모델의 추론은 다음과 같은 문제 정의 를 만들어낸다: 어떤 과업들이 존재하는지, 각각의 가치는 얼마인지(가중치와 이를 정당화하는 근거), 하한·상한·마감·의존관계는 무엇인지. 이는 OptiMUS의 교훈을 일반화한 것이다. 모델의 초능력은 정식화이며, 모델이 LP를 작성한다.
2층 — 솔버 (빠른 시계: 매일, 또는 매 체크인마다). 이진 정수 계획법은 제약 집합 아래에서 시간과 비용을 배분하고, MPC 루프는 실측치로부터 다시 푼다. 솔버는 자기비판 연구들이 요구하는 바로 그 외부의 건전한 검증기 다 [2][3]. 제약을 말로 구슬려 없앨 수 없고, 존재하지 않는 시간을 환각으로 만들어낼 수 없으며, 문제가 실행 불가능할 때는 그럴듯한 무언가를 지어내는 대신 그렇다고 말한다.
3층 — 센서. 텔레메트리가 두 루프를 모두 닫는다. 테스트 통과, 지표 변화, 작업 항목 완료(내 스택에서는 모든 레포가 이미 내보내는 근거 등급 성적표가 그것이다). 이것을 2019년의 장난감에서 살아있는 시스템으로 바꾼 것은 다름 아닌 저렴한 센서다. 한때 사람이 하루 두 번 손으로 입력하던 피드백이 이제는 스스로 제출된다.
가장 많은 설계가 놓치는 부분이 바로 이 두 시계다. 전술적 재계획(솔버의 시계)과 전략적 재계획(전략가의 시계)은 비용 구조가 전혀 다른 별개의 작업이다. 배분을 다시 푸는 데는 밀리초 단위면 충분하고, 매시간 돌려도 안전하다. 반면 목적함수를 다시 쓰는 일은 비용이 크고, 상황에 반응해 성급하게 처리하면 위험이 크다 — 그 끝에는 목표 흔들림(thrash)이 기다린다. 그래서 단계 이관은 명시적으로 설계돼 있다: 솔버는 현재의 문제 정의 안에서 계속 재계산을 하다가, 트립와이어 — 사전에 이름 붙여 등록해 둔, 가정이 깨지는 신호 — 가 발동해야 비로소 펜을 전략가에게 돌려준다. 이것이 바로 두 개의 지평선 각각에 적용된 후퇴 지평선(receding-horizon) 패턴이다 [8].
이음새 계약
위에서 말한 모든 것은 결국 이 이음새에서 사느냐 죽느냐가 갈린다. 그러니 이음새를 계약으로 만들어야 한다.
- 가중치는 증거와 서명이 있어야만 아래로 흐른다. 모델은 "이니셔티브 A가 이니셔티브 B보다 3배 가치 있다"고 제안할 수는 있다. 그 제안에는 근거가 함께 실리고, 솔버가 그것을 보기 전에 반드시 사람이 서명한다. 서명되지 않은 가중치는 목적함수에 들어가지 못한다.
- 모델은 문제를 formulate할 뿐, 절대 스스로 검증하지 않는다. 의사결정 변수, 제약조건, 솔버 코드로 옮기는 번역 작업은 모델의 일이다 [4][5][6]. 타당성과 최적성을 확인하는 일은 구조적으로 솔버의 일이다. 모델에게 스스로 다시 확인해보라고 묻는 프롬프트 따위가 아니다 [1][2].
- 모델은 솔버가 낸 숫자를 설명할 뿐, 자기 자신의 숫자는 설명하지 않는다.
explain()는 풀린 그리드를 문장으로 옮긴다. 규율은 이렇다: 풀린 결과를 서술할 뿐, 만들어내지는 않는다. 서술과 그리드가 서로 다르게 말한다면, 그리드가 이긴다. - 측정할 수 없는 목표는 목적함수 밖에 둔다. 아직 지표가 없는 목표라면 "아직 측정 불가 — 지표를 정의할 것"이라고 표시될 뿐, 지어낸 계수로 둔갑하지 않는다. 아무도 측정할 수 없는 목적함수 항이야말로 대시보드가 아부하는 법을 배우는 지점이다.
실패 모드: 추측을 권위로 세탁하기
아무도 미리 경고해주지 않는 위험이 여기 있고, 이것이 위에서 말한 계약이 그토록 엄격해야 하는 이유다. 솔버의 출력은 권위 있게 느껴진다 — 어쨌든 증명 가능하게 최적이니 말이다. 하지만 그것이 증명 가능하게 최적인 대상은 주어진 문제 그 자체일 뿐이다. 모델이 환각으로 만들어낸 가중치를 먹이면 솔버는 자신감 있고 정밀하고 최적화된 쓰레기를 돌려줄 것이다. 그리고 그 정밀함은 그 쓰레기를 모델의 생짜 추측보다 훨씬 더 설득력 있게 만든다. 솔버는 추측을 권위로 세탁하는 것이다.
저렴하게 실행할 수 있는 완화책 세 가지를 소개한다.
- 증거로 게이트된 가중치 (위에서 언급한 것): 서명이 없으면 계수도 없다.
- 민감도 분석도 결과물의 일부로 다룬다: 모든 계획에는 "어떤 가중치가 2배 틀리면 이 계획이 뒤집히는가?"라는 질문이 함께 나간다. 답이 "우리가 가장 확신 못 하는 바로 그 가중치"라면, 그 계획은 일정표가 아니라 가설이다. 대시보드는 그 사실을 숨기지 말고 그대로 밝혀야 한다.
- 정직한 확률에는 상한을 씌운다: 사람에게 보여주는 모든 확률은 관측된 속도와 필요한 속도를 비교해서 나오며, 확실성 쪽으로는 절대 붙지 않도록 제한된다. 내 대시보드가 이 규칙 아래 처음 뽑아낸 수치는 매출 목표에 대한 2%라는 냉정한 숫자였다. 인터페이스에 감탄하는 대신 입력값을 바꾸게 만드는, 정확히 그런 숫자다.
오늘 돌아가는 것, 그리고 다음에 올 것
이 아키텍처의 v0는 오늘 내 포트폴리오의 소유자 대시보드에 실제로 올라갔다. 날짜가 박힌 마일스톤을 가진 세 개의 목표 트랙, 의존성 그래프로 표현된 벤처 함대, 그리고 페이지를 열 때마다 실시간 성과표 텔레메트리로부터 다시 계산되는 다음 최선의 1~3가지 수까지 — 과거 어느 날에 이 계기판이 뭐라고 말했을지를 재생하는 타임트래블도 포함해서다. 다만 이 재계산기는 아직 완전한 정수계획법이 아니라 그리디(greedy) 스코어러에 불과하다. 그래도 이를 교체할 파이프라인은 짧다. Life GPS 가 이미 /plan 와 /replan 를 HTTP로 열어두고 있기 때문이다. 빌드 순서는 작업 세션 하나당 하나씩 진행한다. (1) 소유자 게이트가 걸린 API 뒤에서 그리디 스코어러를 BILP로 교체한다. (2) 전략 엔진이 실제 참여 사례를 작성할 때처럼 증거를 첨부하고 사람이 서명한 형태로 가중치 파일을 작성하게 한다. (3) 전략적 재계산이 일정이 아니라 이벤트에 의해 발동되도록 트립와이어를 등록한다. 목표는 세 개의 이음매 모두를 2주 안에, 2026-08-18까지 살려내는 것이다. 각 조각이 이미 돌아가고 있으니 단계마다 손댈 부분은 작다. 이 글의 핵심 주장은 바로 그 이음매를 만드는 작업 자체에 있다.
패턴 / 안티패턴
- 패턴: 신경망이 제안하고 기호 체계가 처리한다. 무한히 분기하는 지점마다, 오직 그곳에서만 그렇다 [7].
- 패턴: 두 개의 시계를 둔다. 배분은 빠르고 값싸게 재계산하고, 목표는 트립와이어가 걸릴 때만 느리게 재계산한다.
- 패턴: 검증자는 구조적으로 존재한다(솔버, 테스트, 게이트). 두 번째 프롬프트인 적은 결코 없다.
- 안티패턴: 모델에게 계획을 세우게 하고 그 계획의 검증까지 맡기는 것. 소문이 소문을 감사하는 꼴이다 [2][3].
- 안티패턴: 서명되지 않은 가중치를 먹인 옵티마이저. 정밀도로 세탁된 최적의 쓰레기일 뿐이다.
- 안티패턴: 시계가 하나뿐인 경우. 전략을 매일 요동치게 만들거나, 배분을 분기 단위로 얼어붙게 만든다.
출처 — 검증된 것과 내 것
인용된 여덟 개의 연구 문장은 모두 게시 시점에 출처 원문과 대조해 축어적으로 검증했다(Nature 초록의 경우 접속 시 브라우저 user-agent가 필요하다). Life GPS는 내 공개 코드로, 해당 레포지토리를 바탕으로 설명했다. 전략 엔진과 그 클라이언트 실전 참여 사례는 내 비공개 시스템으로, 각자의 라이선스에 따라 내부 구조는 제외하고 역량 수준에서만 설명했다. 대시보드와 그 그리디 재해법기, 그리고 2%라는 수치는 실제로 운영 중이며, 소유자 권한으로 보호되어 있고, 모두 내 것이다.
참고문헌
- Kambhampati, S., Valmeekam, K., Guan, L., Verma, M., Stechly, K., Bhambri, S., Saldyt, L., & Murthy, A. (2024). Position: LLMs Can't Plan, But Can Help Planning in LLM-Modulo Frameworks. ICML 2024. arxiv.org/abs/2402.01817
- Stechly, K., Valmeekam, K., & Kambhampati, S. (2024). On the Self-Verification Limitations of Large Language Models on Reasoning and Planning Tasks. arxiv.org/abs/2402.08115
- Valmeekam, K., Marquez, M., & Kambhampati, S. (2023). Can Large Language Models Really Improve by Self-critiquing Their Own Plans? arxiv.org/abs/2310.08118
- AhmadiTeshnizi, A., Gao, W., & Udell, M. (2024). OptiMUS: Scalable Optimization Modeling with (MI)LP Solvers and Large Language Models. ICML 2024. arxiv.org/abs/2402.10172
- Xiao, Z., Zhang, D., et al. (2024). Chain-of-Experts: When LLMs Meet Complex Operations Research Problems. ICLR 2024. iclr.cc/virtual/2024/poster/18977
- Zhang, B., Luo, P., Yang, G., Soong, B. H., & Yuen, C. (2025). OR-LLM-Agent: Automating Modeling and Solving of Operations Research Optimization Problems with Reasoning LLM. arxiv.org/abs/2503.10009
- Trinh, T., Wu, Y., Le, Q., He, H., & Luong, T. (2024). 인간의 시범 없이 올림피아드 기하학 문제 풀기. Nature 625. nature.com/articles/s41586-023-06747-5
- Hall, S., Guerrini, L., Dörfler, F., & Liao-McPherson, D. (2024). 경쟁적 공급망 모델링을 위한 후퇴 지평선(receding-horizon) 게임. arxiv.org/abs/2401.09853
관련 글
회사-GPS 시리즈 2부. 연구 자료집(출처 8건, 인용문은 발표 시점에 직접 조회해 원문 대조 검증함)은 2026-08-04에 작성되었다. — Paul Jialiang Wu · agentic-portfolio-lovat.vercel.app