LLM 게이트웨이가 내 트래픽으로 라우터를 배운다: experientiallabs/experiential 0.7.238 해부 — Rust 데이터 플레인·fsync SQLite 원장·exp build 시뮬레이션 루프와 키 없는 박스 실측

테크부터 경제, 생활까지. 복잡한 소식을 쉽게 풀어봅니다. 오늘 오후 오픈소스 심층 분석은 2026년 11월 12일 GitHub Trending(Python, daily)에 올라온 experientiallabs/experiential입니다. 한 줄로 줄이면 “OpenAI 호환 API 하나로 호스티드·BYOK·로컬 모델을 묶고, 누가 어떤 모델을 얼마까지 쓰는지 통제하며, 그 운영 트래픽을 다시 라우터·전용 모델 학습 재료로 돌리는 게이트웨이”입니다. LiteLLM 류의 프록시와 겉모습은 비슷하지만, 내부는 Rust로 컴파일된 데이터 플레인 + Python 컨트롤 플레인 + fsync되는 SQLite 원장이라는 꽤 독특한 설계를 택했고, 그 위에 exp build(트레이스→시뮬레이터)와 exp optimize(라우터/모델 최적화)를 얹었습니다. 이 글은 README·docs/·release-scope.md를 근거로 구조를 해부하고, 박스(리눅스 x86_64, Python 3.13.5)에서 API 키 없이 로컬 목(mock) 업스트림으로 게이트웨이 전 구간을 직접 돌려 본 결과를 공유합니다.

한 개의 OpenAI 호환 문 뒤에서 여러 공급자 모델로 갈라지는 Experiential 게이트웨이 개념도 (MoricWorld 일러스트)
한 개의 OpenAI 호환 문 뒤에서 여러 공급자 모델로 갈라지는 Experiential 게이트웨이 개념도 (MoricWorld 일러스트)

1. 오늘 왜 이 저장소인가: 트렌딩 근거와 기본 정보

아래 수치는 GitHub REST API와 PyPI JSON API에서 2026-11-12 16:56 KST 무렵 직접 조회한 값입니다. 스타 수는 시시각각 바뀌므로 “그 시점의 스냅샷”으로 읽어 주십시오.

항목 값 (2026-11-12 KST 기준) 비고
저장소 experientiallabs/experiential Apache-2.0, 주 언어 Python
Stars / Forks 16,624 / 300 GitHub API, 16:56 KST 조회
Trending Python daily 목록에 “589 stars today” github.com/trending/python?since=daily
생성일 2026-06-25 07:40 KST 약 4.5개월 된 프로젝트
최신 PyPI experiential 0.7.238 (11-12 11:15 KST 업로드) 네이티브 확장 exp-gateway-native 0.3.185 고정
오늘의 신규 릴리스 exp-code-v0.1.0(05:12) → v0.1.1(09:41) → v0.1.2(10:10 KST) Pi 기반 오픈소스 코딩·코워크 에이전트 exp code 공개
릴리스 속도 PyPI에 240개 버전이 올라와 있음 0.7.236→0.7.238이 하루 사이에 나옴
코드 규모(체크아웃 기준) Python 약 24.3만 줄(테스트 제외) + 테스트 파일 749개, Rust 약 9.1만 줄, TypeScript(agent) 약 4천 줄 단순 wc -l 집계

오늘 상승의 직접적인 계기는 exp code(오픈소스 코딩 에이전트) 추가와 Anthropic 프롬프트 캐싱 자동화(#1332, #1339) 같은 굵직한 커밋이 같은 날 몰린 것으로 보입니다. 다만 “왜 별이 늘었는가”는 추정이고, 확인된 사실은 위 표의 릴리스·커밋 타임라인까지입니다.

2. 이 프로젝트가 풀려는 문제

README가 스스로 정리한 목표는 세 가지입니다.

  1. 호스티드, BYOK(Bring Your Own Key), 로컬 모델을 하나의 OpenAI 호환 API로 사용
  2. 어떤 사용자·에이전트가 어떤 모델을, 어떤 용도로, 얼마까지 쓸 수 있는지 통제
  3. 운영 트래픽을 품질·속도·비용에 맞춘 맞춤 라우터 또는 모델로 전환

1·2번은 LLM 게이트웨이의 “기본기”이고, 차별점은 3번입니다. 에이전트 트레이스를 가져와 시나리오를 채굴하고, 기록된 사실을 검색하는 RAG 인덱스와 “월드모델 시뮬레이터”를 만든 뒤, 그 위에서 후보 모델 조합을 비교해 라우터를 고르는 흐름입니다. 즉 “어느 모델이 더 좋냐”를 벤치마크가 아니라 내 트래픽을 재연한 시뮬레이션으로 판단하자는 접근입니다.

3. 저장소 구조 한눈에 보기

경로 역할 실무자가 볼 포인트
exp/cli/ Typer 기반 CLI: build, run, code, login, config, capture, optimize, eval 모든 명령이 --non-interactive --json을 지원해 자동화 친화적
exp/runtime/gateway/ 게이트웨이 컨트롤 플레인: 인증, 예산(budgets.py, budget_authority.py), 캐싱, 페일오버, 가드레일 등 파일마다 *_test.py가 짝을 이루는 구조
exp/runtime/gateway/native/ Rust 크레이트 → PyO3 확장 exp_gateway_native 소켓·디스패치·SSE를 GIL 밖에서 처리하는 데이터 플레인
exp/runtime/openai_protocol, anthropic_protocol Chat Completions / Responses / Messages 와이어 처리 Responses-over-WebSocket(Codex CLI 방식)까지 지원
exp/simulation/ ingest, mining, retrieval, reconstruction, engines 트레이스를 시나리오·시뮬레이터로 바꾸는 부분
exp/optimize/ router, model, evaluation, simulation 라우터 적합(fit)·held-out 평가, Tinker SFT
agent/ exp-code (TypeScript, Node.js 22.19+) Pi 위에 얹은 코딩·코워크 에이전트
docs/reference/ 게이트웨이 계약 문서 30여 개 페일오버 규칙, 가드레일, 이그레스 정책 등 “계약” 단위로 문서화
docs/release-scope.md 지원·검증된 것과 명시적으로 제외된 것 도입 검토 시 가장 먼저 읽을 문서

인상적인 점은 문서 문화입니다. release-scope.md에 “공급자별 라이브 검증은 자격 증명이 필요하므로 Not run”이라고 표로 적어 두었고, 픽스처 성공을 라이브 결과처럼 포장하지 않겠다고 명시합니다. 오픈소스 게이트웨이에서 보기 드문 정직함이라 평가 시 참고 가치가 큽니다.

4. 내부 동작: 요청 한 건이 지나가는 길

Rust 데이터 플레인(exp_gateway_native)과 Python 컨트롤 플레인, SQLite 원장의 역할 분담 — docs/reference/gateway-architecture.md 기반 재구성 (MoricWorld 일러스트)
Rust 데이터 플레인(exp_gateway_native)과 Python 컨트롤 플레인, SQLite 원장의 역할 분담 — docs/reference/gateway-architecture.md 기반 재구성 (MoricWorld 일러스트)

docs/reference/gateway-architecture.md에 따르면 게이트웨이의 데이터 플레인은 단 하나, PyO3 확장 exp_gateway_native 안의 Rust HTTP 서버입니다. 확장이 없으면 Python 폴백 없이 빌드 명령을 안내하며 실패합니다. 역할 분담은 다음과 같습니다.

계층 담당 설계 의도
Rust 데이터 플레인 소켓, 업스트림 디스패치, 응답 정규화, SSE 인코딩 스트리밍 토큰 릴레이를 GIL에서 해방
Python 콜백(JSON 문자열) 인증·승인(admit), 물리적 디스패치마다 start_attempt로 예산 예약, 결과 정산 정책·권한 로직은 Python에서 빠르게 진화
Python 디코딩·권한 표면별 디코딩, 정확한 배포(deployment) 식별, 페이로드 구성 “어느 정확한 모델로 갔는가”를 원장에 남김
SQLite 원장 인증·승인·수락·시도 시작(예산 예약)·라우트 컨텍스트·정산 등 요청당 약 6회 fsync 트랜잭션(synchronous=FULL) 크래시·재시도에도 이중 과금 없는 회계
와이어 방언 openai_responses, anthropic_messages, openai_compatible(Azure·OpenRouter 포함), gemini_generate_content, bedrock_converse_stream, 결정 전용 typesafe_systemone Bedrock은 SSE가 아닌 AWS 이벤트 스트림, SigV4 서명은 대기열 통과 직후에 수행해 서명 만료 방지

예산은 정수 nano-USD로 월 단위 집행됩니다. 요청 전에 o200k 토크나이저로 입력 토큰을 추정해 최악의 경우를 예약하고, 공급자가 보고한 usage로 정산하는 방식입니다. 스트리밍 툴 호출 인자는 “JSON 객체 하나로 조립돼야 한다”는 엄격한 계약이 있어, 객체가 닫힌 뒤 공급자가 흘린 꼬리는 보류·판정하고, 중간에 잘린 인자는 malformed_response가 아니라 finish_reason: length(예산 부족)로 정리합니다. 실무에서 에이전트가 “깨진 툴 콜”로 무한 재시도하는 문제를 게이트웨이 계층에서 구분해 주는 셈입니다.

성능 근거: 병목은 언어가 아니라 원장

docs/research/rust-gateway-engine.md는 16 vCPU Azure VM(Standard_D16ds_v5)에서 측정한 결과를 공개합니다. 핵심만 옮기면 다음과 같습니다(문서 수치 그대로이며, 제가 재현한 값이 아닙니다).

측정 Python 엔진 네이티브(Rust) 엔진
저동시성 첫 바이트 추가 지연(목 업스트림) 약 25 ms 약 25 ms
스트림 64개 동시 중앙값 TTFB 938 ms 약 25 ms 유지(128 스트림까지 평탄)
릴레이 토큰 처리량/프로세스 약 2,000 tokens/s에서 포화 약 21,000 tokens/s
즉답 업스트림 req/s 상한 약 48 약 33 (GIL 왕복 3회 추가)
라이브 공급자 저동시성 추가 TTFB 약 150 ms 약 20 ms

요점은 명확합니다. 네이티브 엔진은 토큰 스트리밍을 GIL 병목에서 꺼내 주지만, 프로세스당 요청 수(req/s)는 SQLite fsync가 상한입니다. 문서 스스로 “30~50 req/s를 넘기려면 그룹 커밋, fsync 완화, 루트 샤딩 같은 내구성 아키텍처 결정이 필요하다”고 적고 있습니다. 즉 대량의 짧은 요청(분류·임베딩 폭주)을 단일 프로세스로 받기엔 적합하지 않고, 긴 스트리밍 에이전트 트래픽에 강한 구조입니다.

5. 설치와 실행 (README 기준)

README의 시작 경로는 두 줄입니다. 첫 실행 시 설정 마법사가 공급자·모델·추론 강도를 고르고, 공개 별칭(alias)·아이덴티티·명령 예산(기본 $50.00)을 보여 준 뒤 일회성 키를 출력합니다.

pip install experiential
exp

발급받은 키로 OpenAI 호환 요청을 보내면 됩니다.

export EXP_GATEWAY_KEY=...
curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Authorization: Bearer $EXP_GATEWAY_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"opus-5","messages":[{"role":"user","content":"Help me"}]}'

그 밖의 주요 명령은 다음과 같습니다.

명령 하는 일 요구 조건·주의
exp / exp run [PROJECT] 로컬 인증 게이트웨이(127.0.0.1) 실행 기동 시 공급자 호출 없음, --ghost로 본문 캡처 끔
exp config gateway ... init / provider / alias / identity / grant / key / usage grant는 deny-by-default
exp code exp-code 에이전트 실행(-p 프린트 모드 포함) Node.js 22.19+
exp capture Codex·Claude Code 데스크톱 앱 트래픽 수집 macOS, Python 3.13+, 확장·인증서 승인 필요, 실험적
exp build NAME 트레이스로 시뮬레이션 구축 + 라우터 최적화 학습 비용이 정해져 있지 않아 자동화에선 --yes 필요
exp optimize model NAME Tinker로 오픈 모델 SFT sft extra, 유한한 상한이 없으면 fail-closed
exp config telemetry disable 익명 PostHog 텔레메트리 끄기 기본값은 켜짐

Python에서는 학습된 프로젝트 라우터를 공식 OpenAI 클라이언트로 불러 쓸 수 있습니다.

import exp

with exp.load_router("my-project") as client:
    response = client.chat.completions.create(
        model="my-project",
        messages=[{"role": "user", "content": "hello"}],
    )

6. 박스 실측: 키 없이 게이트웨이 전 구간 돌려 보기

실제 공급자 키를 쓰지 않고, 127.0.0.1:9100에 OpenAI 호환 목 서버(Python 표준 라이브러리 30여 줄)를 띄워 게이트웨이의 인증·권한·회계 경로를 검증했습니다. 독립 실행 게이트웨이는 기본적으로 로컬·사설 업스트림을 허용합니다(호스티드 임베더는 public_upstreams_only=True를 켜야 한다고 gateway-egress.md에 명시). 사용한 명령은 exp run --check가 직접 안내한 순서 그대로입니다.

python3 -m venv venv && ./venv/bin/pip install experiential   # 0.7.238 + exp-gateway-native 0.3.185
exp config telemetry disable
exp config gateway init --non-interactive --json
exp config gateway provider add mock --provider openai-compatible \
  --credential-env MOCK_KEY --base-url http://127.0.0.1:9100/v1 --non-interactive --json
exp config gateway alias create pong --deployment mock:mock-1 --exact-model mock-1 \
  --input-price 1000000000 --output-price 2000000000 --non-interactive --json
exp config gateway identity create default --non-interactive --json
exp config gateway grant add default pong --non-interactive --json
exp config gateway key issue default --key-id k1 --json
exp run --non-interactive --port 8011
시험 결과 해석
GET /health/ready {"status":"ready"} 기동 시 공급자 호출 없음(목 로그에도 요청 0건)
키 없이 chat 요청 HTTP 401 가상 키 인증 필수
grant 없는 모델 이름 HTTP 403 deny-by-default 동작 확인
max_tokens 없이 요청 400 invalid_parameter: “출력·컨텍스트 한도가 선언되지 않은 라우트이니 max_tokens를 명시하라” 예산 예약을 위해 상한을 강제. 별칭에 --maximum-output...을 선언하면 해소
목이 비스트리밍 JSON만 줄 때 502 all_routes_failed 게이트웨이는 클라이언트가 비스트리밍이어도 업스트림엔 stream: true + stream_options.include_usage로 보냄 → 호환 서버가 SSE·usage를 지원해야 함
목을 SSE로 고친 뒤 Chat(비스트리밍) 3회 모두 200, 10~16 ms(curl total) 스트림을 모아 단일 응답으로 재조립
Chat 스트리밍 정상 SSE 청크 릴레이, model은 공개 별칭 pong으로 치환 내부 모델명(mock-1)을 클라이언트에 노출하지 않음
OpenAI SDK responses.create “pong from mock”, usage 9/3 Responses API를 Chat 방언 업스트림으로 번역
exp config gateway usage --json 입력 45·출력 15 토큰, known_estimated_cost_nano_usd 75,000 45×1,000 + 15×2,000 = 75,000 nano-USD($0.000075) — 단가 설정과 정확히 일치. 실패한 4회는 unknown_cost_attempts로 별도 집계

파일 측면에서는 .exp/gateway/ 디렉터리가 0700, DB 파일이 0600으로 생성됐고, 프롬프트 문자열 “ping”은 traffic.db에서만 발견되고 회계용 gateway.db에서는 발견되지 않았습니다. 문서가 말하는 “content-free 회계 + 선택적 본문 캡처” 분리가 실제로 지켜지는 것을 확인했습니다. 반대로 말하면 기본 실행에서는 프롬프트 본문이 로컬 디스크에 남는다는 뜻이므로, 민감 데이터라면 --ghost를 기본값처럼 쓰는 편이 안전합니다.

7. exp build / optimize: 트래픽을 라우터로 바꾸는 루프

트레이스 수집 → exp build → 평가·심판 → optimize router → optimize model 루프 — README·docs/usage.md 기반 재구성 (MoricWorld 일러스트)
트레이스 수집 → exp build → 평가·심판 → optimize router → optimize model 루프 — README·docs/usage.md 기반 재구성 (MoricWorld 일러스트)

docs/usage.md의 “Learning from traces” 절은 이 프로젝트의 야심이 어디 있는지 보여 줍니다. exp build PROJECT -t PATH는 인덱스와 시뮬레이터를 만든 뒤 모든 트레이스를 내보낸 순서대로 한 번씩 재연합니다. 각 스텝은 기록된 응답이 공개되기 전에 먼저 예측되고, 불일치는 조사(investigation)되며, 조사자가 “전이 가능”하다고 표시한 것만 관찰 가능한 단서로 표현된 메모리 규칙이 됩니다.

평가 방식도 신경 썼습니다. 학습은 test-then-train으로 측정돼 각 트레이스는 그 이전에 고정된 메모리로만 예측되고, 같은 작업 계열(lineage)의 메모리와 검색 결과는 가려집니다. 보고서는 학습 곡선과 함께 “마지막 1/4 트레이스를 거의 최종 메모리로 예측한 unseen-task 추정치”를 출력합니다. 데이터 누수를 막기 위한 장치가 문서 수준에서 명시돼 있다는 점은 평가 설계를 직접 해 본 분들이라면 반가울 부분입니다.

단계 입력 출력 비용·안전장치
트레이스 수집 OTLP, otel-genai, Phoenix, Braintrust, Langfuse, LangSmith, Mastra, PostHog, chat-json 등 정규화 트레이스 공개 예시 데이터셋(HF wmo-terminal-tasks-traces) 제공
exp build 트레이스 + 공급자·모델·예산 시나리오, 서빙/적합용 RAG 인덱스, 월드모델 시뮬레이터, 메모리 학습 비용 미정 → 동의 필요, 재개 가능(완료 트레이스는 재호출 없음)
심판·보정 루브릭 판정, 사람 보정 시 불변 후속 버전 보정은 권장이지만 선택
exp optimize router 완료된 grounded 프로젝트 + router-optimization.json 동결된 선택 전용 라우터 정책 라우터 적합에는 월드모델 충실도 테스트를 쓰지 않음
exp optimize model 라우터에서 쌓인 트레이스 Tinker SFT 결과 유한 상한·보수적 견적 없으면 거부

근거의 수준은 냉정하게 봐야 합니다. release-scope.md의 W16 증거는 정규화 트레이스 100개, fit 50개, held-out 20개, 계획 셀 140개를 결정론적 가짜 클라이언트로 돌린 것이며 관측 지출은 $0.00입니다. 또한 “실제 Tinker 학습은 돌리지 않았고, 학습 모델 대 베이스 모델 비교도 없으며, 품질 향상 주장도 하지 않는다”고 명시합니다. 즉 파이프라인의 배관은 검증됐지만, “내 트래픽으로 라우터를 만들면 비용이 얼마나 줄고 품질이 얼마나 유지되는가”는 각자 측정해야 합니다.

8. 비슷한 도구와 비교

항목 Experiential LiteLLM Proxy Portkey AI Gateway(OSS) OpenRouter RouteLLM
형태 셀프호스트 게이트웨이 + 호스티드 플랫폼 셀프호스트 프록시(Python) 셀프호스트 게이트웨이(TypeScript) 호스티드 모델 마켓플레이스 라우터 학습·서빙 프레임워크
데이터 플레인 Rust(PyO3) + Python 컨트롤 Python Node/엣지 런타임 비공개(서비스) Python
API 표면 Chat, Responses(+WebSocket), Anthropic Messages, 미디어, Decisions OpenAI 호환 중심, 다수 엔드포인트 OpenAI 호환 중심 OpenAI 호환 OpenAI 호환 서버
키·예산 통제 아이덴티티·grant·가상 키, 월 nano-USD 원장 가상 키·팀·예산 설정 기반, 상용판에서 확장 계정 크레딧 해당 없음
라우팅 근거 내 트레이스 기반 시뮬레이션·평가로 적합 규칙·가중치·폴백 규칙·조건부·폴백 가격·가용성 기반 자동 선택 선호 데이터로 강/약 모델 이진 라우팅
전용 모델 학습 Tinker SFT 연계(실험적) 없음 없음 없음 없음
잘 맞는 곳 에이전트 트래픽이 많고 비용·품질 최적화를 데이터로 하고 싶은 팀 빠른 다공급자 통합, 넓은 생태계 가볍고 빠른 엣지 게이트웨이 인프라 없이 다양한 모델 시험 연구·라우터 실험

비교 대상의 세부 기능은 버전마다 달라지므로 위 표는 “설계 철학의 차이”로 읽어 주십시오. Experiential의 확실한 차별점은 (1) 원장 정확성에 대한 강한 집착, (2) Responses·Anthropic Messages·Codex WebSocket 같은 에이전트 클라이언트 와이어의 세밀한 호환, (3) 트레이스→시뮬레이션→라우터 루프입니다.

저장소 README에 실린 공식 이미지: 호스티드 Experiential 플랫폼의 워크스페이스 사용량 대시보드(모델별 지출·활동·API 키). 출처: experientiallabs/experiential assets/experiential-workflow.png
저장소 README에 실린 공식 이미지: 호스티드 Experiential 플랫폼의 워크스페이스 사용량 대시보드(모델별 지출·활동·API 키). 출처: experientiallabs/experiential assets/experiential-workflow.png

9. 평가 방법 제안

평가 축 방법 통과 기준 예시
호환성 사용 중인 SDK·에이전트(Codex CLI, Claude Code, 자체 앱)를 base_url만 바꿔 연결, 툴 호출·스트리밍·캐싱 경로 확인 툴 콜이 필요한 별칭은 --supports-tools --supports-streaming-tool-arguments로 생성(미설정 시 툴 요청 전부 거부)
지연 직접 호출 대비 TTFB 차이를 동시성 1/16/64에서 측정 문서상 저동시성 추가 TTFB 약 20 ms 수준 재현 여부
처리량 짧은 요청 req/s 래더 프로세스당 30~50 req/s 상한을 전제로 프로세스 수 산정
회계 정확성 공급자 청구서와 /usage.json 대조, 재시도·폴백·취소 시나리오 포함 이중 과금·누락 0건
장애 동작 업스트림 429/5xx, 스트림 중단, 잘린 툴 인자 주입 페일오버 규칙(failover_only_on)대로 동작, 커밋 후 모델 전환 없음
라우터 가치 held-out 트레이스로 라우터 vs 단일 최강 모델 비교 품질 저하 허용폭 안에서 비용 절감이 유의미한지

10. 한계와 보안 고려 사항

항목 내용 대응
텔레메트리 기본 켜짐 익명 집계 PostHog. 프롬프트·트레이스·모델명·자격 증명은 포함하지 않는다고 명시 사내 정책상 필요하면 exp config telemetry disable
본문 캡처 기본 켜짐 로컬 traffic.db에 요청 내용 저장(실측 확인) 민감 업무는 --ghost, 디스크 암호화·보존 기간 관리
exp capture mitmproxy 포크 + macOS Network Extension + 신뢰 CA 설치. 실험적이며 인증서 피닝 우회는 하지 않음 회사 단말에선 보안팀 승인 후, 이름 제약 CA 범위 확인
호스티드 설정 프롬프트 SETUP.md는 코딩 에이전트에 붙여 넣는 프롬프트로 이메일 즉시 가입·BYOK 연결을 진행하며, BYOK 프롬프트는 에이전트가 로컬에서 내 공급자 키를 찾도록 요청 붙여 넣기 전 전문을 읽고, 키 탐색 범위를 직접 지정하거나 수동으로 등록
이그레스 독립 실행은 로컬·사설 업스트림 허용(기본값) 고객 엔드포인트를 받는 멀티테넌트 배포라면 public_upstreams_only=True 필수, Python 콜백 측 HTTP는 별도 통제 필요
처리량 상한 SQLite fsync 원장이 req/s 상한 프로세스 샤딩, 짧은 고빈도 요청은 별도 경로
라이브 검증 범위 공급자별 라이브 셀은 Not run, Tinker 실학습·품질 향상 주장 없음 도입 전 자체 라이브 스모크와 비용 대조
변경 속도 하루에 여러 릴리스, 의존성은 정확한 버전 고정 운영 환경은 버전 고정 후 주기적 업그레이드
업스트림 호환 요구 업스트림에 항상 스트리밍+usage로 요청(실측) 자체 OpenAI 호환 서버(vLLM 등)는 stream_options.include_usage 지원 확인

11. 누가 쓰면 좋을까

  • 코딩 에이전트를 팀 단위로 굴리는 조직: Codex·Claude Code·Cursor를 한 게이트웨이로 모으고, 사람·에이전트별 월 예산과 grant를 걸고 싶다면 바로 가치가 있습니다.
  • “어느 모델을 쓸지”를 데이터로 결정하고 싶은 플랫폼 팀: 트레이스를 이미 OTel·Langfuse 등으로 모으고 있다면 exp build로 시뮬레이션 기반 라우터 실험을 해 볼 만합니다. 다만 결과의 품질 주장은 직접 검증해야 합니다.
  • 회계 정확성이 중요한 사내 AI 게이트웨이 운영자: nano-USD 정수 원장, 재시도·폴백·크래시에도 이중 과금 없는 설계는 FinOps 관점에서 매력적입니다.
  • 맞지 않는 경우: 초당 수백 건의 짧은 요청을 단일 노드로 받아야 하거나, 이미 LiteLLM 생태계(플러그인·대시보드)에 깊게 묶여 있고 라우터 학습이 필요 없다면 전환 이득이 크지 않을 수 있습니다.

정리하면 Experiential은 “또 하나의 LLM 프록시”라기보다, 정확한 회계를 갖춘 Rust 게이트웨이를 입구로 삼아 운영 트래픽을 최적화 루프로 끌어들이려는 프로젝트입니다. 게이트웨이 부분은 오늘 박스에서 확인했듯 이미 꽤 단단하고, 시뮬레이션·라우터·SFT 부분은 배관은 갖췄지만 성과는 각자의 데이터로 증명해야 하는 단계입니다. 도입을 검토하신다면 release-scope.md부터 읽고, 위 평가 표대로 하루짜리 스모크를 돌려 보시길 권합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다