Repository navigation
Expand file tree
/
Copy pathmodel.go
More file actions
106 lines (100 loc) · 3.05 KB
/
Copy pathmodel.go
File metadata and controls
106 lines (100 loc) · 3.05 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package argus
// Model is an interface for reading model metadata.
type Model interface {
ID() string
Name() string
Provider() string
Description() string
DescriptionCN() string
Family() string
Series() string
Summary() string
Tags() []string
ContextLength() int
MaxOutput() int
HasCapability(c Capability) bool
Features() Capability
Aliases() []string
HasTag(tag string) bool
Card() ModelCard
}
// ModelCard contains the minimum structured metadata needed to render a model card quickly.
type ModelCard struct {
ID string
Name string
Provider string
Developer string
OfficialURL string
ModelCardURL string
Family string
Series string
Summary string
Tags []string
ContextLength int
MaxOutput int
Features Capability
Aliases []string
}
// modelData is the internal implementation of the Model interface.
type modelData struct {
IDVal string
NameVal string
ProviderVal string
DeveloperVal string
OfficialURLVal string
ModelCardURLVal string
DescVal string
DescCNVal string
FamilyVal string
SeriesVal string
SummaryVal string
TagList []string
ContextLenVal int
MaxOutputVal int
FeaturesVal Capability
AliasList []string
}
func (m *modelData) ID() string { return m.IDVal }
func (m *modelData) Name() string { return m.NameVal }
func (m *modelData) Provider() string { return m.ProviderVal }
func (m *modelData) Description() string { return m.DescVal }
func (m *modelData) DescriptionCN() string { return m.DescCNVal }
func (m *modelData) Family() string { return m.FamilyVal }
func (m *modelData) Series() string { return m.SeriesVal }
func (m *modelData) Summary() string { return m.SummaryVal }
func (m *modelData) Tags() []string { return m.TagList }
func (m *modelData) ContextLength() int { return m.ContextLenVal }
func (m *modelData) MaxOutput() int { return m.MaxOutputVal }
func (m *modelData) HasCapability(c Capability) bool { return m.FeaturesVal&c != 0 }
func (m *modelData) Features() Capability { return m.FeaturesVal }
func (m *modelData) Aliases() []string { return m.AliasList }
func (m *modelData) HasTag(tag string) bool {
tag = NormalizeTag(tag)
if tag == "" {
return false
}
for _, existing := range m.TagList {
if NormalizeTag(existing) == tag {
return true
}
}
return false
}
func (m *modelData) Card() ModelCard {
return ModelCard{
ID: m.IDVal,
Name: m.NameVal,
Provider: m.ProviderVal,
Developer: m.DeveloperVal,
OfficialURL: m.OfficialURLVal,
ModelCardURL: m.ModelCardURLVal,
Family: m.FamilyVal,
Series: m.SeriesVal,
Summary: m.SummaryVal,
Tags: m.TagList,
ContextLength: m.ContextLenVal,
MaxOutput: m.MaxOutputVal,
Features: m.FeaturesVal,
Aliases: m.AliasList,
}
}