유연하면서도 '의견 있는' AI 코딩 어시스턴트를 만들고 싶다면?
AI 코딩 어시스턴트가 점점 더 똑똑해지고 있습니다. 예전에는 테스트 코드만 생성해주는 도우미 수준이었지만, 이제는 개발자의 의도를 이해하고, 문제를 분석하고, 적절한 방식으로 해결해주는 ‘에이전트’로 진화하고 있죠.
하지만 이런 시스템을 만들기 위해선 고민이 필요합니다. 단순히 모델에게 모든 걸 맡겨서는 일관된 품질이 나오기 어렵기 때문입니다.
Qodo 팀은 이 문제를 해결하기 위해, 그리고 자신들의 코딩 철학을 반영하기 위해 LangGraph라는 프레임워크를 선택했습니다.
이 글에서는 Qodo 팀의 실제 사례를 통해, 왜 LangGraph가 유연성과 구조적 흐름을 동시에 제공하는 훌륭한 선택이었는지를 상세히 살펴봅니다. 그리고 직접 사용할 수 있는 코드 예제도 함께 소개해드릴게요.
🧱 1. 왜 기존 방식은 한계를 가졌는가?
Qodo는 GPT-3 시절부터 AI 코딩 도우미를 개발해왔습니다. 당시에는 모델의 한계가 명확했기 때문에, 테스트 생성, 코드 리뷰, 개선 작업 등 각 작업마다 사전 정의된 흐름을 따랐습니다.
이 방식은 예측 가능성이 높고, 정형화된 결과를 제공하는 데에는 효과적이었지만, 유연하게 대응하는 데에는 한계가 있었습니다. 조금만 복잡하거나 틀에 벗어난 요청이 들어오면 제대로 대응하지 못했기 때문이죠.
🚀 2. 새로운 LLM 시대, 요구되는 변화
Claude Sonnet 3.5 이후, LLM의 능력은 놀라울 만큼 향상됐습니다. 일반적인 코딩 과제도 훨씬 자연스럽게 처리할 수 있게 됐죠.
하지만 모델이 똑똑해졌다고 해도, 무작정 자유롭게만 두는 것이 항상 좋은 것은 아닙니다.
좋은 결과를 위해서는 여전히 개발자의 시각에서 문제를 단계별로 풀고, 맥락을 제공하고, 검증하고 다시 시도하는 흐름이 필요합니다.
즉, 유연성과 구조적 흐름 사이에서 균형을 잡아야 할 시기가 된 것이죠.
🔧 3. LangGraph의 핵심 개념 이해하기
LangGraph는 이름 그대로, 그래프 기반의 워크플로우 프레임워크입니다.
간단히 말하면, 다음과 같은 방식으로 동작합니다:
- 각 단계(노드)는 ‘맥락 수집’, ‘계획’, ‘코드 생성’, ‘검증’ 등 명확한 역할을 가짐
- 노드 간의 연결(에지)을 통해 전체 흐름을 정의
- 조건에 따라 흐름이 달라지기도 하고, 반복되기도 함
- 전체 구조는 상태 머신(state machine) 형태로 동작
이 구조는 완전히 고정된 흐름도 만들 수 있고, 유연하게 분기하거나 루프를 만드는 구조도 손쉽게 구현할 수 있습니다.
💡 4. Qodo가 LangGraph를 선택한 이유
Qodo는 처음에는 LangGraph를 단순한 실험용 프레임워크로 선택했습니다.
하지만 쓰면 쓸수록 만족도가 높아져 결국 프로덕션 단계까지 이 프레임워크를 유지하게 되었습니다.
그 이유는 다음과 같습니다:
- 구조적인 흐름을 설계하는 데 탁월
- 노드 단위로 논리 분리가 쉬워 유지보수 용이
- 조건 분기, 상태 전이 등 고급 흐름 구현이 쉬움
- 복잡한 추상화 없이 코드를 읽기 쉬움
무엇보다 중요한 건, “우리는 코드를 이렇게 작성해야 한다”는 철학을 녹일 수 있었다는 점입니다.
🧩 5. LangGraph로 구현한 에이전트 구조
Qodo 팀은 LangGraph를 활용해 다음과 같은 워크플로우를 설계했습니다:
- Context Collector (맥락 수집)
- 코드베이스에서 관련 정보 수집
- 외부 리소스와 통합하여 필요한 배경 제공
- Task Planner (작업 계획 수립)
- 문제를 작은 단계로 나눔
- 실행 순서를 정의
- Task Executor (코드 실행)
- 실제 코드를 생성
- 필요한 경우 반복 수행
- Validator (검증 단계)
- 코드 품질 및 요구사항 충족 여부 판단
- 실패 시 다시 실행 단계로 되돌림
이러한 구조 덕분에, 어떤 요청이 오더라도 계획부터 결과 검토까지 체계적으로 처리할 수 있게 됐습니다.
🧪 6. 코드 예제로 보는 LangGraph 워크플로우
다음은 LangGraph로 정의된 워크플로우의 간단한 예입니다:
from langgraph.graph import StateGraph, END
workflow = StateGraph(name="coding_assistant")
# 노드 정의
workflow.add_node("context_collector", collect_relevant_context)
workflow.add_node("task_planner", create_execution_plan)
workflow.add_node("task_executor", execute_plan)
workflow.add_node("validator", validate_output)
# 노드 간 흐름 정의
workflow.add_edge("context_collector", "task_planner")
workflow.add_edge("task_planner", "task_executor")
workflow.add_edge("task_executor", "validator")
# 조건 분기: 검증 실패 시 반복
workflow.add_conditional_edges(
"validator",
should_revise,
{
True: "task_executor",
False: END
}
)
graph = workflow.compile()
graph.invoke({"user_input": "build me a game like levelsio"})
이 코드는 거의 도식화된 설계도처럼 직관적입니다.
노드가 어떤 역할을 하는지, 흐름이 어떻게 이어지는지 코드만 봐도 이해할 수 있죠.
♻️ 7. 재사용 가능한 컴포넌트로 개발 속도 향상
LangGraph의 큰 장점 중 하나는 노드 단위의 재사용성입니다.
예를 들어:
- context_collector는 어떤 워크플로우에서도 거의 동일하게 사용
- validator는 코드 품질과 테스트 검증용으로 모든 흐름에서 사용 가능
이런 구성 덕분에 새로운 기능을 만들 때 전체를 새로 만들 필요 없이 필요한 조각만 조합하면 됩니다.
📦 8. LangGraph의 내장 상태 관리 기능
LangGraph는 자체적으로 상태 저장 기능도 제공합니다.
Qodo 팀은 이를 활용해, 에이전트의 실행 상태를 PostgreSQL에 저장하고 복원할 수 있도록 했습니다.
설정은 아주 간단합니다:
from langgraph.checkpoint.postgres import PostgresSaver
checkpointer = PostgresSaver.from_conn_string(
"postgresql://user:password@localhost:5432/db"
)
checkpointer.setup()
graph = workflow.compile(checkpointer=checkpointer)
이 기능을 통해 중간에 끊긴 작업도 이어서 수행할 수 있게 되었고, 장기적인 로그 관리도 가능해졌습니다.
앞으로 AI 코딩 보조 도구는 어디로 향할까?
AI 코딩 어시스턴트는 더 똑똑해지고 있습니다. 하지만 ‘똑똑하기만 한’ 도구는 실제 업무에 바로 적용하기 어렵습니다.
중요한 것은, 의미 있는 흐름을 가지고 있고, 품질을 검증할 수 있으며, 재사용 가능해야 한다는 점입니다.
Qodo 팀은 LangGraph를 통해 이러한 요소를 잘 결합했습니다.
당신이 AI 기반 개발 도구를 설계하고 있다면, 이 프레임워크는 분명히 훌륭한 출발점이 될 것입니다.
📍 기대되는 점
- 앞으로 더 강력한 LLM이 나와도, LangGraph는 쉽게 구조를 조정 가능
- 다양한 업무 흐름을 통합한 ‘멀티 에이전트’ 구조도 설계 가능
- 개발자뿐 아니라 QA, PM 등 다양한 역할의 자동화도 기대됨
LangGraph, 단순한 프레임워크가 아닌 AI 개발 도구 설계의 기준점으로 성장할 가능성이 큽니다.
https://www.qodo.ai/blog/why-we-chose-langgraph-to-build-our-coding-agent/
Why we chose LangGraph to build our coding agent - Qodo
Read about Why we chose LangGraph to build our coding agent in our blog.
www.qodo.ai
'인공지능' 카테고리의 다른 글
AI가 만드는 ‘1분 이야기’의 혁신! 엔비디아의 TTT 기술로 탄생한 AI 톰과 제리 (0) | 2025.04.14 |
---|---|
“코딩 실력, AI로 평가받는다?” Aider LLM이 바꿔놓은 코드 평가의 미래 (0) | 2025.04.14 |
AI가 버그를 못 잡는다고?-최신 연구로 본 디버깅 AI의 현실과 한계 (0) | 2025.04.14 |
AI 코딩 에이전트를 제대로 활용하는 법: 효과적인 사용을 위한 실전 가이드 (0) | 2025.04.14 |
Firebase Studio 공개! 이제 AI 앱 개발이 이렇게 쉬워진다고? (0) | 2025.04.14 |