본문으로 건너뛰기

공급자 프로토콜과 모델 인터페이스

v0.1.107은 네이티브 대화 프로토콜 다섯 계열을 구현합니다. 공유 동작은 고정 Pi v1.2.0, 06a466935536f8c9bcacb2d5efc0fc021be1bdff입니다. 이는 프로토콜·인터페이스 범위이며 모든 엔드포인트·계정·인증 변형의 실제 테스트 보장이 아닙니다.

대화 프로토콜​

Anyy api_modePi API요청 계열
openai-compatibleopenai-completions호환 로컬 포함 OpenAI식 Chat Completions
openai-responsesopenai-responsesOpenAI Responses
codex-responsesopenai-codex-responsesCodex 구독 Responses와 전송/세션 동작
anthropic-messagesanthropic-messagesAnthropic Messages
google-geminigoogle-generative-aiGemini Generative AI

브랜드가 여러 계약을 제공해도 서로 교환 가능하지 않습니다. Ollama·Cloud는 기존 OpenAI 호환이며 /api/tags는 검색만 합니다.

추가 Pi API azure-openai-responses, bedrock-converse-stream, google-vertex, mistral-conversations, pi-messages의 독립 네이티브 구현·검증은 없습니다. 실제 구현한 호환 Gateway는 다섯 계열을 쓸 수 있지만 별도 API를 추가하지 않습니다. 네이티브 Azure·Bedrock 등 차단 선택은 사용 불가입니다.

엔드포인트와 인증​

기대 API 루트를 쓰세요. 네이티브 Anthropic은 기존 접두사 제거 없이 Base URL에 /v1/messages?beta=true를 붙입니다. 직접 서비스는 https://api.anthropic.com이며 /v1을 더하지 마세요. 프록시는 결과 경로를 제공해야 합니다.

요청 준비 전 비밀을 해결합니다. Anthropic은 유효 키·네이티브 헤더/beta 규칙이며 auth_transport가 다른 방식 강제 스위치는 아닙니다. OAuth·구독은 엔드포인트별입니다. Codex는 자체 구독 비밀과 Anyy 신원(기본 originator: anyy)을 보내 공급자 클라이언트라고 주장하지 않습니다. 모델 헤더 후 요청 헤더가 적용되어 마커를 재정의·삭제할 수 있습니다. 인증·정직한 User-Agent는 계속 Anyy 관리입니다.

타입 모델 카탈로그​

type별 작업:

타입목적경계
chat대화·도구 호출생략 기본값. 기본·대체 선택
image타입 이미지 생성models.generateImages()
classifier구조 선택·점수·불리언 분류models.classify()

ID는 공급자·타입과 결정합니다. 같은 ID가 다른 타입에 있을 수 있고 이미지·분류 레코드가 조용히 chat이 되지 않습니다. 설명자는 API, 입출력 양식, 제한, 비용, 호환, 샘플링을 담으며 경로 설명이지 원격 점검이 아닙니다.

고급 providers[].models[]에는 type, api, base_url, input, output, headers, input_limits, sampling_params, sampling_params_by_thinking_level, compat, capabilities, cost가 있습니다. 선언 wire 계약·서비스 파라미터를 쓰세요. 네이티브 샘플링은 모델 기본, 유효 thinking별, 요청 순으로 병합하고 뒤가 앞을 덮습니다. 새 프로토콜이나 원격 임의 옵션 수락을 보장하지 않습니다.

Codemode 모델 도우미​

가능할 때 같은 카탈로그·비밀을 쓰는 비동기 함수:

함수결과
models.getModelsOfType(type, provider?)chat·image·classifier 레코드
models.getAvailableOfType(type, provider?)공급자 활성·비밀 해석 필터
models.getModelOfType(type, provider, id)정확 레코드 또는 undefined
models.classify(model, context)타입 분류 결과
models.generateImages(model, context)타입 이미지 결과

Available은 로컬 확인이지 실제 추론이 아닙니다. 스크립트 설명자에는 구성 헤더가 없습니다. 실행은 원래 모델을 다시 해결하므로 반환 설명자를 편집해도 다른 엔드포인트로 가지 않습니다.

이미지 API는 openrouter-images입니다. 분류는 typesafe-system-one, cloudflare-workers-ai-system-one, llama-cpp-classify, openai-decisions입니다. 로컬 계약 검사가 모든 외부 배포·계정을 인증하지는 않습니다.

Codemode 예:

const candidates = await models.getAvailableOfType("image");
if (!candidates.length) throw new Error("Configure an image model first");
const result = await models.generateImages(candidates[0], {
input: [{ type: "text", text: "A landscape watercolor of a quiet lake" }],
});
if (result.stopReason !== "stop") throw new Error(result.errorMessage);
for (const block of result.output) {
if (block.type === "image") image(block);
}

generateImages는 텍스트와 선택 base64 참조를 받습니다. classify는 state, questions, 지원 선택 이미지를 받으며 질문 타입은 choice, score, bool입니다. 네이티브 실패는 타입 error/aborted로 남으니 stopReason을 확인하세요. 일반 models.chat()은 추가하지 않습니다.

분류는 객체 state, 비어 있지 않은 questions가 필요하며 질문마다 type, instructions, criteria입니다.

타입criteria
choice라벨→문자열 의미의 비어 있지 않은 객체
score낮은 순서 문자열 설명의 비어 있지 않은 배열
booltrue·false 의미 객체

선택 images는 { type: "image", data: "<base64>", mimeType: "image/png" } 블록이며 이미지 가능한 분류기가 필요합니다. 분류는 answers, 이미지는 output, 제공 시 usage가 있습니다.

제품 이미지 생성은 별도 OpenAI Responses로 대화 첨부를 저장합니다. Dashboard 경로는 openrouter-images·분류 레코드를 구성하지 않습니다.

재시도, 대체, 가상 라우팅​

소유자가 다릅니다.

방식제어
세션 자동 재시도재시도 가능 오류. 기본 활성·3회, 2,000 ms부터 지수·최대 60,000 ms
공급자 SDKretry.provider의 초기 전송/HTTP만. 스트리밍 본문 재전송 아님
구성 대체오류 정책 허용 시 순서 호환 대상
가상 콜백가상 선택을 물리 카탈로그·유효 thinking으로 결정

첫 요청은 재시도 횟수에 포함하지 않습니다. 요금·계정 한도는 일반 일시 오류가 아니고 초과는 컨텍스트 복구입니다. 취소는 대기를 끝냅니다. retry.enabled: false는 세션만 끄며 모든 SDK·대체를 끄지 않습니다.

고급 키는 정확한 camelCase입니다.

retry:
enabled: true
maxRetries: 3
baseDelayMs: 2000
maxAgentDelayMs: 60000
provider:
maxRetries: 0
maxRetryDelayMs: 60000
httpIdleTimeoutMs: 300000

retry.provider.timeoutMs는 선택 요청 제한입니다. httpIdleTimeoutMs 기본 300,000 ms이며 0·disabled로 유휴 타이머를 끕니다. 미디어는 별도 제한입니다. 세션·SDK·대체·Codex 네이티브 복구는 별개여서 한 설정이 총 요청 수·시간 제한은 아닙니다.

가상 모델은 내부 pi-virtual 등록/콜백이며 여섯 번째 원격 API가 아닙니다. YAML 선언, CLI 마법사, Dashboard 편집기는 없습니다. 콜백은 user/continuation/retry/direct 컨텍스트와 분기 상태를 쓸 수 있지만 유효 비밀의 물리 모델을 반환해야 합니다. 미등록·다른 가상 모델로 재귀 라우팅 불가입니다. 대체 목록 자체가 콜백을 등록하지 않습니다.

일상 설정은 모델 구성과 Dashboard 모델을 쓰세요.