fix: restrict Model Pricing table to core providers and actual usage
Some checks failed
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled

Filtered registry iteration to only include openai, gemini, deepseek, and grok. Improved used_only logic to match specific (model, provider) pairs from logs.
This commit is contained in:
2026-03-19 13:10:50 -04:00
parent f02fd6c249
commit 3f1e6d3407

View File

@@ -954,9 +954,12 @@ func (s *Server) handleTestProvider(c *gin.Context) {
func (s *Server) handleGetModels(c *gin.Context) {
usedOnly := c.Query("used_only") == "true"
// Provider name mapping (Registry -> Proxy)
providerMap := map[string]string{
// Registry provider normalized name -> Proxy-internal provider ID
// This ensures we only show models from YOUR providers.
allowedRegistryProviders := map[string]string{
"openai": "openai",
"google": "gemini",
"deepseek": "deepseek",
"xai": "grok",
}
@@ -969,33 +972,35 @@ func (s *Server) handleGetModels(c *gin.Context) {
dbMap[m.ID] = m
}
// Fetch set of used model IDs if requested
usedModels := make(map[string]bool)
// Fetch specific (model, provider) combinations that have been used
type modelProvider struct {
Model string `db:"model"`
Provider string `db:"provider"`
}
usedPairs := make(map[string]bool)
if usedOnly {
rows, err := s.database.Queryx("SELECT DISTINCT model FROM llm_requests")
var pairs []modelProvider
err := s.database.Select(&pairs, "SELECT DISTINCT model, provider FROM llm_requests WHERE status = 'success'")
if err == nil {
for rows.Next() {
var mID string
if err := rows.Scan(&mID); err == nil {
usedModels[mID] = true
for _, p := range pairs {
// Key format: "gpt-4o:openai"
usedPairs[fmt.Sprintf("%s:%s", p.Model, p.Provider)] = true
}
}
rows.Close()
}
}
var result []gin.H
if s.registry != nil {
for pID, pInfo := range s.registry.Providers {
// Normalize provider name for UI
uiProvider := pID
if mapped, ok := providerMap[pID]; ok {
uiProvider = mapped
// Only include models from the 4 allowed registry IDs
proxyProvider, allowed := allowedRegistryProviders[pID]
if !allowed {
continue
}
for mID, mMeta := range pInfo.Models {
// Filter if used_only requested
if usedOnly && !usedModels[mID] {
// If usedOnly is true, only include if this exact (model, provider) was logged
if usedOnly && !usedPairs[fmt.Sprintf("%s:%s", mID, proxyProvider)] {
continue
}
@@ -1038,7 +1043,7 @@ func (s *Server) handleGetModels(c *gin.Context) {
result = append(result, gin.H{
"id": mID,
"name": mMeta.Name,
"provider": uiProvider,
"provider": proxyProvider, // Correctly normalized provider name
"enabled": enabled,
"prompt_cost": promptCost,
"completion_cost": completionCost,