You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

eval.py 2.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # datamodel/eval.py
  2. from datetime import datetime
  3. from enum import Enum
  4. from typing import Any, Dict, List, Optional, Sequence
  5. from uuid import UUID, uuid4
  6. from autogen_agentchat.base import TaskResult
  7. from autogen_core import Image
  8. from pydantic import BaseModel
  9. from sqlmodel import Field
  10. class EvalTask(BaseModel):
  11. """Definition of a task to be evaluated."""
  12. task_id: UUID | str = Field(default_factory=uuid4)
  13. input: str | Sequence[str | Image]
  14. name: str = ""
  15. description: str = ""
  16. expected_outputs: Optional[List[Any]] = None
  17. metadata: Dict[str, Any] = {}
  18. class EvalRunResult(BaseModel):
  19. """Result of an evaluation run."""
  20. result: TaskResult | None = None
  21. status: bool = False
  22. start_time: Optional[datetime] = Field(default=datetime.now())
  23. end_time: Optional[datetime] = None
  24. error: Optional[str] = None
  25. class EvalDimensionScore(BaseModel):
  26. """Score for a single evaluation dimension."""
  27. dimension: str
  28. score: float
  29. reason: str
  30. max_value: float
  31. min_value: float
  32. class EvalScore(BaseModel):
  33. """Composite score from evaluation."""
  34. overall_score: Optional[float] = None
  35. dimension_scores: List[EvalDimensionScore] = []
  36. reason: Optional[str] = None
  37. max_value: float = 10.0
  38. min_value: float = 0.0
  39. metadata: Dict[str, Any] = {}
  40. class EvalJudgeCriteria(BaseModel):
  41. """Criteria for judging evaluation results."""
  42. dimension: str
  43. prompt: str
  44. max_value: float = 10.0
  45. min_value: float = 0.0
  46. metadata: Dict[str, Any] = {}
  47. class EvalRunStatus(str, Enum):
  48. """Status of an evaluation run."""
  49. PENDING = "pending"
  50. RUNNING = "running"
  51. COMPLETED = "completed"
  52. FAILED = "failed"
  53. CANCELED = "canceled"
  54. class EvalResult(BaseModel):
  55. """Result of an evaluation run."""
  56. task_id: UUID | str
  57. # runner_id: UUID | str
  58. status: EvalRunStatus = EvalRunStatus.PENDING
  59. start_time: Optional[datetime] = Field(default=datetime.now())
  60. end_time: Optional[datetime] = None