호출할 모델을 하드코딩하지 마세요.
두 가지 개념. 정책이 각 호출을 처리할 모델을 결정합니다. 워크플로우가 그 결정들을 파이프라인으로 연결합니다. 오픈소스, MIT 라이선스, 직접 보유한 제공자 API 키로 동작합니다.
모델을 선택하는 것은 정책이지, 당신이 아닙니다.
model="gpt-5.5"를 하드코딩하면 금세 낡아버립니다. 새 모델은 매주 출시되고, 가격은 변하며, 일부 요청은 도구, 비전, 또는 더 저렴한 옵션이 필요합니다. 정책은 자격 조건과 순위 방식을 선언하고, 요청마다 올바른 모델을 선택하며, 실패 시 폴백합니다. 이름이 아닌 규칙을 전달하세요.
모든 결정은 재현 가능한 트레이스를 남깁니다: 동일한 정책, 입력값, 카탈로그로 정확히 재현할 수 있습니다. 호스트에서든 자체 장비에서든. 어떤 것도 숨겨진 채로 라우팅되지 않습니다.
워크플로우가 작업 전체를 라우팅합니다.
실제 기능은 단순히 하나의 호출이 아닙니다. 고객 지원 답변은 분류 → 초안 작성 → 검열로 이루어지며, 각 단계마다 다른 모델이 필요하고, 검열자는 전송 전에 거부할 수 있습니다. 단계들은 분기되고 다시 합쳐집니다. 하나의 정책이 하나의 호출을 라우팅하고, 워크플로우가 파이프라인 전체를 라우팅하며, 하나의 통합 트레이스를 작성합니다.
저비용으로 분류하고, 품질 기준에 맞춰 초안을 작성한 후, 전송 전에 거부 가능한 강력한 no-log 검열을 수행합니다.
flow_ir 보기
["flow", {
"u": {"kind": "input"},
"t": {"kind": "llm", "system": "Classify the ticket and extract the account id as JSON.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["has_cap", "supports_json_mode"]],
["neg", ["normalize", ["field", "price_out"]]], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u"]},
"d": {"kind": "llm", "system": "Write a reply using the ticket and the triage.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["cmp", "bench_intelligence", "ge", 0.55]],
["neg", ["normalize", ["field", "price_out"]]], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u", "t"], "template": "Ticket:\n$1\n\nTriage:\n$2"},
"g": {"kind": "llm", "system": "Check brand voice, PII, refund limits. Refuse if any fail.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["is", "no_log"]],
["field", "bench_intelligence"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["d"]},
"out": {"kind": "output", "inputs": ["g"]}
}]저비용 초안, 강력한 비평, 그리고 재작성. 예산 안에서 품질 도약.
flow_ir 보기
["flow", {
"u": {"kind": "input"},
"d": {"kind": "llm", "system": "Draft an answer.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["neg", ["normalize", ["field", "price_out"]]], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u"]},
"c": {"kind": "llm", "system": "Critique the draft: list concrete flaws and gaps.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["d"]},
"r": {"kind": "llm", "system": "Rewrite the answer, fixing every point in the critique.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u", "d", "c"], "template": "Question:\n$1\n\nDraft:\n$2\n\nCritique:\n$3"},
"out": {"kind": "output", "inputs": ["r"]}
}]동일한 강력한 정책에서 N개의 시드 추출 (sample로 상위 순위에 분산), 그 후 심판이 최선을 선택합니다.
flow_ir 보기
["flow", {
"u": {"kind": "input"},
"n1": {"kind": "llm", "system": "Answer the question.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["sample", 0.5], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u"]},
"n2": {"kind": "llm", "system": "Answer the question.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["sample", 0.5], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u"]},
"n3": {"kind": "llm", "system": "Answer the question.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["sample", 0.5], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["u"]},
"j": {"kind": "llm", "system": "Pick the single best candidate; return it verbatim.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["field", "bench_intelligence"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["n1", "n2", "n3"], "template": "A:\n$1\n\nB:\n$2\n\nC:\n$3"},
"out": {"kind": "output", "inputs": ["j"]}
}]패밀리로 고정된 세 모델이 병렬로 초안을 작성하고, 네 번째 모델이 최선의 단일 답변을 합성합니다.
flow_ir 보기
["flow", {
"u": {"kind": "input"},
"a": {"kind": "llm", "system": "Draft an answer.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["family_eq", "gemini-3.1-pro-preview"]],
["zero"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]], "inputs": ["u"]},
"b": {"kind": "llm", "system": "Draft an answer.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["family_eq", "claude-opus-4-8"]],
["zero"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]], "inputs": ["u"]},
"c": {"kind": "llm", "system": "Draft an answer.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["family_eq", "deepseek-v4-flash"]],
["zero"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]], "inputs": ["u"]},
"f": {"kind": "llm", "system": "Synthesize the single best answer from the drafts.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["add", ["scale", 0.7, ["normalize", ["field", "bench_intelligence"]]],
["scale", 0.3, ["neg", ["normalize", ["field", "price_in"]]]]],
["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["a", "b", "c"]},
"out": {"kind": "output", "inputs": ["f"]}
}]추론기와 코더가 서로 다른 필터 아래 병렬로 실행되고, 병합 단계에서 결합됩니다. 추론과 코드가 혼합된 작업을 위한 패턴입니다.
flow_ir 보기
["flow", {
"u": {"kind": "input"},
"rz": {"kind": "llm", "system": "Reason through the problem step by step.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["is", "cap_reasoning"]],
["field", "bench_intelligence"], ["argmax"], ["id"], ["always", {"action": "next_candidate"}]], "inputs": ["u"]},
"cd": {"kind": "llm", "system": "Produce any code the problem needs.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]], ["cmp", "bench_coding_rank", "le", 5]],
["add", ["scale", 0.7, ["normalize", ["field", "bench_coding"]]],
["scale", 0.3, ["neg", ["normalize", ["field", "price_out"]]]]],
["argmax"], ["id"], ["always", {"action": "next_candidate"}]], "inputs": ["u"]},
"m": {"kind": "llm", "system": "Merge the reasoning and the code into one answer.",
"policy": ["policy", ["and", ["meets_req"], ["not", ["is", "disabled"]]],
["add", ["scale", 0.6, ["normalize", ["field", "bench_intelligence"]]],
["scale", 0.4, ["neg", ["normalize", ["field", "price_out"]]]]],
["argmax"], ["id"], ["always", {"action": "next_candidate"}]],
"inputs": ["rz", "cd"], "template": "Reasoning:\n$1\n\nCode:\n$2"},
"out": {"kind": "output", "inputs": ["m"]}
}]다이어그램을 옆으로 스크롤하세요 →
두 개의 저장소, MIT 라이선스, 지금 바로 사용 가능.
Host와 Engine을 클론하고, 제공자 계정을 연결하면 오늘 바로 직접 보유한 API 키로 라우팅할 수 있습니다. 마크업 없음, 숨겨진 라우팅 없음.
정책을 수락하고 지문(fingerprint)을 생성하며, 제공자 API 키를 통해 호출을 라우팅하고 트레이스를 기록하는 레퍼런스 호스트.
직접 호스트를 운영하지 않으시겠어요? 관리형 카탈로그, 트레이스 스토리지, 팀 관리 기능을 갖춘 호스팅 버전이 곧 출시됩니다.
스팸 없음. 호스팅 버전이 준비되면 이메일 한 통.