Skip to content

Commit b6bf3d8

Browse files
Refactor: Move scheme imports to common and update Dockerfile + update judge to latest changes
1 parent 028a738 commit b6bf3d8

File tree

8 files changed

+32
-102
lines changed

8 files changed

+32
-102
lines changed

detectors/Dockerfile.judge

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ RUN echo "$CACHEBUST"
2121
COPY ./common /app/detectors/common
2222
COPY ./llm_judge/app.py /app/detectors/llm_judge/app.py
2323
COPY ./llm_judge/detector.py /app/detectors/llm_judge/detector.py
24-
COPY ./llm_judge/scheme.py /app/detectors/llm_judge/scheme.py
2524
RUN touch /app/detectors/llm_judge/__init__.py
2625

2726
EXPOSE 8000

detectors/common/scheme.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from enum import Enum
2-
from typing import Dict, List, Optional
2+
from typing import Any, Dict, List, Optional
33

44
from pydantic import BaseModel, Field, RootModel
55

@@ -134,6 +134,7 @@ class ContentAnalysisResponse(BaseModel):
134134
description="Optional field providing evidences for the provided detection",
135135
default=None,
136136
)
137+
metadata: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Additional metadata from evaluation")
137138

138139

139140
class ContentsAnalysisResponse(RootModel):
@@ -145,3 +146,27 @@ class ContentsAnalysisResponse(RootModel):
145146
class Error(BaseModel):
146147
code: int
147148
message: str
149+
150+
class MetricsListResponse(BaseModel):
151+
"""Response for listing available metrics."""
152+
metrics: List[str] = Field(description="List of available metric names")
153+
total: int = Field(description="Total number of available metrics")
154+
155+
class GenerationAnalysisHttpRequest(BaseModel):
156+
prompt: str = Field(description="Prompt is the user input to the LLM", example="What do you think about the future of AI?")
157+
generated_text: str = Field(description="Generated response from the LLM", example="The future of AI is bright but we need to be careful about the risks.")
158+
detector_params: Optional[Dict[str, Any]] = Field(
159+
default_factory=dict,
160+
description="Detector parameters for evaluation (e.g., metric, criteria, etc.)",
161+
example={"metric": "safety"}
162+
)
163+
164+
class GenerationAnalysisResponse(BaseModel):
165+
detection: str = Field(example="safe")
166+
detection_type: str = Field(example="llm_judge")
167+
score: float = Field(example=0.8)
168+
evidences: Optional[List[EvidenceObj]] = Field(
169+
description="Optional field providing evidences for the provided detection",
170+
default=[],
171+
)
172+
metadata: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Additional metadata from evaluation")

detectors/llm_judge/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from detectors.common.app import DetectorBaseAPI as FastAPI
88
from detectors.llm_judge.detector import LLMJudgeDetector
9-
from detectors.llm_judge.scheme import (
9+
from detectors.common.scheme import (
1010
ContentAnalysisHttpRequest,
1111
ContentsAnalysisResponse,
1212
MetricsListResponse,
@@ -52,7 +52,7 @@ async def detector_content_analysis_handler(
5252
detector: LLMJudgeDetector = app.get_detector()
5353
if not detector:
5454
raise HTTPException(status_code=503, detail="Detector not found")
55-
return ContentsAnalysisResponse(root=await detector.run(request))
55+
return ContentsAnalysisResponse(root=await detector.analyze_content(request))
5656

5757
@app.post(
5858
"/api/v1/text/generation",

detectors/llm_judge/detector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from vllm_judge import Judge, EvaluationResult, BUILTIN_METRICS
55
from vllm_judge.exceptions import MetricNotFoundError
66
from detectors.common.app import logger
7-
from detectors.llm_judge.scheme import (
7+
from detectors.common.scheme import (
88
ContentAnalysisHttpRequest,
99
ContentAnalysisResponse,
1010
ContentsAnalysisResponse,

detectors/llm_judge/requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
vllm-judge[jinja2]==0.1.6
2-
pyyaml==6.0.2
1+
vllm-judge[jinja2]==0.1.8

detectors/llm_judge/scheme.py

Lines changed: 0 additions & 93 deletions
This file was deleted.

tests/detectors/llm_judge/test_llm_judge_detector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# Import the detector components
88
from detectors.llm_judge.detector import LLMJudgeDetector
9-
from detectors.llm_judge.scheme import (
9+
from detectors.common.scheme import (
1010
ContentAnalysisHttpRequest,
1111
ContentAnalysisResponse,
1212
GenerationAnalysisHttpRequest,

tests/detectors/llm_judge/test_performance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from unittest.mock import patch, AsyncMock
66

77
from detectors.llm_judge.detector import LLMJudgeDetector
8-
from detectors.llm_judge.scheme import ContentAnalysisHttpRequest, GenerationAnalysisResponse
8+
from detectors.common.scheme import ContentAnalysisHttpRequest, GenerationAnalysisResponse
99
from vllm_judge import EvaluationResult
1010

1111

0 commit comments

Comments
 (0)