-
Notifications
You must be signed in to change notification settings - Fork 0
Library Manual
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(...)๋ค.
์์ ๋ชจ๋์ 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์ ์ฐธ๊ณ ํ๋ค.