본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 20. 03:19

OpenRouter 무료 모델을 OpenClaw 폴백 체인(Fallback Chain)에 연결했습니다. 실제로 작동하는 방법은 다음과 같습니다.

요약

에이전트 워크플로우의 안정성을 높이기 위해 로컬 모델, OpenRouter 무료 모델, 유료 모델을 결합한 7단계 폴백 체인을 구축하는 방법을 설명합니다. 모델 오류 및 타임아웃 문제를 해결하여 시스템 가용성을 극대화하는 전략을 다룹니다.

핵심 포인트

  • 로컬 → 무료 → 유료 순의 전략적 모델 배치
  • 404, 429 오류 등 다양한 실패 케이스 대응 필요
  • Ollama와 OpenRouter를 활용한 비용 효율적 완충 장치 구축
  • Gateway API를 통한 대규모 크론 잡의 일괄 업데이트

3주 전, 저의 OpenClaw 에이전트가 피크 시간대에 overloaded_error를 반환하기 시작했습니다. MiniMax가 실제로 다운되었기 때문이 아니라, 폴백 체인 (Fallback Chain)이 깨졌기 때문이었습니다. 체인 내 5개 모델 중 3개가 404 오류나 잘못된 응답을 반환하고 있었고, OpenClaw가 죽은 항목들을 순차적으로 거치는 동안 요청은 이미 타임아웃 (Timeout)이 발생해 버렸습니다.

이번 주에 이를 해결했습니다. 새로운 체인은 7개의 항목으로 구성됩니다: 2개의 로컬 Ollama 모델, 3개의 OpenRouter 무료 모델, 그리고 2개의 MiniMax 모델입니다. 지난 3일 동안 단 한 번의 요청도 놓치지 않았습니다.

제가 정확히 무엇을 변경했는지, 무엇을 테스트했는지, 그리고 만약 다시 한다면 무엇을 다르게 할 것인지 설명하겠습니다.

아무도 말하지 않는 폴백 체인의 문제점

폴백 체인 (Fallback Chain)은 단순해 보입니다: 모델 A가 실패하면 B를 시도하고, 그다음 C, 그다음 D를 시도하는 방식입니다. 하지만 현실은 훨씬 더 복잡합니다. 모델들은 깔끔한 에러 코드로 실패하지 않습니다. 404, 429 오류를 반환하거나, 형식이 잘못된 응답 (Malformed responses)을 보내거나, 혹은 그냥 멈춰버립니다 (Hang). 그리고 다단계 에이전트 워크플로우 (Multi-step agentic workflow)를 실행 중일 때, 깨진 폴백은 곧 망가진 아침을 의미합니다.

저의 이전 체인은 5개의 항목이 있었습니다. 이번 주에 감사 (Audit)를 진행했을 때, 3개가 작동하지 않았습니다:

#모델 (Model)문제점
1nvidia/qwen/qwen3.5-122b-a10b404 — 엔드포인트 (Endpoint)가 존재하지 않음
...

체인은 작동할 리 없는 모델들에 시간의 60%를 소비하고 있었습니다. 이것이 바로

ollama/qwen3.6:27b-q4_K_M   # 로컬 27B — 가장 빠름, 무료, 검증됨
ollama/qwen3.5:9b            # 로컬 9B — 가벼운 작업을 위한 폴백 (Fallback)
openai/gpt-oss-20b:free      # OpenRouter 무료 — 가장 신뢰할 수 있는 무료 티어
...

이 순서는 의도적인 것입니다: 로컬(Local) → 무료(Free) → 유료(Paid). 로컬 모델은 밀리초(ms) 단위로 실행되며 비용이 전혀 들지 않습니다. OpenRouter 무료 모델은 유료 티어에 도달하기 전의 완충 장치(Buffer) 역할을 합니다.

한 가지 주의할 점: 초기 버스트 테스트(Burst testing) 중에 OpenRouter의 무료 모델들이 모두 429 오류를 반환했습니다. 이는 무료 티어에서 예상되는 동작이며 오류가 아닙니다. 체인은 이를 자연스럽게 처리합니다. 시도한 후, 429를 받으면 다음 모델로 넘어갑니다. 중요한 것은 API 키가 유효하고 모델이 실제로 존재한다는 점입니다.

모든 크론 잡(Cron Jobs)에 적용하는 방법

저는 16개의 크론 잡(Cron jobs)을 운영하고 있습니다. 새 체인을 각 작업에 수동으로 적용하는 것은 오류가 발생하기 쉽고 지루한 작업이었을 것입니다. 대신, OpenClaw의 게이트웨이 API(Gateway API)를 사용하여 모든 작업을 한 번에 업데이트하는 한 줄짜리 명령어를 작성했습니다:

NEW_CHAIN='["ollama/qwen3.6:27b-q4_K_M","ollama/qwen3.5:9b","openai/gpt-oss-20b:free","openai/gpt-oss-120b:free","google/gemma-4-31b-it:free","minimax-portal/MiniMax-M2.7","minimax-portal/MiniMax-M3"]'

openclaw cron list --json | python3 -c "
...

또한 openclaw.json의 기본값(Defaults)을 업데이트하여, 크론 잡뿐만 아니라 새로운 세션들도 기본적으로 올바른 체인을 사용하도록 설정했습니다.

다르게 한다면 (개선점)

체인에 추가하기 전에 모델을 테스트하세요. 이전 체인이 깨졌던 이유는 누군가(아마도 몇 달 전의 저였을 것입니다) 그럴듯해 보이지만 검증되지 않은 모델들을 추가했기 때문입니다. 폴백 체인(Fallback chain)에 있는 404 오류나 잘못된 모델은 폴백이 아니라 지연(Delay)일 뿐입니다.

체인의 끝에 동일한 제공업체(Provider)의 모델 두 개를 배치하지 마세요. 만약 MiniMax가 과부하 상태라면, MiniMax-M2.7과 MiniMax-M3 모두 과부하 상태일 것입니다. 제 체인의 마지막 루프백(Loop-back)은 일종의 헤지(Hedge)이지만, 이는 각 모델의 라우팅(Routing) 방식이 근본적으로 다를 때만 의미가 있습니다. 실제로는 인프라를 공유합니다.

상태 확인(Health checks) 용도로 로컬 모델을 사용하세요, 주 작업용이 아닙니다. 로컬 Ollama 모델은 빠르고 무료이지만, 복잡한 에이전트 워크플로우 (Agentic workflows)를 위한 프런티어 모델 (Frontier models)만큼의 도구 호출 (Tool-calling) 충실도를 갖추고 있지는 않습니다. 저는 단순한 작업과 신뢰성 확인을 위해 체인의 최상단에 로컬 모델을 배치하지만, 주요 에이전트 작업은 여전히 MiniMax로 전달합니다.

이 체인이 완벽하지는 않습니다. 하지만 지난 3주 만에 처음으로 overloaded_error 알림 더미를 보며 깨어나지 않았습니다. 그것이 기준이며, 이 기준을 통과하기 위해 감사가 필요했습니다.

배운 점: 폴백 체인 (Fallback chain)은 가장 취약한 엔트리 (Entry)만큼만 성능을 발휘합니다. 여러분의 체인을 감사하세요. 모든 모델을 테스트하세요. 투자 시간은 20분이지만, 신뢰성 향상은 100%입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0