본문으로 건너뛰기

CADTopo의 비용 인지 동적 토폴로지 라우팅

CADTopo는 작업별 에이전트 그래프와 모델 비용을 실행 중에 함께 조정합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

작성자는 LangGraph와 CrewAI에서 에이전트 간 통신 그래프를 작업 전에 고정해야 하는 문제를 해결하기 위해 CADTopo를 만들었습니다. CADTopo의 Router는 매 라운드 목표에 필요한 에이전트와 통신 경로를 동적으로 고르고, Manager는 결과 점수에 따라 종료하거나 새 목표를 설정합니다. 각 에이전트는 비용이 다른 Backbone 목록과 도구를 가지며, 기본적으로 저가 모델을 사용하다가 불확실성·낮은 점수·라운드 부족 때 상위 모델로 전환합니다. Python 3.10+, MIT, LiteLLM, Markdown 기반 역할 정의를 제공하지만, 비용 절감이나 품질 개선을 입증하는 벤치마크는 아직 본문에 없습니다.

섹션별 상세

01
작성자는 LangGraph와 CrewAI에서 에이전트 간 연결 순서를 작업 전에 고정해야 하고, 작업이 달라질 때마다 그래프 배선을 수정해야 하는 점을 문제로 삼았습니다. CADTopo는 에이전트 풀과 작업만 입력받고 사전 정의된 통신 그래프 없이 협업을 시작합니다. 따라서 연결 구조를 코드에 직접 고정하는 대신 작업별 라우팅 결과를 실행 중에 생성합니다.
python
from cadtopo import Agent, Backbone, Router, Manager, EmbeddingModel, CadTopoAI

agents = [
    Agent(
        name="Developer",
        skill_definition="Writes the Python implementation.",
        system_prompt="You are a senior Python developer. Return only the function.",
        backbones=[
            Backbone(model="openrouter/meta-llama/llama-3.1-8b-instruct", cost=0.06),
            Backbone(model="openrouter/anthropic/claude-3.5-sonnet", cost=0.20),
            Backbone(model="openrouter/openai/gpt-5", cost=30.0),
        ],
        tools=[run_tests],
    ),
    Agent(
        name="Tester",
        skill_definition="Reviews and validates the implementation.",
        system_prompt="You are a QA engineer. Point out any bugs.",
        backbones=[
            Backbone(model="openrouter/meta-llama/llama-3.1-8b-instruct", cost=0.06),
            Backbone(model="openrouter/anthropic/claude-3.5-sonnet", cost=0.20),
        ],
    ),
]

router = Router(agents=agents, embedding_model=EmbeddingModel())
manager = Manager(api_provider="openrouter/meta-llama/llama-3.1-8b-instruct")
system = CadTopoAI(manager=manager, router=router, max_rounds=5)
answer = system.run("Implement a function that reverses a string.")

에이전트별 역할, 모델 등급, 비용, 도구를 등록한 뒤 Router와 Manager를 연결하고 최대 5라운드로 문자열 반전 작업을 실행하는 CADTopo 구성 코드입니다.

02
각 라운드에서 Router는 현재 목표에 관련된 에이전트를 먼저 선별하고, 선택된 에이전트에게 제공 가능한 결과와 필요한 입력을 묻습니다. Router는 이 응답을 바탕으로 해당 라운드의 통신 그래프를 만들며, Manager는 결과를 평가해 작업을 끝내거나 새 목표를 설정합니다. 목표가 바뀌면 다음 라운드의 에이전트 조합과 연결도 함께 바뀝니다.
03
각 에이전트는 하나의 모델이 아니라 비용 순서가 있는 Backbone 목록을 가지며, 필요하면 도구도 함께 등록합니다. 선택기는 기본적으로 비용이 0.06인 llama-3.1-8b-instruct부터 사용하고, 에이전트의 불확실성이나 Manager의 낮은 점수 또는 남은 라운드 부족이 발생할 때 비용 0.20의 claude-3.5-sonnet이나 비용 30.0의 gpt-5로 올라갑니다. 이 구조는 모든 라운드에 고가 모델을 적용하지 않고 어려운 단계에만 상위 모델을 배치하려는 방식입니다.
04
저장소는 Python 3.10 이상과 MIT 라이선스를 사용하고, LiteLLM을 통해 OpenAI·Anthropic·OpenRouter·로컬 모델을 문자열 변경만으로 연결할 수 있습니다. 에이전트 역할과 프롬프트는 Markdown 파일에 둘 수 있어 Python 코드를 수정하지 않고 동작 정의를 바꿀 수 있으며, 모든 에이전트에서 네이티브 tool calling을 사용할 수 있습니다. 다만 게시자는 비용 선택 휴리스틱을 아직 작업 중인 부분으로 밝히고 있어, 실제 비용 절감률이나 품질 향상 수치에 대한 벤치마크는 본문에 제시하지 않았습니다.

용어 해설

동적 토폴로지 라우팅(Dynamic Topology Routing)
에이전트 사이의 고정된 호출 순서를 미리 정하지 않고, 현재 목표와 각 에이전트의 역할·요구사항을 바탕으로 매 라운드 통신 구조를 새로 만드는 방식입니다. 작업마다 다른 협업 경로를 구성할 수 있습니다.
비용 인지 라우팅(Cost-Aware Routing)
모든 요청에 같은 고가 모델을 사용하지 않고, 비용이 낮은 모델부터 시작한 뒤 불확실성이나 낮은 평가 점수 같은 조건에서만 더 비싼 모델로 전환하는 선택 전략입니다. 모델 비용과 결과 품질을 함께 고려합니다.
에이전틱 AI(Agentic AI)
여러 AI 에이전트가 역할을 나누고 목표에 따라 작업을 수행하는 시스템을 뜻합니다. 이 글에서는 Router가 관련 에이전트를 고르고 Manager가 결과를 평가해 다음 목표나 종료 여부를 결정하는 구조로 구현됩니다.
도구 호출(Tool Calling)
에이전트가 모델의 텍스트 응답만 반환하는 대신 등록된 외부 함수나 실행 도구를 선택해 호출하는 기능입니다. CADTopo에서는 Developer 에이전트가 run_tests 같은 도구를 함께 보유할 수 있습니다.
Embedding 모델(Embedding Model)
텍스트나 다른 입력을 의미를 반영한 벡터로 변환하는 모델입니다. CADTopo의 Router는 EmbeddingModel을 사용해 현재 목표와 에이전트의 역량을 비교하고 해당 라운드에 필요한 에이전트를 선별합니다.
DyTopo 프로토콜(DyTopo Protocol)
에이전트 협업에 필요한 통신 토폴로지를 작업 중에 동적으로 구성하는 프로토콜입니다. CADTopo는 이 프로토콜에 비용 인지 모델 선택을 추가해 라운드별 연결과 모델 등급을 함께 조정합니다.

언급된 도구

LangGraph중립

에이전트 협업 그래프를 구성하는 프레임워크로 언급됐습니다.

CrewAI중립

에이전트 팀과 역할 간 연결을 구성하는 도구로 언급됐습니다.

LiteLLM추천

OpenAI, Anthropic, OpenRouter 또는 로컬 모델을 통일된 인터페이스로 연결하는 기반 라이브러리입니다.

OpenRouter중립

여러 모델을 문자열 기반으로 선택하고 호출하는 API 제공자로 사용됐습니다.

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 20.수집 2026. 08. 20.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.