프로젝트 소개
Iris는 AI 에이전트 출력의 품질, 안전성, 비용을 평가하도록 설계된 오픈소스 MCP(Model Context Protocol) 서버입니다. 전적으로 사용자 머신에서 실행되며, 추적 데이터를 로컬 SQLite 데이터베이스에 저장하고, 계정, SDK, 원격 측정이 필요하지 않습니다. 이 프로젝트는 MIT 라이선스이며 Node.js 20 이상이 필요합니다.
핵심 기능으로는 계층적 스팬 트리 기반 추적 로깅, 도구 호출별 지연 시간, 토큰 사용량, USD 기준 비용 추적이 포함됩니다. 출력 평가는 완전성, 관련성, 안전성, 비용의 네 가지 범주에 걸쳐 20가지 내장 결정 규칙을 사용합니다. 안전 규칙은 PII(SSN, 신용카드, 전화번호, 이메일, IBAN, 생년월일, 의료기록번호, IP, API 키, 여권, 클라우드 공급자 토큰 등 19가지 패턴), 프롬프트 주입(37가지 패턴), 환각 표시(25가지 맥락 기반 조작 신호), 그리고 인정되지 않은 실패한 도구 호출, 반복 호출, 스키마 거부 인자, 에이전트가 읽지 않은 인용 소스와 같은 궤적 위반을 감지합니다. 선택적 LLM-as-judge 기능은 Anthropic 또는 OpenAI를 통해 의미론적 점수를 제공하며, 평가당 하드 비용 상한(기본 $0.25)이 있습니다.
Iris는 MCP 호환 에이전트가 호출할 수 있는 12개의 MCP 도구를 등록합니다: log_trace, evaluate_output, get_traces, list_rules, deploy_rule, delete_rule, delete_trace, evaluate_with_llm_judge, verify_citations, compare_runs, compare_traces, evaluate_runs. verify_citations 도구는 출력에서 인용을 추출하고, SSRF 보호 리졸버 뒤의 소스를 가져오며, LLM 심사를 사용해 각 소스가 인용된 주장을 뒷받침하는지 확인합니다.
웹 대시보드는 http://localhost:6920에서 제공되며, 최악의 실패부터 최신순으로 정렬된 실패를 표시합니다. 추적 시각화, 평가 결과, 비용 분석, 명령 팔레트(Cmd+K)를 제공하여 규칙, 추적, 평가를 검색할 수 있습니다. 대시보드는 모델 없이 추적을 캡처하기 위한 HTTP 수집 엔드포인트(POST /api/v1/traces)와 서버가 판단할 수 있는 기능을 설명하는 기능 엔드포인트(GET /api/v1/capabilities)도 노출합니다.
CI/CD 통합의 경우, 수집 CLI 명령은 stdin 또는 파일에서 JSON 또는 NDJSON 추적을 읽고, 평가하며, 추적당 하나의 JSON 라인을 판정과 함께 출력하고, 판정이 --fail-on 필터와 일치하면 코드 1로 종료합니다. 이를 통해 평가 결과에 따라 에이전트 배포를 게이트할 수 있습니다.
사용자 정의 규칙은 인라인으로 작성하거나(evaluate_output 호출당 최대 10개) deploy_rule을 통해 영구적으로 배포할 수 있습니다. 규칙 유형에는 regex_match, regex_no_match, min_length, max_length, contains_keywords, excludes_keywords, json_schema, cost_threshold가 포함됩니다. 배포된 규칙은 Iris 홈 디렉토리의 custom-rules.json에 유지되며, 해당 범주의 향후 모든 evaluate_output에서 실행됩니다. 심각도 수준(낮음, 중간, 높음, 중요)은 규칙 실패가 평가를 강제로 실패시키는지 아니면 점수에만 영향을 미치는지 결정합니다.
통과 판정은 각 규칙이 주장하는 종류에 따라 읽는 컴포저에 의해 결정됩니다: 구성된 정책은 게이트, 중요 감지기는 거부, 답변할 수 없는 중요 검사는 알 수 없는 판정을 생성, 나머지 감지기는 구성 가능한 손실 비율에 대해 가중된 확률로 결합됩니다. 진정한 안전 위반(no_pii, no_injection_patterns, no_blocklist_words)은 기본적으로 강제 실패합니다.
모든 내장 규칙은 저장소의 레이블링된 코퍼스에서 측정된 정밀도, 재현율, F1 점수를 95% 신뢰 구간과 함께 게시합니다. CI는 모든 풀 리퀘스트에서 측정을 다시 실행하고, 커밋된 숫자가 코드가 생성하는 것과 다르면 실패합니다.
Iris는 로컬 우선입니다: 모든 것이 디스크의 SQLite에 저장됩니다. 아웃바운드 HTTP는 사용자가 선택한 경우에만 발생합니다 — 자체 LLM 심사 키, 인용 가져오기, 또는 구성한 OpenTelemetry 내보내기. 이 프로젝트는 두 포트(3000은 MCP HTTP 전송, 6920은 대시보드 및 수집)로 Docker 배포를 지원하며, Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI 및 기타 MCP 호환 에이전트와 통합됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.