File size: 2,257 Bytes
34a2915
0061e14
 
 
5048713
34a2915
0061e14
7d20cd0
34a2915
 
0061e14
 
 
 
 
 
 
 
 
 
7d20cd0
 
 
 
 
54e1175
985eb9a
 
e00a798
7d20cd0
0061e14
34a2915
0061e14
 
 
 
 
 
34a2915
0061e14
 
7d20cd0
34a2915
0061e14
 
 
 
 
 
 
6e793d7
 
 
0061e14
6e793d7
 
0061e14
 
6e793d7
 
61885ca
6e793d7
61885ca
 
0061e14
7d20cd0
0061e14
 
 
 
 
 
5048713
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from dataclasses import dataclass
from enum import Enum


def fields(raw_class):
    return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"]


# These classes are for user facing column names, to avoid having to change them
# all around the code when a modification is needed.


@dataclass
class ColumnContent:
    name: str
    type: str
    displayed_by_default: bool
    hidden: bool = False
    never_hidden: bool = False


@dataclass(frozen=True)
class AutoEvalColumn:
    system = ColumnContent("System Name", "markdown", True, never_hidden=True)
    organization = ColumnContent("Organization", "str", True, never_hidden=True)
    success_rate_overall = ColumnContent("Overall Success (%)", "number", True)
    success_rate_tier1 = ColumnContent("Deeper Tier Success (%)", "number", True)
    success_rate_tier2 = ColumnContent("Deepest Tier Success (%)", "number", True)
    submitted_on = ColumnContent("Submitted On", "datetime", True)


# For the queue columns in the submission tab
@dataclass(frozen=True)
class EvalQueueColumn:  # Queue column
    model = ColumnContent("model", "markdown", True)
    revision = ColumnContent("revision", "str", True)
    private = ColumnContent("private", "bool", True)
    precision = ColumnContent("precision", "str", True)
    weight_type = ColumnContent("weight_type", "str", True)
    status = ColumnContent("status", "str", True)


# All the model information that we might need
@dataclass
class ModelDetails:
    name: str
    display_name: str = ""


class ModelType(Enum):
    LLM = ModelDetails(name="LLM")
    AgenticLLM = ModelDetails(name="AgenticLLM")
    Other = ModelDetails(name="Other")

    def to_str(self):
        return self.value.name

    @staticmethod
    def from_str(type: str):
        if type == "AgenticLLM":
            return ModelType.AgenticLLM
        if type == "LLM":
            return ModelType.LLM
        return ModelType.Other


class Precision(Enum):
    float16 = ModelDetails("float16")
    bfloat16 = ModelDetails("bfloat16")
    Unknown = ModelDetails("?")


COLS = [c.name for c in fields(AutoEvalColumn) if not c.hidden]
EVAL_COLS = [c.name for c in fields(EvalQueueColumn)]
EVAL_TYPES = [c.type for c in fields(EvalQueueColumn)]