provider 객체를 전달하여 라우팅 결정을 커스터마이징할 수 있습니다.
provider 객체
/v1/chat/completions 요청에 provider 객체를 포함하여 라우팅 기본값을 재정의합니다:
전체 필드 참조
기본 전략: 비용 기반 로드 밸런싱
기본적으로 ARouter는 비용을 우선시하면서 정상 프로바이더 간에 요청을 로드 밸런싱합니다. 알고리즘:- 지난 30초 동안 심각한 장애가 있었던 프로바이더 제외
- 안정적인 프로바이더 중에서 가격의 역제곱으로 가중치를 두어 선택
- 나머지 프로바이더를 자동 폴백으로 사용
- 프로바이더 A는 프로바이더 C보다 9배 더 선택될 가능성이 높습니다 (역제곱 가중치)
- 프로바이더 A가 실패하면 프로바이더 C를 다음으로 시도
- 프로바이더 B(최근 저하됨)는 마지막으로 시도
sort 또는 order를 설정하면 로드 밸런싱이 비활성화되고 프로바이더는 엄격한 순서로 시도됩니다.
프로바이더 정렬
sort 필드를 사용하여 프로바이더 속성에 명시적으로 우선순위를 부여합니다. 로드 밸런싱이 비활성화되고 프로바이더는 순서대로 시도됩니다.
사용 가능한 정렬 값:
"price"— 최저 토큰 비용 우선"throughput"— 최고 tokens/초 우선"latency"— 최저 Time-to-first-token 우선
- TypeScript
- Python
- cURL
:nitro 및 :floor 단축키
모델 슬러그에 접미사를 추가하여 정렬의 줄임말로 사용:
파티션을 사용한 고급 정렬
후보 모델 목록(models[])을 사용할 때, sort 필드는 partition 옵션이 있는 객체가 되어 엔드포인트가 모델 전반에 걸쳐 어떻게 정렬되는지 제어할 수 있습니다.
기본값(
partition: "model")에서 엔드포인트는 모델별로 그룹화됩니다——첫 번째 모델의 엔드포인트는 항상 두 번째 모델보다 먼저 시도됩니다. partition: "none"을 설정하면 이 그룹화가 제거되어 모든 후보 모델에 걸쳐 전역 정렬이 가능해집니다.
사용 사례 1: 여러 모델에 걸쳐 최고 처리량으로 라우팅
여러 허용 가능한 모델이 있고 현재 가장 빠른 것을 사용하고 싶을 때:- TypeScript
- Python
- cURL
사용 사례 2: 성능 요구사항을 충족하는 최저가 모델
partition: "none"과 성능 임계값을 결합하여 SLA를 충족하면서도 최저 비용 옵션을 찾기:
- TypeScript
- Python
- cURL
성능 임계값
프로바이더를 필터링하기 위한 최소 처리량 또는 최대 레이턴시 선호도 설정. 임계값을 충족하지 못하는 프로바이더는 완전히 제외되지 않고 우선순위가 낮아집니다(끝으로 이동).백분위수 작동 방식
ARouter는 롤링 5분 창에서 프로바이더 성능을 추적합니다:
높은 백분위수(p90/p99)는 최악의 경우 성능에 대한 신뢰도를 높입니다. 지정된 모든 백분위수 컷오프를 충족해야 프로바이더가 선호 그룹에 포함됩니다.
preferred_min_throughput과 preferred_max_latency는 소프트 선호도입니다——요청이 처리되는 것을 막지 않습니다. 이는 하드 제한인 max_price와 다릅니다.특정 프로바이더 순서 지정
order를 사용하여 시도할 프로바이더와 순서를 지정합니다. order가 설정되면 로드 밸런싱이 비활성화됩니다.
- TypeScript
- Python
- cURL
특정 프로바이더만 허용
only를 사용하여 특정 프로바이더 집합으로 라우팅을 제한:
프로바이더 무시
ignore를 사용하여 이 요청에서 특정 프로바이더를 건너뛰기:
폴백 비활성화
기본적으로 기본 프로바이더를 사용할 수 없는 경우 ARouter는 대체 프로바이더로 폴백합니다.allow_fallbacks: false를 설정하면 정확한 프로바이더를 요구합니다:
503 오류를 반환합니다.
파라미터 지원 요구
require_parameters: true를 설정하면 요청의 모든 파라미터를 지원하는 프로바이더에만 라우팅합니다. 기본적으로 ARouter는 지원되지 않는 파라미터를 무시하는 프로바이더에 라우팅할 수 있습니다.
양자화 필터링
프로바이더가 제공하는 모델 양자화 수준으로 필터링합니다. 특정 정밀도/성능 트레이드오프가 필요할 때 유용합니다:"fp32", "fp16", "bf16", "int8", "int4".
데이터 수집 정책
ARouter가 요청 데이터를 저장할 수 있는 프로바이더로 라우팅하는지 여부를 제어:Zero Data Retention (ZDR)
최대 개인정보 보호를 위해 Zero Data Retention 보장이 있는 프로바이더로만 라우팅을 제한:최대 가격
토큰당 지불할 금액의 하드 제한을 설정합니다. 이 가격 요구사항을 충족하는 프로바이더가 없으면 더 비싼 프로바이더로 라우팅되는 대신 요청이 실패합니다:성능 임계값과 달리
max_price는 하드 제한입니다. 가격 요구사항을 충족하는 프로바이더가 없으면 요청은 오류를 반환합니다.프로바이더 상태 및 가용성
ARouter는 서킷 브레이커 메커니즘을 사용하여 프로바이더 상태를 지속적으로 추적합니다:
이는 완전히 투명합니다——애플리케이션이 프로바이더 수준의 재시도 로직을 구현할 필요가 없습니다.
모델 접두사를 통한 프로바이더 지정
어떤 프로바이더가 요청을 처리하는지 제어하는 주요 방법은provider/model 형식입니다:
네이티브 프로바이더 프록시
완전한 제어를 위해 프로바이더 프록시 엔드포인트/{provider}/{path}를 사용하여 ARouter의 모델 라우팅 레이어를 완전히 우회합니다:
지원되는 프로바이더
기능의 전체 목록은 프로바이더를 참조하세요.