← /geode/portfolioGEODE . 문서
GitHub
핵심 개념
레퍼런스

프로바이더

어댑터별 프로바이더 폴백 체인. 명시적 체인 순서를 갖는 프로바이더 독립 LLM router. v0.94+ 가드: HTML data-URL, tool_choice 정규화, prompt_cache_key, GLM thinking 게이트, agentic_call 스트리밍.

어댑터

파일프로바이더체인 내 모델
core/llm/providers/anthropic.pyAnthropicOpus 4.7 → Opus 4.6 → Sonnet 4.6 → Haiku 4.5
core/llm/providers/openai.pyOpenAI Responsesgpt-5.5 → gpt-5.4 → gpt-5.4-mini → gpt-5-mini
core/llm/providers/codex.pyCodex Plus (구독)Codex 라우팅을 통한 OpenAI 모델
core/llm/providers/glm.pyZhipu GLMGLM-5.1 → GLM-5 → GLM-5-turbo → GLM-4.7 → GLM-4.7-flash. context 202_752 토큰.

폴백 체인

core/config.py에 정의되어 있습니다.

ANTHROPIC_FALLBACK_CHAIN = ["claude-opus-4-7", "claude-opus-4-6",
                            "claude-sonnet-4-6", "claude-haiku-4-5"]
OPENAI_FALLBACK_CHAIN    = ["gpt-5.5", "gpt-5.4",
                            "gpt-5.4-mini", "gpt-5-mini"]
GLM_FALLBACK_CHAIN       = ["glm-5.1", "glm-5", "glm-5-turbo",
                            "glm-4.7", "glm-4.7-flash"]

각 어댑터의 retry_with_backoff()는 재시도 가능한 오류 (rate limit, 서버 오류) 에 대해 체인을 따라 내려갑니다. 재시도 불가능한 오류 (인증 실패, 결제) 는 BillingError 또는 AuthError로 즉시 전파됩니다.

적응형 사고 깊이

effort 파라미터 (5단계. low, medium, high, max, xhigh) 는 프로바이더별로 다르지만 균일하게 노출됩니다.

  • Anthropic. Opus 4.7에 대해 output_config.effort="xhigh" (Opus 4.6 / Sonnet 4.6은 xhigh를 거부하고 max로 다운그레이드)
  • OpenAI Responses. gpt-5.x의 reasoning.effort 필드
  • Codex. codex_reasoning_items 사이드카 (턴 간 암호화된 reasoning 재생)
  • GLM. extra_body={thinking: {type: enabled, clear_thinking: false}}

캐싱

  • Anthropic. system 블록에 `cache_control: ephemeral` (__GEODE_PROMPT_CACHE_BOUNDARY__를 통한 STATIC/DYNAMIC 분할) 과 최근 3개 non-system 메시지에 대한 apply_messages_cache_control() (PR #864). Prompt Caching 참조.
  • OpenAI. 서버 측 자동 prompt 캐싱 (GEODE wiring 불필요).
  • GLM / Codex. 프로바이더 관리.

회로 차단기

각 어댑터는 모듈 수준의 CircuitBreaker 인스턴스를 보유합니다 (core/llm/fallback.py). 반복적인 실패가 발생하면 차단기가 열리고 체인이 회전합니다. 실패하는 프로바이더를 두드리는 대신 다음 프로바이더에게 기회가 가는 셈입니다. 성공한 호출에서 record_success()가 차단기를 재설정합니다.

v0.94+ 추가된 가드

  • OpenAI HTML data-URL 가드 (v0.94). OpenAI/Codex가 HTML을 data:text/html;base64,... 단일 URL로 emit하는 패턴 차단. core/llm/postprocess/html_output.py로 raw <!DOCTYPE html> 강제.
  • Cross-provider tool_choice 정규화 (v0.94). 4 프로바이더가 각자 다른 형식의 tool_choice를 받는 문제를 통일된 GEODE 측 schema로 변환.
  • OpenAI prompt_cache_key derivation (v0.94). 프로젝트 식별자 기반 prompt 캐시 키 자동 도출.
  • GLM thinking 게이트 (v0.94). thinking.type="off"|"none"로 thinking 비활성 가능. cost 절감용.
  • Anthropic agentic_call streaming (v0.95). messages.stream() async 컨텍스트로 변환. 토큰 트래커는 동일.
  • GLM context window 정정 (v0.95). 200_000 flat → 정확값 202_752. tests/test_glm_context_window.py 회귀 방지.

OAuth (Anthropic 비활성, OpenAI Codex 활성)

Anthropic ToS에 따라 Anthropic OAuth 로그인은 비활성 상태입니다. API 키만 사용합니다. OpenAI Codex Plus 구독 인증은 사용 가능합니다. Operations · OAuth 가 채워지면 그곳을 참조하세요.