evalvault 1.62.1__py3-none-any.whl → 1.63.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. evalvault/adapters/inbound/api/adapter.py +190 -19
  2. evalvault/adapters/inbound/api/routers/runs.py +66 -2
  3. evalvault/adapters/inbound/cli/commands/method.py +5 -2
  4. evalvault/adapters/inbound/cli/commands/prompts.py +613 -5
  5. evalvault/adapters/inbound/cli/commands/run.py +43 -2
  6. evalvault/adapters/inbound/cli/commands/run_helpers.py +10 -0
  7. evalvault/adapters/inbound/mcp/tools.py +5 -2
  8. evalvault/adapters/outbound/analysis/ragas_evaluator_module.py +13 -9
  9. evalvault/adapters/outbound/llm/__init__.py +5 -43
  10. evalvault/adapters/outbound/llm/anthropic_adapter.py +27 -7
  11. evalvault/adapters/outbound/llm/factory.py +103 -0
  12. evalvault/adapters/outbound/llm/llm_relation_augmenter.py +39 -14
  13. evalvault/adapters/outbound/llm/ollama_adapter.py +34 -10
  14. evalvault/adapters/outbound/llm/openai_adapter.py +41 -8
  15. evalvault/adapters/outbound/llm/token_aware_chat.py +21 -2
  16. evalvault/adapters/outbound/llm/vllm_adapter.py +39 -8
  17. evalvault/adapters/outbound/nlp/korean/toolkit_factory.py +20 -0
  18. evalvault/adapters/outbound/report/llm_report_generator.py +90 -6
  19. evalvault/adapters/outbound/storage/base_sql.py +527 -21
  20. evalvault/adapters/outbound/storage/postgres_adapter.py +209 -0
  21. evalvault/adapters/outbound/storage/postgres_schema.sql +38 -0
  22. evalvault/adapters/outbound/storage/sqlite_adapter.py +86 -5
  23. evalvault/debug_ragas.py +7 -1
  24. evalvault/debug_ragas_real.py +5 -1
  25. evalvault/domain/entities/__init__.py +10 -0
  26. evalvault/domain/entities/prompt_suggestion.py +50 -0
  27. evalvault/domain/services/__init__.py +6 -0
  28. evalvault/domain/services/evaluator.py +191 -103
  29. evalvault/domain/services/holdout_splitter.py +67 -0
  30. evalvault/domain/services/intent_classifier.py +73 -0
  31. evalvault/domain/services/pipeline_template_registry.py +3 -0
  32. evalvault/domain/services/prompt_candidate_service.py +117 -0
  33. evalvault/domain/services/prompt_registry.py +40 -2
  34. evalvault/domain/services/prompt_scoring_service.py +286 -0
  35. evalvault/domain/services/prompt_suggestion_reporter.py +277 -0
  36. evalvault/domain/services/synthetic_qa_generator.py +4 -3
  37. evalvault/ports/inbound/learning_hook_port.py +4 -1
  38. evalvault/ports/outbound/__init__.py +2 -0
  39. evalvault/ports/outbound/llm_factory_port.py +13 -0
  40. evalvault/ports/outbound/llm_port.py +34 -2
  41. evalvault/ports/outbound/storage_port.py +38 -0
  42. {evalvault-1.62.1.dist-info → evalvault-1.63.0.dist-info}/METADATA +228 -4
  43. {evalvault-1.62.1.dist-info → evalvault-1.63.0.dist-info}/RECORD +46 -38
  44. {evalvault-1.62.1.dist-info → evalvault-1.63.0.dist-info}/WHEEL +0 -0
  45. {evalvault-1.62.1.dist-info → evalvault-1.63.0.dist-info}/entry_points.txt +0 -0
  46. {evalvault-1.62.1.dist-info → evalvault-1.63.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evalvault
3
- Version: 1.62.1
3
+ Version: 1.63.0
4
4
  Summary: RAG evaluation system using Ragas with Phoenix/Langfuse tracing
5
5
  Project-URL: Homepage, https://github.com/ntts9990/EvalVault
6
6
  Project-URL: Documentation, https://github.com/ntts9990/EvalVault#readme
@@ -37,6 +37,7 @@ Requires-Dist: openpyxl
37
37
  Requires-Dist: pandas
38
38
  Requires-Dist: pydantic
39
39
  Requires-Dist: pydantic-settings
40
+ Requires-Dist: pypdf>=4.3.0
40
41
  Requires-Dist: python-multipart
41
42
  Requires-Dist: ragas==0.4.2
42
43
  Requires-Dist: rich
@@ -174,11 +175,229 @@ uv run evalvault run --mode simple tests/fixtures/e2e/insurance_qa_korean.json \
174
175
  --auto-analyze
175
176
  ```
176
177
 
177
- - 결과는 `--db`에 저장되어 `history`, Web UI, 비교 분석에서 재사용됩니다.
178
+ - 결과는 기본 DB(`data/db/evalvault.db`)에 저장되어 `history`, Web UI, 비교 분석에서 재사용됩니다.
179
+ - `--db`를 생략해도 기본 경로로 저장되며, 모든 데이터가 자동으로 엑셀로 내보내집니다.
178
180
  - `--auto-analyze`는 요약 리포트 + 모듈별 아티팩트를 함께 생성합니다.
179
181
 
180
182
  ---
181
183
 
184
+ ## 프롬프트 오버라이드 (RAGAS / 시스템)
185
+
186
+ **에디터 관점**: 기본 동작은 유지하고 필요한 항목만 YAML/파일로 덮어씁니다.
187
+ **개발자 관점**: CLI 옵션 또는 Web API 필드로 주입합니다.
188
+
189
+ ### CLI
190
+ - RAGAS 메트릭별 오버라이드: `--ragas-prompts`
191
+ - 시스템 프롬프트 적용: `--system-prompt` 또는 `--system-prompt-file`
192
+
193
+ ```bash
194
+ uv run evalvault run --mode full tests/fixtures/e2e/insurance_qa_korean.json \
195
+ --metrics faithfulness,answer_relevancy \
196
+ --ragas-prompts config/ragas_prompts.yaml
197
+
198
+ uv run evalvault run --mode full tests/fixtures/e2e/insurance_qa_korean.json \
199
+ --system-prompt-file prompts/system.txt
200
+ ```
201
+
202
+ `config/ragas_prompts.yaml` 예시:
203
+ ```yaml
204
+ faithfulness: |
205
+ # custom prompt...
206
+ answer_relevancy: |
207
+ # custom prompt...
208
+ ```
209
+
210
+ ### Web UI / API
211
+ - `EvalRequest` 필드:
212
+ - `system_prompt`, `system_prompt_name`
213
+ - `ragas_prompt_overrides` (메트릭명 → 프롬프트 문자열)
214
+ - `prompt_set_name`, `prompt_set_description`
215
+
216
+ ---
217
+
218
+ ## 프롬프트 후보 추천 (`evalvault prompts suggest`)
219
+
220
+ 특정 `run_id`의 프롬프트 스냅샷을 기준으로, **자동/수동 후보 프롬프트**를 모은 뒤 **holdout 분리 데이터**에서 Ragas 메트릭을 평가하고, **가중치 합산 점수**로 Top 후보를 추천합니다.
221
+
222
+ - 필수 전제: `run_id`가 `--db`에 저장되어 있고, 해당 run에 **프롬프트 스냅샷**이 연결되어 있어야 합니다 (`evalvault run` 실행 시 `--db` 사용).
223
+ - 자동 후보: 기본 프롬프트를 바탕으로 템플릿 기반 변형을 생성합니다. (`--candidates`, `--auto/--no-auto`)
224
+ - 수동 후보: `--prompt`(반복 가능), `--prompt-file`(반복 가능)로 후보를 추가합니다. (`--no-auto` 사용 시 수동 후보는 필수)
225
+ - holdout 분리: `--holdout-ratio`(기본 0.2)로 dev/holdout을 나누고, **holdout 쪽 점수로 랭킹**을 계산합니다. 재현이 필요하면 `--seed`를 지정하세요.
226
+ - 가중치: `--weights faithfulness=0.7,answer_relevancy=0.3` 형태로 입력하며, 내부에서 합이 1이 되도록 정규화합니다. 미지정 시 메트릭 균등 가중치가 적용됩니다.
227
+
228
+ ### 사용 예시
229
+
230
+ ```bash
231
+ # 기본 사용 (자동 후보 + 수동 후보 파일)
232
+ uv run evalvault prompts suggest <RUN_ID> --db data/db/evalvault.db \
233
+ --role system \
234
+ --metrics faithfulness,answer_relevancy \
235
+ --weights faithfulness=0.7,answer_relevancy=0.3 \
236
+ --candidates 5 \
237
+ --prompt-file prompts/candidates.txt
238
+
239
+ # 요약 평가(다중 메트릭) + 가중치
240
+ uv run evalvault prompts suggest <RUN_ID> --db data/db/evalvault.db \
241
+ --metrics summary_score,summary_faithfulness,entity_preservation \
242
+ --weights summary_score=0.5,summary_faithfulness=0.3,entity_preservation=0.2 \
243
+ --candidates 3
244
+
245
+ # 샘플링 2개 중 index 선택
246
+ uv run evalvault prompts suggest <RUN_ID> --db data/db/evalvault.db \
247
+ --generation-n 2 \
248
+ --selection-policy index \
249
+ --selection-index 1
250
+ ```
251
+
252
+ - `--prompt-file`은 **한 줄당 후보 프롬프트 1개**를 읽습니다(빈 줄 제외).
253
+
254
+ ### 주요 옵션 요약
255
+ - `--role`: 개선 대상 프롬프트 role (기본 system)
256
+ - `--metrics`: 평가 메트릭 목록 (기본 run에서 사용한 메트릭)
257
+ - `--weights`: 메트릭 가중치 (합이 1이 되도록 정규화)
258
+ - `--candidates`: 자동 후보 수 (기본 5)
259
+ - `--auto/--no-auto`: 자동 후보 생성 on/off
260
+ - `--holdout-ratio`: dev/holdout 분리 비율 (기본 0.2)
261
+ - `--seed`: 분리/샘플 재현성
262
+ - `--generation-n`: 후보당 샘플 수
263
+ - `--selection-policy`: 샘플 선택 정책 (`best`|`index`)
264
+ - `--selection-index`: `selection-policy=index` 시 선택할 샘플 인덱스
265
+
266
+ ### 출력(기본 경로)
267
+
268
+ - 요약 JSON: `reports/analysis/prompt_suggestions_<RUN_ID>.json`
269
+ - 보고서(Markdown): `reports/analysis/prompt_suggestions_<RUN_ID>.md`
270
+ - 아티팩트 디렉터리: `reports/analysis/artifacts/prompt_suggestions_<RUN_ID>/`
271
+ - 후보 목록: `reports/analysis/artifacts/prompt_suggestions_<RUN_ID>/candidates.json`
272
+ - 후보 점수/샘플 점수: `reports/analysis/artifacts/prompt_suggestions_<RUN_ID>/scores.json`
273
+ - 최종 랭킹: `reports/analysis/artifacts/prompt_suggestions_<RUN_ID>/ranking.json`
274
+ - 인덱스: `reports/analysis/artifacts/prompt_suggestions_<RUN_ID>/index.json`
275
+
276
+ 경로를 바꾸려면 `--analysis-dir` 또는 `--output`/`--report`를 사용합니다. 설계 배경은 `docs/guides/prompt_suggestions_design.md`를 참고하세요.
277
+
278
+ ### FAQ
279
+ - Q. "프롬프트 스냅샷이 없습니다" 오류가 납니다.
280
+ - A. 해당 run이 `--db`로 저장되었는지 확인하고, `evalvault run` 실행 시 `--db`를 지정하세요.
281
+ - Q. 자동 후보를 끄면 어떻게 되나요?
282
+ - A. `--no-auto` 사용 시 `--prompt` 또는 `--prompt-file`로 수동 후보를 반드시 넣어야 합니다.
283
+ - Q. 점수는 어떤 기준인가요?
284
+ - A. holdout 데이터에서 Ragas 메트릭을 평가하고, `--weights` 가중치로 합산한 점수입니다.
285
+
286
+ ---
287
+
288
+ ## 엑셀 내보내기 (자동)
289
+
290
+ **에디터 관점**: DB 저장과 동시에 Excel이 자동 생성됩니다.
291
+ **개발자 관점**: 저장 로직에서 `export_run_to_excel`이 자동 호출됩니다.
292
+
293
+ - 기본 DB 경로: `data/db/evalvault.db`
294
+ - 엑셀 경로: `data/db/evalvault_run_<RUN_ID>.xlsx`
295
+
296
+ **시트 구성(요약 → 상세)**
297
+ - `Summary`, `Run`, `TestCases`, `MetricScores`, `MetricsSummary`
298
+ - `RunPromptSets`, `PromptSets`, `PromptSetItems`, `Prompts`
299
+ - `Feedback`, `ClusterMaps`, `StageEvents`, `StageMetrics`
300
+ - `AnalysisReports`, `PipelineResults`
301
+ - 시트별 컬럼 설명: `docs/guides/EVALVAULT_RUN_EXCEL_SHEETS.md`
302
+
303
+ ---
304
+
305
+ ## 외부 시스템 로그 연동 (의도분석/리트리브/리랭킹 등)
306
+
307
+ **에디터 관점**: 표준 포맷(OTel/JSON/JSONL)으로 붙일 수 있어야 합니다.
308
+ **개발자 관점**: OpenTelemetry + OpenInference 또는 Stage Events로 연결합니다.
309
+
310
+ ### 1) Open RAG Trace (권장)
311
+ - OpenTelemetry + OpenInference 기반 표준 스키마
312
+ - 스펙: `docs/architecture/open-rag-trace-spec.md`
313
+ - 연동 규격: `docs/guides/EXTERNAL_TRACE_API_SPEC.md`
314
+ - 샘플: `docs/guides/OPEN_RAG_TRACE_SAMPLES.md`
315
+
316
+ **OTLP HTTP 전송(권장)**
317
+ - 엔드포인트: `http://<host>:6006/v1/traces`
318
+ - Collector 사용 시: `http://<collector-host>:4318/v1/traces`
319
+
320
+ **OpenInference 필수 키(요약)**
321
+ - `rag.module`, `spec.version`
322
+ - 권장: `input.value`, `output.value`, `llm.model_name`, `retrieval.documents_json`
323
+
324
+ ### 2) EvalVault 직접 Ingest (Draft)
325
+ - `POST /api/v1/ingest/otel-traces` (OTLP JSON)
326
+ - `POST /api/v1/ingest/stage-events` (JSONL)
327
+ - 예시: `docs/templates/otel_openinference_trace_example.json`
328
+
329
+ **OTLP JSON 예시(요약)**
330
+ ```json
331
+ {
332
+ "resourceSpans": [
333
+ {
334
+ "resource": {
335
+ "attributes": [
336
+ { "key": "service.name", "value": { "stringValue": "rag-service" } }
337
+ ]
338
+ },
339
+ "scopeSpans": [
340
+ {
341
+ "spans": [
342
+ {
343
+ "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
344
+ "spanId": "00f067aa0ba902b7",
345
+ "name": "retrieve",
346
+ "startTimeUnixNano": 1730000000000000000,
347
+ "endTimeUnixNano": 1730000000500000000,
348
+ "attributes": [
349
+ { "key": "rag.module", "value": { "stringValue": "retrieve" } },
350
+ { "key": "spec.version", "value": { "stringValue": "0.1" } },
351
+ { "key": "input.value", "value": { "stringValue": "보험금 지급 조건" } }
352
+ ]
353
+ }
354
+ ]
355
+ }
356
+ ]
357
+ }
358
+ ]
359
+ }
360
+ ```
361
+
362
+ **응답 예시(요약)**
363
+ ```json
364
+ {
365
+ "status": "ok",
366
+ "ingested": 12,
367
+ "trace_ids": ["4bf92f3577b34da6a3ce929d0e0e4736"]
368
+ }
369
+ ```
370
+
371
+ **HTTP 상태 코드(요약)**
372
+ - `200 OK`: 정상 수집
373
+ - `400 Bad Request`: JSON/JSONL 파싱 실패
374
+ - `422 Unprocessable Entity`: 필수 필드 누락/스키마 불일치
375
+ - `500 Internal Server Error`: 저장/파이프라인 내부 오류
376
+
377
+ ### 3) Stage Events / Metrics 적재
378
+ - 외부 파이프라인 로그를 JSON/JSONL로 저장 → DB ingest
379
+
380
+ ```bash
381
+ uv run evalvault stage ingest path/to/stage_events.jsonl --db data/db/evalvault.db
382
+ uv run evalvault stage summary <RUN_ID> --db data/db/evalvault.db
383
+ ```
384
+
385
+ **Stage Event JSONL 예시(요약)**
386
+ ```jsonl
387
+ {"run_id":"run_20260103_001","stage_id":"stg_sys_01","stage_type":"system_prompt","stage_name":"system_prompt_v1","duration_ms":18,"attributes":{"prompt_id":"sys-01"}}
388
+ {"run_id":"run_20260103_001","stage_id":"stg_input_01","parent_stage_id":"stg_sys_01","stage_type":"input","stage_name":"user_query","duration_ms":6,"attributes":{"query":"보험금 지급 조건","language":"ko"}}
389
+ ```
390
+
391
+ - Stage Event에는 **의도분석/리트리브/리랭킹**의 입력/출력/파라미터/결과를 넣습니다.
392
+ - `--stage-store` 사용 시 EvalVault 내부 실행 로그도 자동 저장됩니다.
393
+
394
+ ### 4) 분석 전환 규칙(요약)
395
+ - **RAGAS 형식 데이터셋**이면 `evalvault run` 기반 평가/분석
396
+ - **OTel/OpenInference 트레이스**는 Phoenix로 트레이싱 연결
397
+ - **비정형 로그(Stage Event)**는 `stage ingest` → `stage summary` → 분석 모듈로 전환
398
+
399
+ ---
400
+
182
401
  ## Web UI (FastAPI + React)
183
402
 
184
403
  ```bash
@@ -193,6 +412,11 @@ npm run dev
193
412
 
194
413
  브라우저에서 `http://localhost:5173` 접속 후, Evaluation Studio에서 실행/히스토리/리포트를 확인합니다.
195
414
 
415
+ - LLM 보고서 언어: `/api/v1/runs/{run_id}/report?language=en` (기본 ko)
416
+ - 상세: `docs/guides/USER_GUIDE.md#보고서-언어-옵션`
417
+ - 피드백 집계: 동일 `rater_id` + `test_case_id` 기준 최신 값만 집계, 취소 시 집계 제외
418
+ - 상세: `docs/guides/USER_GUIDE.md#피드백-집계-규칙`
419
+
196
420
  ---
197
421
 
198
422
  ## 산출물(Artifacts) 경로
@@ -256,12 +480,12 @@ npm run dev
256
480
 
257
481
  ### 2) 한국어/비영어권 대응 (프롬프트 언어 정렬)
258
482
  - **한국어 데이터셋 자동 감지** 후 `answer_relevancy`, `factual_correctness`에 한국어 프롬프트를 기본 적용합니다. (`src/evalvault/domain/services/evaluator.py`)
483
+ - **요약/후보 평가 프롬프트 기본 한국어**: 요약 충실도 판정, 프롬프트 후보 평가, 지식그래프 관계 보강 프롬프트는 기본 `ko`로 동작합니다.
484
+ - 영어가 필요하면 API/SDK에서 `language="en"` 또는 `prompt_language="en"`을 지정하세요.
259
485
  - **사용자 프롬프트 오버라이드 지원**: 필요 시 YAML로 메트릭별 프롬프트를 덮어쓸 수 있습니다. (`src/evalvault/domain/services/ragas_prompt_overrides.py`)
260
486
  - **외부 근거(비영어권 이슈)**:
261
487
  - https://github.com/explodinggradients/ragas/issues/1829
262
488
  - https://github.com/explodinggradients/ragas/issues/402
263
- - **공식 문서(언어 이슈 직접 언급)**:
264
- - https://docs.ragas.io/en/stable/howtos/customizations/metrics/_metrics_language_adaptation/
265
489
 
266
490
  **이유**: 질문 생성/판정 프롬프트가 영어에 고정될 경우, 비영어 입력에서 언어 불일치로 점수 왜곡이 발생할 수 있으므로 이를 최소화합니다.
267
491
 
@@ -1,11 +1,11 @@
1
1
  evalvault/__init__.py,sha256=mOxNqokIN9NNmW_VhViOPq3yqjs2GvpYKZgjiR6jRDc,1279
2
- evalvault/debug_ragas.py,sha256=f-UQxxoTfR5IZ6JyghW78tfGEJQBNUTbdhYJJ52yVjc,4933
3
- evalvault/debug_ragas_real.py,sha256=BpZagb8f2WOKcG-Zy69FUduL8amUy7Xid-BlDUl5esU,3212
2
+ evalvault/debug_ragas.py,sha256=7Sur2XqKrWLq6kldULiRITwwhVzHpIUcPl_yP2EuhEY,5312
3
+ evalvault/debug_ragas_real.py,sha256=Jw-4olZ6Yt_VymVFNuU9wYhfj-vOcagMmnwIa7U87HU,3518
4
4
  evalvault/mkdocs_helpers.py,sha256=1AKVQ1W2_VO4qclhfyefyU9Dz1Hzkh1DWDwsFMe24jc,331
5
5
  evalvault/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  evalvault/adapters/inbound/__init__.py,sha256=SG1svel1PwqetnqVpKFLSv612_WwGwLTbFpYgwk6FMw,166
7
7
  evalvault/adapters/inbound/api/__init__.py,sha256=LeVVttCA3tLKoHA2PO4z3y8VkfVcf3Bq8CZSzo91lf4,34
8
- evalvault/adapters/inbound/api/adapter.py,sha256=_giGdt-grmd6bkWMhRb3KdloxI_2jUMknProC76KqWY,61140
8
+ evalvault/adapters/inbound/api/adapter.py,sha256=tYkJciUUFOK80QcSwzrqkXP1G4qUFItFV7uBYbjBGqU,68473
9
9
  evalvault/adapters/inbound/api/main.py,sha256=KdlAxKn0QfGI3UuoTrBDBbUs2xCvP8lnWOY1ce3svcU,2619
10
10
  evalvault/adapters/inbound/api/routers/__init__.py,sha256=q07_YF9TnBl68bqcRCvhPU4-zRTyvmPoHVehwO6W7QM,19
11
11
  evalvault/adapters/inbound/api/routers/benchmark.py,sha256=yevntbZcNtMvbVODsITUBgR1Ka4pdFQrXBJJ4K4Jyr4,4477
@@ -13,7 +13,7 @@ evalvault/adapters/inbound/api/routers/config.py,sha256=CN-FH2cn0Ive-BD3WacWY6PF
13
13
  evalvault/adapters/inbound/api/routers/domain.py,sha256=RsR7GIFMjccDN7vpG1uDyk9n1DnCTH18JDGAX7o4Qqc,3648
14
14
  evalvault/adapters/inbound/api/routers/knowledge.py,sha256=7mgyoUM1PepFb4X8_Ntn0vd7ZZYcNbM3_9nyD10g4Aw,5307
15
15
  evalvault/adapters/inbound/api/routers/pipeline.py,sha256=8UgQzNFHcuqS61s69mOrPee4OMwfxVdvRWHJ2_qYBF0,17175
16
- evalvault/adapters/inbound/api/routers/runs.py,sha256=KyIar-5RJemO7i3dvRLM1IeKWVF57tZXrrixKpGOg7M,38029
16
+ evalvault/adapters/inbound/api/routers/runs.py,sha256=rydOvwWk24QIYafu3XYS3oL_VVCE_jHDmjADhA19T1s,40059
17
17
  evalvault/adapters/inbound/cli/__init__.py,sha256=a42flC5NK-VfbdbBrE49IrUL5zAyKdXZYJVM6E3NTE0,675
18
18
  evalvault/adapters/inbound/cli/app.py,sha256=ytNgHRg9ZTAl33AkB1wIL8RKfQ_Cf8fsy0gSsLTs7Ew,1603
19
19
  evalvault/adapters/inbound/cli/commands/__init__.py,sha256=cNPPhsudTQWdlh_OJm9mU8LGBnJLGMswJBcIV9MAlkI,3530
@@ -32,12 +32,12 @@ evalvault/adapters/inbound/cli/commands/history.py,sha256=P8rK_nRJrmtG3y9obq3OSY
32
32
  evalvault/adapters/inbound/cli/commands/init.py,sha256=7q86fUeBVA08fU_N0lAV6Lakxirq4val2jIyALlDy3E,8822
33
33
  evalvault/adapters/inbound/cli/commands/kg.py,sha256=ycV9Xj6SUUJLTyTfLZcjXDVLcZqwo7Gw878ZhZAeDoc,19155
34
34
  evalvault/adapters/inbound/cli/commands/langfuse.py,sha256=aExhZ5WYT0FzJI4v1sF-a1jqy9b1BF46_HBtfiQjVGI,4085
35
- evalvault/adapters/inbound/cli/commands/method.py,sha256=K1UacoKwV9w8sLeQK8qHyTuZqFZrlcj6yS_y2izfRlo,18853
35
+ evalvault/adapters/inbound/cli/commands/method.py,sha256=OWdoofhvsDJchgNKnGGjXfIsZ-IHKZEo6RlmTsZRRYM,19124
36
36
  evalvault/adapters/inbound/cli/commands/phoenix.py,sha256=LQi3KTLq1ybjjBuz92oQ6lYyBS3mHrCHk0qe-7bqB4U,15611
37
37
  evalvault/adapters/inbound/cli/commands/pipeline.py,sha256=NeqWLzO9kRDuZd0pHAIHglP3F7VzoNOU4JI0QcSZ120,7788
38
- evalvault/adapters/inbound/cli/commands/prompts.py,sha256=6UwQtKJf3JYhcNI4tQqjjsL-sp_cmu2VV7gETkCcmkk,5490
39
- evalvault/adapters/inbound/cli/commands/run.py,sha256=qC1u8zTJBFEDxRYWZQ6IvIcX5JCyd9vLpP7vGkce8zQ,115493
40
- evalvault/adapters/inbound/cli/commands/run_helpers.py,sha256=50nYzf4DUniJd7fQgT2cyh_FWVTWZzW0UMXCg-EHBuY,39764
38
+ evalvault/adapters/inbound/cli/commands/prompts.py,sha256=lddde5VbjYaqN_9gHPLNu6DWpg5fE-KqZzjN-XYwvJw,27153
39
+ evalvault/adapters/inbound/cli/commands/run.py,sha256=5rWCh8dTVqRgoiKu2Kd_53PxeIh0GRIkULl3GSpoSiU,117412
40
+ evalvault/adapters/inbound/cli/commands/run_helpers.py,sha256=cc6oZHJSBJM9cxr928zq3sGrIh73u2vD0z2j9IzbPo4,40236
41
41
  evalvault/adapters/inbound/cli/commands/stage.py,sha256=oRC9c5CysLX90Iy5Ba1pc_00DaOBS78lcBvzkbdrGRM,17123
42
42
  evalvault/adapters/inbound/cli/utils/__init__.py,sha256=QPNKneZS-Z-tTnYYxtgJXgcJWY6puUlRQcKrn7Mlv1M,685
43
43
  evalvault/adapters/inbound/cli/utils/analysis_io.py,sha256=RHkKEq4e-PtbtRDlXAJWU80RYHNPw-O5V9_GujdaGfc,13393
@@ -50,7 +50,7 @@ evalvault/adapters/inbound/cli/utils/progress.py,sha256=2kFKKZ4AWNvo9IcSLhu8qbsl
50
50
  evalvault/adapters/inbound/cli/utils/validators.py,sha256=OnjNvi_iLtxjWBIrqtbGWAmx2d4zNm_-qi0Ce-3KHZk,1436
51
51
  evalvault/adapters/inbound/mcp/__init__.py,sha256=kctJsmaP4fY94T3WCOhgANk3TCLdfb24UFDsV82RCDU,1135
52
52
  evalvault/adapters/inbound/mcp/schemas.py,sha256=KUKm4gEc-UDyF8sUbyzAnAIzyZ6DcXsaCEIVR3oESNQ,4469
53
- evalvault/adapters/inbound/mcp/tools.py,sha256=YkmQexl9k0KFZIgRnE4HT7rZfc_eLqoMd2K6ELC1qpk,23956
53
+ evalvault/adapters/inbound/mcp/tools.py,sha256=fnvkWS5p93o3FNmUSbh3EW4jCAVwtBKHX6kDuEbXkK8,24219
54
54
  evalvault/adapters/outbound/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  evalvault/adapters/outbound/analysis/__init__.py,sha256=TLuS-eKfXg97_Db5td1nTZkD3BErRLZLic1v2EAM2sA,6185
56
56
  evalvault/adapters/outbound/analysis/analysis_report_module.py,sha256=xah3wgJErHD_Hpb1YAwWRsxr8xaC8SW--CpNA7IgfxI,3957
@@ -81,7 +81,7 @@ evalvault/adapters/outbound/analysis/pattern_detector_module.py,sha256=SyCDO_VS-
81
81
  evalvault/adapters/outbound/analysis/pipeline_factory.py,sha256=XvcCbKCN_otv1pGUzk0oE76RV19yFga8r6RngBvgEFo,3691
82
82
  evalvault/adapters/outbound/analysis/pipeline_helpers.py,sha256=8E8IrYI5JvRrpnjxe0DS7srbPzB0XAxxXhLLYgfwsgU,5756
83
83
  evalvault/adapters/outbound/analysis/priority_summary_module.py,sha256=o8Y0rfHjYYE9WNTwKtpJulwfvLA3MNMhYjdSg15Vacc,10802
84
- evalvault/adapters/outbound/analysis/ragas_evaluator_module.py,sha256=KQd8zdyMGKklZane077RRNPDOf6kqVDbj_R9Qbq-quA,7275
84
+ evalvault/adapters/outbound/analysis/ragas_evaluator_module.py,sha256=Cd-spGn56zMcqOdoTLUHTYVOFqHqR17tPFyJs7rmnbw,7659
85
85
  evalvault/adapters/outbound/analysis/retrieval_analyzer_module.py,sha256=D24GTaKabHacSBI-UqCd_jy61hnne8-QG1p4rqW1Bzk,5748
86
86
  evalvault/adapters/outbound/analysis/retrieval_benchmark_module.py,sha256=_duIBlYhAsFygEpC7DuwoAqfTbVG2xgp70JjW1LJAGE,9312
87
87
  evalvault/adapters/outbound/analysis/retrieval_quality_checker_module.py,sha256=K1IJn4bvvz-BfqQmhd5Ik9oATjq_-G7V1AZSW8zKtSE,3121
@@ -135,16 +135,17 @@ evalvault/adapters/outbound/kg/graph_rag_retriever.py,sha256=_6qd8p_2TpHnppv8LUQ
135
135
  evalvault/adapters/outbound/kg/networkx_adapter.py,sha256=wSZjMiMzpS9ZZLTRYjHm7X6TN9ITbuTWr10KyR6hFxg,21043
136
136
  evalvault/adapters/outbound/kg/parallel_kg_builder.py,sha256=sbR-bVpjTFhV47Ss8LYA3Ytk-THqo1HJz2YLfAelRyg,8886
137
137
  evalvault/adapters/outbound/kg/query_strategies.py,sha256=BDDft2Cc-xDvJWyIuyUTv0bPvaIiXJLd76YdjzMAZlk,19445
138
- evalvault/adapters/outbound/llm/__init__.py,sha256=GDllWZNBVqmQSFOXsXFlE82qxgaZWGL4TChu61bEG7U,4523
139
- evalvault/adapters/outbound/llm/anthropic_adapter.py,sha256=Qjpwqt6eDDvrSAGynvO0NZQIrhfEFJqLJfqfYPjcwaY,7491
138
+ evalvault/adapters/outbound/llm/__init__.py,sha256=MZODPJbwpMuuubG7cxXEh75V3e0r65db5PMcFJMJfiI,3119
139
+ evalvault/adapters/outbound/llm/anthropic_adapter.py,sha256=LTU3RhtgaKNLvMpwj1-GGCclsBZM2dzVJ1OIMO9BHqI,8162
140
140
  evalvault/adapters/outbound/llm/azure_adapter.py,sha256=FR9Gimy-jonzQjtILGHKXAY_ycbjGKbKLFiD-OZ8EVs,3033
141
141
  evalvault/adapters/outbound/llm/base.py,sha256=c4cJJTKwJiBlGNCV7qomq5mQCrbc48Yi7c3vjlat7Q0,7674
142
+ evalvault/adapters/outbound/llm/factory.py,sha256=TTpbyDQH9TCr1wmajSkLgkF_fHGv6sX0hZOEqIWZudU,3509
142
143
  evalvault/adapters/outbound/llm/instructor_factory.py,sha256=6iJIjZbCJwDYEpV673R3lQOupzeWlvjCmhjYqthrueY,4497
143
- evalvault/adapters/outbound/llm/llm_relation_augmenter.py,sha256=jdeDumCi34KqAfRwLh9VTia9wiP5bvVwvHxJylLDOcg,3854
144
- evalvault/adapters/outbound/llm/ollama_adapter.py,sha256=L7MRlPUyYxTSVHhCz7LHducTqBifTzmovNBi26SWtr8,10615
145
- evalvault/adapters/outbound/llm/openai_adapter.py,sha256=Zv4gi0AxoQrXzf2hBrQjLaQVM4WttHuO2raTCekR_Kk,5163
146
- evalvault/adapters/outbound/llm/token_aware_chat.py,sha256=HLmwTZkiwmUuopjFwDGpamIRC44PWnwkRA4O-pUBt_s,11937
147
- evalvault/adapters/outbound/llm/vllm_adapter.py,sha256=zwH_KKydABn0J-hCs6OB-3809X_qBx8FPQ2EhO1gkcY,3897
144
+ evalvault/adapters/outbound/llm/llm_relation_augmenter.py,sha256=B22CJB66Vfh_SK_11J8jlfIhjDmY_7FXp-bTL2YGWGw,4848
145
+ evalvault/adapters/outbound/llm/ollama_adapter.py,sha256=HuPjX9rhBn95OzwNNXOgD-FIOKSUNuHEcNKDeHxw8kA,11481
146
+ evalvault/adapters/outbound/llm/openai_adapter.py,sha256=X6S93HFFJDOhjPmayw0xobNiJDb0AtqG07e5wZRBRuE,6463
147
+ evalvault/adapters/outbound/llm/token_aware_chat.py,sha256=yYmynaniNrYxtvXL6ejTE_d8x8nS3PEpgtTJ4eI2hgM,12977
148
+ evalvault/adapters/outbound/llm/vllm_adapter.py,sha256=OKb3Nda9OLMmHdvLjvkeJcQVeXf-B8TDibmAs7PS7kg,5157
148
149
  evalvault/adapters/outbound/methods/__init__.py,sha256=3vyE9w3Ex2oMaO4ZE7Fy6xlHhJ6YQXHQNCvBiW9X2lM,345
149
150
  evalvault/adapters/outbound/methods/baseline_oracle.py,sha256=oUsF5sIiPY5vuDtrz0Ki05SnPlnVzn7APERP5v1KpPM,1308
150
151
  evalvault/adapters/outbound/methods/external_command.py,sha256=gR2mlgr-SCAO3cS3I7pYgS8hL8JE8Y-0VZIhg7USazY,5287
@@ -159,18 +160,19 @@ evalvault/adapters/outbound/nlp/korean/kiwi_tokenizer.py,sha256=EnJnlo6D7YsVX2o4
159
160
  evalvault/adapters/outbound/nlp/korean/korean_evaluation.py,sha256=Mxwu3zhtdm8Tew5o3Oxs8O8Wh-YN81Zs04tlS3vhNS8,20046
160
161
  evalvault/adapters/outbound/nlp/korean/korean_stopwords.py,sha256=UemEFCJudg2EpsHg8uU2eR-iCh34kw4ZSVCRvnEC6a4,4293
161
162
  evalvault/adapters/outbound/nlp/korean/toolkit.py,sha256=EYGpd89ilpn4Wg5t8pALYt4Qi0aDHYOfXGuYbQx7do0,4246
163
+ evalvault/adapters/outbound/nlp/korean/toolkit_factory.py,sha256=x3v-AAkVInOabC4PtOtStsZrFnHun0IOqZDyQGaQVm8,586
162
164
  evalvault/adapters/outbound/phoenix/sync_service.py,sha256=i6gHpNiZXKQ5yzV9B2TPb-P1N45k_Ck5ruzh3oqp4d8,9122
163
165
  evalvault/adapters/outbound/report/__init__.py,sha256=8OUduTHnWkBLHYrc7mBg45DnAwz0RgvSJmz1HqxVjLY,477
164
166
  evalvault/adapters/outbound/report/dashboard_generator.py,sha256=Dcu18NTK4lS8XNKnnnquagpZkd-4TSf5Mb2isFNW5Pk,7800
165
- evalvault/adapters/outbound/report/llm_report_generator.py,sha256=sp2YRCmPOhn08vb8Bq_ayo-ZjgyBBxRhzRFvzlaDhsA,24063
167
+ evalvault/adapters/outbound/report/llm_report_generator.py,sha256=HUDA_IPBbl54cyEjTTJzdKTQ6H4IoZi-1VBdVmZf0uI,26593
166
168
  evalvault/adapters/outbound/report/markdown_adapter.py,sha256=5PS72h_qe4ZtYs-umhX5TqQL2k5SuDaCUc6rRw9AKRw,16761
167
169
  evalvault/adapters/outbound/storage/__init__.py,sha256=n5R6thAPTx1leSwv6od6nBWcLWFa-UYD6cOLzN89T8I,614
168
- evalvault/adapters/outbound/storage/base_sql.py,sha256=Og-YRWHsCFQP2vnyvsgfWr4C2_ZE89ZmPXcPLiHeggU,21976
170
+ evalvault/adapters/outbound/storage/base_sql.py,sha256=kWYaiUq5D35iMx34cX3_mjhRZoEXfgQR-tSk3UhbvcE,40792
169
171
  evalvault/adapters/outbound/storage/benchmark_storage_adapter.py,sha256=Qgf9xSSIkYQRpG4uLzcUdoYO9LTQDQ4tFRkkMYer-WA,9803
170
- evalvault/adapters/outbound/storage/postgres_adapter.py,sha256=IaijoeCIRi7JO2d5yfgfmF-ejobOnU7Izlx332mSUP8,39020
171
- evalvault/adapters/outbound/storage/postgres_schema.sql,sha256=aAfgwxWEqCBGGpn_QRD_BbzXR2Q-9cd9GMsCbFeohNY,7632
172
+ evalvault/adapters/outbound/storage/postgres_adapter.py,sha256=HLaoQ3YJDFwOxeY0S92oPIqb-7EgWSasgt89RM86vr0,47148
173
+ evalvault/adapters/outbound/storage/postgres_schema.sql,sha256=A9MfO0pjf4kjxoRj2KPI0Gg1cbX13I2YE3oieT-PGiI,8906
172
174
  evalvault/adapters/outbound/storage/schema.sql,sha256=LknvBvNVLvkW7c_hHTLHrxSf4TZApzbRyAk1ctuROUc,10608
173
- evalvault/adapters/outbound/storage/sqlite_adapter.py,sha256=SKZ9IZjchi7w89WNkZ6aTelAzaV0MqUC7cexrkndTNY,48555
175
+ evalvault/adapters/outbound/storage/sqlite_adapter.py,sha256=nimaXvqhJf-90r4Qjd8tBZWU5_NUIvBlQ6Vox-xrQ_c,51223
174
176
  evalvault/adapters/outbound/tracer/__init__.py,sha256=xrvQQuAvF_UI02mKLMV7GTrG3zn836n5zwCRrrmhq_U,1054
175
177
  evalvault/adapters/outbound/tracer/open_rag_log_handler.py,sha256=aq96FIWD-bBaSkq-bygWhQArC9LWghSwi-S03Mga0mI,2827
176
178
  evalvault/adapters/outbound/tracer/open_rag_trace_adapter.py,sha256=P-4PN1UweITXu5uN3LJVCEL3wRwiExzhgs3y2GN78xM,4784
@@ -191,7 +193,7 @@ evalvault/config/phoenix_support.py,sha256=e6RPWd6Qb7KU6Q8pLaYTpJGWULtvEEU6B0xHW
191
193
  evalvault/config/settings.py,sha256=T92GShlYKDaVinwbsbWX2DmNfm91Cvcvh8Te8pNOTsw,12875
192
194
  evalvault/config/playbooks/improvement_playbook.yaml,sha256=9F9WVVCydFfz6zUuGYzZ4PKdW1LLtcBKVF36T7xT764,26965
193
195
  evalvault/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- evalvault/domain/entities/__init__.py,sha256=CZU7VfTq2vart_j2pLemOX_TtSKzmpzB151pW-jSinw,3097
196
+ evalvault/domain/entities/__init__.py,sha256=RZi_6oQcq-2-sJcydfKOSr03vFxo-mF7CGHN9Ma4Cdg,3379
195
197
  evalvault/domain/entities/analysis.py,sha256=gcMtumC66g-AIqb2LgfMpm5BMzwJhJkjg-zuybNoJCM,15208
196
198
  evalvault/domain/entities/analysis_pipeline.py,sha256=hD9rFHMa4rUq0InRkSKhh6HQ9ZeNYAHKADzs-kWRP04,16845
197
199
  evalvault/domain/entities/benchmark.py,sha256=CVbz_eW7Y9eM7wG7xA_xmldTIs72csdoTmu3E0NKoMU,18475
@@ -205,6 +207,7 @@ evalvault/domain/entities/kg.py,sha256=8awN1M4vxAGQZk_ZG8i2CXKTizQ8FA1VCLhUWHZq0
205
207
  evalvault/domain/entities/memory.py,sha256=bfS75q8K8_jNrB7IYh4mjP8Lkyj-I0TVsmHCP0FuICw,8423
206
208
  evalvault/domain/entities/method.py,sha256=a3jZi7SjcpK3HeVyVwQkUMwpnmg2RbxCnH4NqYPLCOI,1157
207
209
  evalvault/domain/entities/prompt.py,sha256=VzuUzqkqXv0FwTSNGyV5sSCft5sxTbG_Noq6Ymnke5o,2910
210
+ evalvault/domain/entities/prompt_suggestion.py,sha256=Ep_XSjdYUj7pFSCMyeeZKs8yTnp74AVx05Zqr7829PE,1243
208
211
  evalvault/domain/entities/rag_trace.py,sha256=sZgnkG4fK6KOe3Np6TYAZ_tPnsRbOmucDSQns35U1n4,11868
209
212
  evalvault/domain/entities/result.py,sha256=OaGHMDLWMW2O4fNVuVTUvWFVBQ1iu93OD_oI3NumrCQ,10697
210
213
  evalvault/domain/entities/stage.py,sha256=dbVzhgpP_p2p2eDJBWe7mwyyl6zUTP9kEKN_YRUvufY,7183
@@ -219,7 +222,7 @@ evalvault/domain/metrics/registry.py,sha256=QKjo4RNHxCqObGg36xJP3KAHqFpHM50Jy7Ge
219
222
  evalvault/domain/metrics/retrieval_rank.py,sha256=F55ByadJBowyKHKBmKAZ0T0qN_R1_7UNu-MiLnT4Ypg,14675
220
223
  evalvault/domain/metrics/terms_dictionary.json,sha256=-ZQmpx6yMOYoAOpcLj-xK2LkAeCbAw0EUb6-syIOKS0,3801
221
224
  evalvault/domain/metrics/text_match.py,sha256=P-YTZs9ekDqEmxLNBP8eXnMRymPdC8V4dJPtwG2ajVM,10219
222
- evalvault/domain/services/__init__.py,sha256=a7YjsOuOzbY2yQvtDJg7W8dPJme31rI04Qc49w5iHKE,686
225
+ evalvault/domain/services/__init__.py,sha256=X5Af1kf_vSt3S3mFwOV6OQdro-lFxwbVdNd7nJznkC8,1024
223
226
  evalvault/domain/services/analysis_service.py,sha256=oUEtfJHB3bNJ_Ksygx-pjnLm4CTk7_rDvDbqfkAfFD4,10838
224
227
  evalvault/domain/services/async_batch_executor.py,sha256=qYFRl7CGmv56XppeRhInde7Fw0GESCoZh8V-Iv_1hQQ,11140
225
228
  evalvault/domain/services/batch_executor.py,sha256=cYA_Q1es46n_PYeyyfm0iM2b7GGVtDoOGoMxexrf6tI,1243
@@ -235,23 +238,27 @@ evalvault/domain/services/document_versioning.py,sha256=M1qZaMpQ2exVT1wkVAmvEPPu
235
238
  evalvault/domain/services/domain_learning_hook.py,sha256=rhKBmdnrJyfGzFNsNxzyv8jZO26-WOosHSmBV_9qdJg,7176
236
239
  evalvault/domain/services/embedding_overlay.py,sha256=ZTNxUPXpHGbQ3Uri5DD3feTUFn7qrhuNshhyCQEvRuM,3559
237
240
  evalvault/domain/services/entity_extractor.py,sha256=f3Rf5saK8QsgetLNK1Hbxzt8PtttJZCicSR63S8DJ5k,14141
238
- evalvault/domain/services/evaluator.py,sha256=rxj0tVMwtDrekNFstT6baQDfemsH-c6XtHxX-9BLKmo,64476
241
+ evalvault/domain/services/evaluator.py,sha256=YReil1mokTILyllAbG_QnFhob-15G5tNeWZZMbSc3yo,67551
239
242
  evalvault/domain/services/experiment_comparator.py,sha256=IBrxIwux-8GucwlLx6e5lUqB9miSPvBLGJK9ctoW7Y0,3299
240
243
  evalvault/domain/services/experiment_manager.py,sha256=2k-qGiAUyZuqqmcp4P-M3Z9HTXwwcqW5HQYKNkcIHuI,4863
241
244
  evalvault/domain/services/experiment_reporter.py,sha256=QYlVmCFSx8hKTPMezc7QjJE07b3MSQ82Q4QVucSHLVY,1420
242
245
  evalvault/domain/services/experiment_repository.py,sha256=1OQSvBmM7llNJFWgGHBL3XvJvn_OIQsKo7zophYtV1g,2423
243
246
  evalvault/domain/services/experiment_statistics.py,sha256=aOrqbBjB1swHPaFRziID1mrAowoV-pBS4XdLFhAhMLE,1115
247
+ evalvault/domain/services/holdout_splitter.py,sha256=Sos61Zy_bBjStt8LPHJ3KxDNda-OmX7AVUsT24K1n6Q,1910
244
248
  evalvault/domain/services/improvement_guide_service.py,sha256=gMoVFlDsprOEEfRGKmdbk9_Due62J63Q-rL2zr65Q0s,17881
245
- evalvault/domain/services/intent_classifier.py,sha256=s-4uNv60G1n5W0ddLVAQtmm2uiyKCQL4viWn-SgH4hA,9817
249
+ evalvault/domain/services/intent_classifier.py,sha256=hsWivDXqXJjCJEE-OI7eUGeYrewpYxlz67Z0TI3oskU,11707
246
250
  evalvault/domain/services/kg_generator.py,sha256=oEugjPdn8Pb2Q3r5yAZl0dZJibNUkEherlRVquknB6k,24969
247
251
  evalvault/domain/services/memory_aware_evaluator.py,sha256=vTiYoxiMfZ_CMjSBjqwkBRdpiXRwQ2zXnQ2pXzVHYts,5249
248
252
  evalvault/domain/services/memory_based_analysis.py,sha256=oh2irCy3le7fWiTtL31SMEhPyu7fyBVz-giO2hlNifE,4499
249
253
  evalvault/domain/services/method_runner.py,sha256=pABqKZeaALpWZYDfzAbd-VOZt2djQggRNIPuuPQeUSw,3571
250
254
  evalvault/domain/services/pipeline_orchestrator.py,sha256=yriVlEVZYDtt0Vwt4Ae6xyW1H6Dj4Hxdn8XQSvQNSoQ,19436
251
- evalvault/domain/services/pipeline_template_registry.py,sha256=j2WQwXrCvYd-dbtxOUTmgTZZAgNtu0eUvqgdryerCbc,27964
255
+ evalvault/domain/services/pipeline_template_registry.py,sha256=aWqXLQ24grpSZo9M4tZLRo1ysD10c6hUpW3JupZH9e0,28083
256
+ evalvault/domain/services/prompt_candidate_service.py,sha256=Ibyb5EaWK28Ju2HnTqHHGOoiA9Q-VwY3hjxVODALwGY,3997
252
257
  evalvault/domain/services/prompt_manifest.py,sha256=5s5Kd6-_Dn-xrjjlU99CVo6njsPhvE50H5m_85U-H6U,5612
253
- evalvault/domain/services/prompt_registry.py,sha256=81tq__u2fFxTEG8bWnyJ2Qdb9N89jcqIdSfOAKEbEvg,3029
258
+ evalvault/domain/services/prompt_registry.py,sha256=THcNs4jqp4FTLv9uO-VVvN6XGorkGrcIUwQH1dL74o8,4166
259
+ evalvault/domain/services/prompt_scoring_service.py,sha256=SlvfuIbhj92RJu4RQAJ1BGKhKkOAUOt3cZNH21HtsX4,9833
254
260
  evalvault/domain/services/prompt_status.py,sha256=r1dFLGz4SfRxXaxsULQsr0-HpJkG9YfZ_yLIxF1MMBo,6731
261
+ evalvault/domain/services/prompt_suggestion_reporter.py,sha256=Fc6sCPebUMk8SZVpjoJ6bCEun0ma-YmayEQnulBVv8s,10577
255
262
  evalvault/domain/services/ragas_prompt_overrides.py,sha256=4BecYE2KrreUBbIM3ssP9WzHcK_wRc8jW7CE_k58QOU,1412
256
263
  evalvault/domain/services/retrieval_metrics.py,sha256=dtrQPLMrXSyWLcgF8EGcLNFwzwA59WDzEh41JRToHAY,2980
257
264
  evalvault/domain/services/retriever_context.py,sha256=ySQ-GuadiggS0LVAib4AxA_0JpasYz4S9hbjau0eyIA,6482
@@ -260,7 +267,7 @@ evalvault/domain/services/stage_event_builder.py,sha256=ScTgyeRiH7z_rnNI_2p-i9sz
260
267
  evalvault/domain/services/stage_metric_guide_service.py,sha256=_JdRsBRWirO24qYFlh6hG-dkoWlX6_XWEYKf_uUlKIQ,8807
261
268
  evalvault/domain/services/stage_metric_service.py,sha256=KukIWWhWVOtclrET6uyWJ17jG76LfkKiqrUrDIDJ3gw,15327
262
269
  evalvault/domain/services/stage_summary_service.py,sha256=VVtuAr4vwzvmNFn8rqURJrhKFqAMG4CaBmyGiUk_xG0,1590
263
- evalvault/domain/services/synthetic_qa_generator.py,sha256=v0-M9VXM5oZ12AkfDyhOJAc-Mv28kGmGD3H969X5f6M,16471
270
+ evalvault/domain/services/synthetic_qa_generator.py,sha256=aiOTPoHZbKRTEeodABQ2I5lq8-Vs_kQtuzcGWd4MTGE,16526
264
271
  evalvault/domain/services/testset_generator.py,sha256=6IpiZ0pqhKEymo-AlUdfJjDkF2P1n8Md_QKV4nOheyg,4470
265
272
  evalvault/domain/services/threshold_profiles.py,sha256=YuOrD5CkXugAdSQYbMsFzS5VS1R201JOJtpKTs4dpXU,1296
266
273
  evalvault/domain/services/unified_report_service.py,sha256=lG3VpMLC1MTYUlcGl-MUEE4PUopkyrhcgj4_ye9c_vM,11829
@@ -269,9 +276,9 @@ evalvault/ports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
269
276
  evalvault/ports/inbound/__init__.py,sha256=2Wsc0vNzH8_ZaErk4OHxP93hRonLUkMbn3W28DtTDO0,562
270
277
  evalvault/ports/inbound/analysis_pipeline_port.py,sha256=RJfKtp22AYEqnmRk6RDawAK52rEmyAhuk0FUPJQUwQU,1758
271
278
  evalvault/ports/inbound/evaluator_port.py,sha256=rDvouIRUjBD7uICgrpeo11vNPvo27_0CdylRHPodPSE,1323
272
- evalvault/ports/inbound/learning_hook_port.py,sha256=ehpRyRNUY1PRtzIoaCyDM_QRxp6WjEQvwPskAxI4CPc,3109
279
+ evalvault/ports/inbound/learning_hook_port.py,sha256=EeJeMl3chcPHlj5mkLOj6tm8s_qdDRvoCwK1-0l70tI,3297
273
280
  evalvault/ports/inbound/web_port.py,sha256=b4uMhwOMLXy3LeILc7ZK3RR-XtoW4p4NzoTpj4syptg,5578
274
- evalvault/ports/outbound/__init__.py,sha256=jEmLbY3lZ9osue6pG5dc345BdMikBEWq4cnX7ocEul0,3276
281
+ evalvault/ports/outbound/__init__.py,sha256=0uPE6CXkoK6ECs3O4OZYAmVg5VAAHoF5rdb1eoj1NAc,3367
275
282
  evalvault/ports/outbound/analysis_cache_port.py,sha256=zPSdUVK_yw3PMWPII2YvS1WLmCGlg5bDScSuYINW9yc,1386
276
283
  evalvault/ports/outbound/analysis_module_port.py,sha256=QYzkvie9-BbONj8ZgiQUjm8I-bn8mgzlXTzIXMhehmQ,1881
277
284
  evalvault/ports/outbound/analysis_port.py,sha256=gE-iXToTgdQomj9JwNZJY4nwut8q0J6EurUmJNsnptQ,2127
@@ -283,21 +290,22 @@ evalvault/ports/outbound/embedding_port.py,sha256=ZHeKRMRBNjpZKWxsLKrD8jJz0M66JT
283
290
  evalvault/ports/outbound/improvement_port.py,sha256=fIXhcG4n6OJ1hdvWeqEoLBrVsCNdHZRgtEZjR8lf3qA,2325
284
291
  evalvault/ports/outbound/intent_classifier_port.py,sha256=gqMIk0rH6Z43ceuMMRX4vqXurgHZz-CJX2bR5PVAkjQ,2253
285
292
  evalvault/ports/outbound/korean_nlp_port.py,sha256=mJCnxBAkV8a5Nd_VX6QcjfDucY62er8GlaNO4HQA8q8,1572
286
- evalvault/ports/outbound/llm_port.py,sha256=qnVmQmkWgpeJ_eB_W1gLgXTWpowfDgYrXG5uKUhIsy8,3528
293
+ evalvault/ports/outbound/llm_factory_port.py,sha256=lzoDJi6A6ltk-t3N4oY8DSwMBMfnvXGgSduILOpzoas,305
294
+ evalvault/ports/outbound/llm_port.py,sha256=YAW0i-41yT8KzMuzZGEO5yPDkHN0onGxj55eL0cdPHY,4393
287
295
  evalvault/ports/outbound/method_port.py,sha256=sntcKgwagAdJGxp0dI-S_bhBQcOW9QpnND3fOjrsX9E,1377
288
296
  evalvault/ports/outbound/nlp_analysis_port.py,sha256=QDJHAsSpynTenuaKp78t1s--U036mtYeUEX0p5vQw24,3046
289
297
  evalvault/ports/outbound/relation_augmenter_port.py,sha256=cMcHQnmK111WzZr50vYr7affeHhOtpFZxPARwkg9xbk,651
290
298
  evalvault/ports/outbound/report_port.py,sha256=wgReSYL4SupXIoALFh0QFWfX2kzPftXpWTvGLCMd2B8,1315
291
299
  evalvault/ports/outbound/stage_storage_port.py,sha256=Nlf9upsXxgCABQB5cJdpLQYsoZNiGRAU5zE5D-Ptp2I,1201
292
- evalvault/ports/outbound/storage_port.py,sha256=d9f8bvAtPA2aytKrHvrfrWGOmaQSepLn23Bd_52QSbI,4862
300
+ evalvault/ports/outbound/storage_port.py,sha256=mexWwP3wvIVigS_ZZP5wWAzGAozByNVMwnW9ziWv3eA,5897
293
301
  evalvault/ports/outbound/tracer_port.py,sha256=kTqJCUIJHnvvDzMxxGhHSfiz8_Q4CZ0WSPvIUVVOcyw,623
294
302
  evalvault/ports/outbound/tracker_port.py,sha256=05LA3AWnuE1XmGQC16Zle9i2sEV3q69Nt8ZUye_w1_Y,2532
295
303
  evalvault/reports/__init__.py,sha256=Bb1X4871msAN8I6PM6nKGED3psPwZt88hXZBAOdH06Y,113
296
304
  evalvault/reports/release_notes.py,sha256=pZj0PBFT-4F_Ty-Kv5P69BuoOnmTCn4kznDcORFJd0w,4011
297
305
  evalvault/scripts/__init__.py,sha256=NwEeIFQbkX4ml2R_PhtIoNtArDSX_suuoymgG_7Kwso,89
298
306
  evalvault/scripts/regression_runner.py,sha256=SxZori5BZ8jVQ057Mf5V5FPgIVDccrV5oRONmnhuk8w,8438
299
- evalvault-1.62.1.dist-info/METADATA,sha256=FL8WDZmjLoW_9zXFlxEtrRhi0C4qiQEkVCtep3YLNIE,14155
300
- evalvault-1.62.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
301
- evalvault-1.62.1.dist-info/entry_points.txt,sha256=Oj9Xc5gYcyUYYNmQfWI8NYGw7nN-3M-h2ipHIMlVn6o,65
302
- evalvault-1.62.1.dist-info/licenses/LICENSE.md,sha256=3RNWY4jjtrQ_yYa-D-7I3XO12Ti7YzxsLV_dpykujvo,11358
303
- evalvault-1.62.1.dist-info/RECORD,,
307
+ evalvault-1.63.0.dist-info/METADATA,sha256=Kscv51ExIOOosrBnBXI5S1_3V0S2t2nCZhfyssREdg4,23879
308
+ evalvault-1.63.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
309
+ evalvault-1.63.0.dist-info/entry_points.txt,sha256=Oj9Xc5gYcyUYYNmQfWI8NYGw7nN-3M-h2ipHIMlVn6o,65
310
+ evalvault-1.63.0.dist-info/licenses/LICENSE.md,sha256=3RNWY4jjtrQ_yYa-D-7I3XO12Ti7YzxsLV_dpykujvo,11358
311
+ evalvault-1.63.0.dist-info/RECORD,,