Skip to content

Library Manual

AXCalib Wiki Bot edited this page Jul 24, 2026 · 3 revisions

AXCalib Library ๋งค๋‰ด์–ผ

ํ•ต์‹ฌ ๊ฐ์ฒด: Dossier์™€ Case

Dossier๋Š” ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋“ฑ๋ก ๋ชฉํ‘œ, ์ฆ๊ฑฐ, ๋ฉ˜ํ†  ๊ธฐ๋ก, ์ˆ˜ํ–‰ ์ด๋ ฅ, ๋“ฑ๋ก์‹ฌ์˜์™€ ์™„๋ฃŒํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์€ ๊ธฐ๋ก์ฒ ์ด๋‹ค. Python์˜ AXCalib ์ธ์Šคํ„ด์Šค๋Š” workspace๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ ํ”„๋กœ์ ํŠธ๋Š” project_id์™€ revision์„ ๊ฐ€์ง„ Dossier๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ PPTXยทPDFยท์ด๋ฏธ์ง€ยท์ฝ”๋“œ๋Š” Dossier ๋‚ด๋ถ€์— ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. content hash์™€ URI๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ํ‰๊ฐ€ํ•  ๋•Œ revision๊ณผ SHA-256์œผ๋กœ freezeํ•œ snapshot์„ ์ฝ๋Š”๋‹ค.

Case๋Š” dossier๋ฅผ ๋ณต์ œํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์ง„์‹ค์›์ฒœ์ด ์•„๋‹ˆ๋‹ค. project_id์™€ Library read service๋ฅผ ๋“ค๊ณ  ์žˆ๋‹ค๊ฐ€ get_current_status() ๋˜๋Š” get_summary()๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ตœ์‹  dossier revision๊ณผ ์—ฐ๊ฒฐ๋œ ๋ถˆ๋ณ€ report๋ฅผ ๋‹ค์‹œ ์ฝ๋Š” ์ž‘์€ ํ•ธ๋“ค์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ด€๋ฆฌ์ž ๊ฒฐ์ •์ด๋‚˜ criterion ๋ณด์ • ๋’ค์—๋„ ๊ฐ™์€ case ๋ณ€์ˆ˜๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์žฅ ์ž‘์€ ๊ณต๊ฐœ ์ธํ„ฐํŽ˜์ด์Šค

from axcalib import AXCalib

ax = AXCalib("output/review-workspace")
case = ax.register_case(
    "proposal.pptx",
    title="๊ฒ€ํ† ํ•  ํ”„๋กœ์ ํŠธ",
    sidecar_path="proposal.axcalib.json",
)
ax.submit_registration(case.project_id)
registration = ax.evaluate(case.project_id, "registration")

status = case.get_current_status()  # typed CaseStatus
status_md = case.get_current_status(format="md")
summary_md = case.get_summary(format="md", verbose=True)

๋น„๋™๊ธฐ ํ˜ธ์ถœ์€ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.

registration = await ax.aevaluate(case.project_id, "registration")

๋‹จ๊ณ„๋ณ„ ๋ช…๋ น

๋ชฉ์  Library ํ˜ธ์ถœ ์‚ฌ๋žŒ ๊ฒฝ๊ณ„
๊ณผ์ œ ๋“ฑ๋ก register_case ์ œ์ถœ์ž๋ฃŒ์™€ project context ํ™•์ธ
๋“ฑ๋ก์‹ฌ์˜ ์ œ์ถœ submit_registration freezeํ•  revision ํ™•์ธ
๋“ฑ๋ก ํ‰๊ฐ€์ดˆ์•ˆ evaluate(..., "registration") ๊ฒฐ๊ณผ๋Š” ์ œ์•ˆ์ด๋ฉฐ ๊ด€๋ฆฌ์ž ์Šน์ธ ํ•„์š”
๋“ฑ๋ก ๊ฒฐ์ • decide_registration ์ธ์ฆ๋œ ๊ด€๋ฆฌ์ž๋งŒ ํ˜ธ์ถœ
์ˆ˜ํ–‰ ์‹œ์ž‘ยท๊ฐฑ์‹  start_execution, record_progress ์ˆ˜ํ–‰์žยท๋ฉ˜ํ†  ๊ถŒํ•œ ํ™•์ธ
์™„๋ฃŒํ‰๊ฐ€ ์ œ์ถœ submit_completion ๋ฉ˜ํ† ๊ฐ€ ์žˆ์œผ๋ฉด mentor ์Šน์ธ ํ•„์ˆ˜
์™„๋ฃŒ ํ‰๊ฐ€์ดˆ์•ˆ evaluate(..., "completion") ๊ด€๋ฆฌ์ž ์ˆ˜์šฉยท๋ฏธ์ˆ˜์šฉ ๊ฒฐ์ • ํ•„์š”
์™„๋ฃŒ ๊ฒฐ์ • decide_completion ์ธ์ฆ๋œ ๊ด€๋ฆฌ์ž๋งŒ ํ˜ธ์ถœ
ํ˜„์žฌ ์ƒํƒœ case.get_current_status next action์€ domain-valid ์•ˆ๋‚ด์ด๋ฉฐ caller ๊ถŒํ•œ ์ธ์ฆ์ด ์•„๋‹˜
์ „์ฒด ์š”์•ฝ case.get_summary Agent ์›๋ณธ๊ณผ ์‚ฌ๋žŒ ๊ฒฐ์ •ยท๋ณด์ •์„ ๋ถ„๋ฆฌํ•ด ํ‘œ์‹œ

ํ˜„์žฌ local Library์˜ actor ๋ฌธ์ž์—ด์€ ์šด์˜ ์‹ ์› ์ธ์ฆ์„ ๋Œ€์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‹ค์ œ ์›๊ฒฉ ๋ช…๋ น์€ ์Šน์ธ๋œ OIDC/JWKS, assignment source์™€ resource scope์— ์—ฐ๊ฒฐ๋˜๊ธฐ ์ „๊นŒ์ง€ ์šด์˜์— ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

๊ธฐ๋ณธ status/summary object์™€ JSON/Markdown์—๋Š” dossier/report local URI์™€ ์‚ฌ๋žŒ ๊ฒฐ์ • ์‚ฌ์œ ๋ฅผ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค. verbose=True๋Š” local Library ์‚ฌ์šฉ์ž๊ฐ€ criterion ๊ทผ๊ฑฐ, pseudonymous actor์™€ ๊ฒฐ์ • ์‚ฌ์œ ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜๋Š” ์˜ต์…˜์ด๋‹ค. Web/API ์‘๋‹ต์— ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜์ง€ ๋ง๊ณ  ๊ธฐ์กด principal-bound safe view์™€ property-level authorization์„ ์ ์šฉํ•œ๋‹ค. raw dossier๊ฐ€ ํ•„์š”ํ•˜๋ฉด case.dossier๋ฅผ ์ฝ์œผ๋ฉฐ, ์ดˆ๊ธฐ snapshot ๋ฐ˜ํ™˜ ํ˜ธํ™˜ API๋Š” create_project(...)๋‹ค.

Pipeline๊ณผ Workflow

์š”์†Œ ๋ชจ๋“ˆ์€ ingest, retrieval, evaluation, report์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ capability๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. ๊ตญ์†Œ Pipeline์€ typed input/output๊ณผ ๋ช…์‹œ์  ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ๋…๋ฆฝ ์—…๋ฌด ๋‹จ์œ„๋‹ค. ์ „์ฒด Workflow๋Š” allowlisted Pipeline์„ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ domain state machine์ด๋‚˜ HITL Gate๋ฅผ ์šฐํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค.

result = ax.execute_pipeline(
    "project-evaluation",
    "v1alpha1",
    payload,
    context=context,
)

๊ธด ์ž‘์—…์€ enqueue_pipeline(...)์œผ๋กœ durable local queue์— ๋„ฃ๊ณ  create_worker(...)๋กœ ํ•œ ๊ฑด์”ฉ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด Worker๋Š” single-host Alpha์ด๋ฉฐ ๋ถ„์‚ฐ broker๋‚˜ heartbeat ์™„๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฒ•

  • succeeded: Pipeline ๊ณ„์‚ฐ์ด ์„ฑ๊ณตํ–ˆ๋‹ค. ์‚ฌ๋žŒ ์ธ์ฆ ์™„๋ฃŒ์™€ ๊ฐ™์€ ๋œป์€ ์•„๋‹ˆ๋‹ค.
  • waiting_human: ํ‰๊ฐ€์ดˆ์•ˆ๊ณผ ์•Œ๋ฆผ์ด ์ค€๋น„๋˜์–ด ๊ถŒํ•œ ์žˆ๋Š” ๊ฒฐ์ •์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • blocked: ์„ ํ–‰์กฐ๊ฑดยท์Šน์ธยท์ฆ๊ฑฐ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค.
  • stale: ํ‰๊ฐ€ ๊ธฐ์ค€ snapshot ๋’ค ์›๋ณธ revision์ด ๋ฐ”๋€Œ์—ˆ๋‹ค.
  • retryable_failure: ๊ฐ™์€ idempotency context๋กœ ์ œํ•œ๋œ ์žฌ์‹œ๋„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • terminal_failure ๋˜๋Š” cancelled: ์ž๋™ ์„ฑ๊ณต ์Šน๊ฒฉ์ด๋‚˜ ์žฌ์‹คํ–‰์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ „์ฒด ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ๋‘ Gate ์‹ค์Šต, ๊ตฌ์„ฑ์€ ์„ค์ •๊ณผ On-prem์„ ์ฐธ๊ณ ํ•œ๋‹ค.

Clone this wiki locally