그래프 엔지니어링(Graph Engineering)은 AI 모델 하나의 답변 품질만 높이는 대신, 여러 작업과 도구가 어떤 순서와 조건으로 실행되는지 설계하는 접근법이다. 복잡한 업무를 노드와 연결 관계로 표현하면 각 단계의 입력·출력, 실패 원인, 재시도 경로와 사람의 승인 지점을 분리해 관리할 수 있다.
다만 이 표현은 아직 업계 전체가 합의한 단일 표준 용어가 아니다. 에이전트 워크플로 설계, 그래프 기반 오케스트레이션, 멀티 에이전트 제어를 포괄하는 실무적 개념으로 이해하는 것이 정확하다.
AI 엔지니어링에서 그래프가 등장한 배경
AI 애플리케이션의 설계 관심사는 다음과 같이 확장해 왔다. 이것은 모든 조직이 동일하게 거치는 공식 발전 단계라기보다 서로 보완되는 설계 계층이다.
| 계층 | 핵심 질문 | 주요 설계 대상 |
|---|---|---|
| 프롬프트 엔지니어링 | 모델에 어떻게 지시할 것인가? | 지시문, 예시, 출력 형식 |
| 컨텍스트 엔지니어링 | 판단에 필요한 정보를 무엇으로 구성할 것인가? | 검색 결과, 메모리, 도구 결과, 시스템 규칙 |
| 루프 엔지니어링 | 계획·실행·검증·수정을 어떻게 반복할 것인가? | 반복 조건, 평가 기준, 종료 조건 |
| 그래프 엔지니어링 | 여러 작업과 판단 주체를 어떤 경로로 연결할 것인가? | 노드, 전이, 상태, 분기, 병렬화, 승인 |
프롬프트와 컨텍스트는 그래프 안에서도 계속 필요하다. 루프 역시 그래프의 순환 엣지로 표현할 수 있다. 따라서 그래프 엔지니어링은 앞선 기법을 폐기하는 기술이 아니라, 이들을 실행 구조 안에 배치하는 상위 수준의 설계 관점에 가깝다.
그래프 엔지니어링의 구성 요소
노드
노드(Node)는 하나의 명확한 책임을 가진 작업 단위다. LLM 호출뿐 아니라 데이터베이스 조회, 검색 API 호출, 형식 검증, 계산, 사용자 승인 대기 같은 일반 코드도 노드가 될 수 있다.
좋은 노드는 입력과 출력이 명확하고 독립적으로 시험할 수 있다. 시장 조사처럼 범위가 넓은 이름보다 지정 산업의 최근 자료 수집, 출처 중복 제거, 주장별 근거 검사처럼 책임을 좁히는 편이 디버깅에 유리하다.
엣지
엣지(Edge)는 한 노드에서 다음 노드로 이동하는 전이다. 항상 같은 다음 단계로 이동하는 고정 엣지, 상태를 검사해 경로를 선택하는 조건부 엣지, 여러 작업을 동시에 시작하는 분기 엣지가 있다.
상태
상태(State)는 그래프가 실행되는 동안 공유되는 데이터다. 사용자 요청, 중간 산출물, 검색 출처, 오류 코드, 승인 결과, 반복 횟수 등이 포함될 수 있다.
상태는 단순한 대화 기록과 다르다. 어떤 필드가 필수인지, 누가 수정할 수 있는지, 병렬 결과를 어떻게 합칠지, 민감정보를 언제 삭제할지를 스키마와 규칙으로 정의해야 한다.
조건
조건(Condition)은 다음 경로를 선택하는 규칙이다. 출처가 세 개 이상인가와 같은 결정적 조건은 코드로 판정할 수 있다. 반면 근거가 결론을 충분히 뒷받침하는가처럼 의미 판단이 필요한 조건은 모델 평가나 사람의 검토가 필요할 수 있다.
단일 에이전트보다 통제하기 쉬운 이유
하나의 에이전트에 조사, 분석, 작성, 검증을 모두 맡기면 결과가 잘못되었을 때 원인을 구분하기 어렵다. 계획 오류인지, 검색 누락인지, 도구 호출 실패인지, 근거 없는 생성인지가 하나의 실행 기록에 섞이기 때문이다.
작업을 그래프로 분해하면 다음 항목을 단계별로 관리할 수 있다.
- 노드마다 허용된 도구와 데이터 접근 권한을 제한한다.
- 중간 산출물을 저장하고 독립적으로 평가한다.
- 실패한 노드만 재실행해 비용과 시간을 줄인다.
- 중요한 외부 동작 직전에 사람의 승인을 받는다.
- 실행 경로, 지연 시간, 토큰 사용량과 오류를 추적한다.
그러나 노드를 많이 나눈다고 자동으로 신뢰성이 높아지는 것은 아니다. 상태 전달이 부정확하거나 평가 기준이 모호하면 오류가 여러 단계에 걸쳐 증폭될 수 있다.
대표적인 그래프 활용 패턴
라우터 패턴
라우터는 요청의 유형이나 위험도에 따라 다른 경로를 선택한다. 예를 들어 환불 문의는 정책 검색 노드로, 기술 장애는 진단 노드로 보낼 수 있다.
라우팅 기준이 단순한 키워드나 계정 상태라면 코드가 적합하다. 문맥을 해석해야 한다면 모델 분류를 사용할 수 있지만, 신뢰도가 낮을 때 기본 경로나 사람 검토로 보내는 안전장치가 필요하다.
병렬 실행 패턴
서로 의존하지 않는 작업을 동시에 수행한 뒤 집계 노드에서 결합한다. 시장, 고객, 경쟁사 조사를 병렬로 실행하는 방식이 대표적이다.
병렬화는 지연 시간을 줄일 수 있지만 호출 수와 순간 비용은 늘어난다. 결과가 같은 상태 필드를 동시에 수정한다면 충돌 해결 규칙과 병합 순서도 정해야 한다.
생성자·평가자 패턴
생성자가 초안을 만들고 평가자가 기준에 따라 통과, 수정 또는 재작성을 결정한다. 평가 결과가 생성자에게 돌아가므로 그래프 안에 루프가 형성된다.
평가자 역시 LLM이면 잘못된 판정을 할 수 있다. 가능한 항목은 스키마 검사, 테스트 실행, 인용 URL 확인 같은 결정적 검증으로 보완하고, 최대 반복 횟수를 설정해야 무한 반복을 막을 수 있다.
사용자 승인 패턴
외부 시스템 변경, 메시지 발송, 결제, 배포처럼 되돌리기 어렵거나 책임이 큰 동작 전에 실행을 중단하고 사람의 판단을 기다린다. 승인 화면에는 최종 결과만 보여주기보다 실행할 동작, 사용 데이터, 예상 영향과 되돌리기 방법을 함께 제시하는 편이 안전하다.
관리자·전문가 패턴
관리자 노드가 작업을 분해하고 검색, 분석, 작성 등 전문 노드에 배정한 뒤 결과를 취합한다. 역할 분리는 유용하지만 에이전트 수를 늘리는 것 자체가 목표가 되어서는 안 된다. 고정된 절차는 명시적 워크플로가 더 예측 가능할 수 있다.
AI, 코드, 사람의 역할을 나누는 원칙
| 작업 성격 | 우선 수단 | 예시 |
|---|---|---|
| 결과가 동일해야 하는 명확한 규칙 | 일반 코드 | 개수 계산, 날짜 비교, JSON 스키마 검사 |
| 자연어의 의미와 모호성을 다루는 판단 | AI 모델 | 의도 분류, 요약, 초안 작성, 정성 평가 |
| 책임·윤리·고위험 판단이 필요한 결정 | 사람 | 대외 발송 승인, 예외 허용, 고위험 조치 승인 |
규칙이 명확한데도 LLM을 사용하면 비용, 지연, 비결정성이 불필요하게 증가한다. 반대로 모든 판단을 코드 규칙으로 고정하면 표현이 다양한 실제 입력을 처리하기 어렵다. 좋은 그래프는 세 수단의 장점을 결합하고 각 경계에서 입력과 출력을 검증한다.