feat(report): improve daily intelligence UX and price tracking
This commit is contained in:
@@ -215,7 +215,7 @@ func fetchModels(cfg Config) ([]ModelInfo, error) {
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
body, _ := io.ReadAll(resp.Body)
|
||||
lastErr = fmt.Errorf("非 200 响应: %d %s", resp.StatusCode, string(body))
|
||||
lastErr = retry.HTTPStatusError{StatusCode: resp.StatusCode, Body: string(body)}
|
||||
return lastErr
|
||||
}
|
||||
|
||||
@@ -287,6 +287,38 @@ func parseModels(raw []byte) ([]ModelInfo, error) {
|
||||
return models, nil
|
||||
}
|
||||
|
||||
func deriveModality(model ModelInfo) string {
|
||||
for _, capability := range model.Capabilities {
|
||||
normalized := strings.ToLower(capability)
|
||||
switch {
|
||||
case strings.Contains(normalized, "vision"), strings.Contains(normalized, "image"):
|
||||
return "multimodal"
|
||||
case strings.Contains(normalized, "audio"):
|
||||
return "audio"
|
||||
case strings.Contains(normalized, "video"):
|
||||
return "video"
|
||||
case strings.Contains(normalized, "code"):
|
||||
return "code"
|
||||
}
|
||||
}
|
||||
|
||||
hints := strings.ToLower(strings.Join([]string{model.ID, model.Name, model.Description}, " "))
|
||||
switch {
|
||||
case strings.Contains(hints, "video") && (strings.Contains(hints, "omni") || strings.Contains(hints, "vision") || strings.Contains(hints, "multimodal")):
|
||||
return "multimodal"
|
||||
case strings.Contains(hints, "vision") || strings.Contains(hints, "image") || strings.Contains(hints, "vl") || strings.Contains(hints, "omni") || strings.Contains(hints, "multimodal"):
|
||||
return "multimodal"
|
||||
case strings.Contains(hints, "audio") || strings.Contains(hints, "speech") || strings.Contains(hints, "voice"):
|
||||
return "audio"
|
||||
case strings.Contains(hints, "video"):
|
||||
return "video"
|
||||
case strings.Contains(hints, "code"):
|
||||
return "code"
|
||||
default:
|
||||
return "text"
|
||||
}
|
||||
}
|
||||
|
||||
func getString(m map[string]any, key string) string {
|
||||
if v, ok := m[key].(string); ok {
|
||||
return v
|
||||
@@ -443,7 +475,7 @@ func summarizeDB(connStr string, models []ModelInfo, batchSize int) error {
|
||||
`,
|
||||
"openrouter", m.ID, m.Name, m.Description, m.ContextLength,
|
||||
jsonCapabilities(m.Capabilities), m.Created, isFree, "active",
|
||||
rawPayload(m), providerID, "", "text",
|
||||
rawPayload(m), providerID, "", deriveModality(m),
|
||||
"official", now, batchID, collectorVersion,
|
||||
"https://openrouter.ai/api/v1/models", now).Scan(&modelID)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user