diff --git a/config.example.yaml b/config.example.yaml index 296a859..bfd84ab 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -30,7 +30,7 @@ llm: - "openai" gemini: api_key: "" # or set LOGO_LLM_GEMINI_API_KEY env var - model: "gemini-2.5-flash" # free tier — 15 req/min + model: "gemini-2.5-flash-lite" # free tier — 1000 req/day vs flash's 20/day anthropic: api_key: "" # or set LOGO_LLM_ANTHROPIC_API_KEY env var model: "claude-sonnet-4-5-20250929" diff --git a/internal/config/config.go b/internal/config/config.go index 668c183..01972dd 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -96,7 +96,9 @@ func Load(configPath string) (*Config, error) { v.SetDefault("llm.provider_order", []string{"gemini", "anthropic", "openai"}) v.SetDefault("llm.anthropic.model", "claude-sonnet-4-5-20250929") v.SetDefault("llm.openai.model", "gpt-4o") - v.SetDefault("llm.gemini.model", "gemini-2.5-flash") + // flash-lite gets 1000 free req/day vs flash's 20 — and Wikidata covers + // the major-company case now, so LLM is mostly a long-tail fallback. + v.SetDefault("llm.gemini.model", "gemini-2.5-flash-lite") v.SetDefault("llm.rate_per_minute", 10) v.SetDefault("github.repos", []string{ "davidepalazzo/ticker-logos", diff --git a/internal/service/logo_service.go b/internal/service/logo_service.go index 5821388..89d679e 100644 --- a/internal/service/logo_service.go +++ b/internal/service/logo_service.go @@ -145,8 +145,12 @@ func (s *LogoService) acquire(ctx context.Context, symbol, companyName string) ( ) return result, nil } - s.logger.Debug("wikidata provider miss", + // Info (not Debug) so we can see in production whether Wikidata was + // even reachable for a given ticker and why it bailed (missing + // company_name vs no Q-entity vs no P154 vs download fail). + s.logger.Info("wikidata provider miss", zap.String("symbol", symbol), + zap.String("company_name", companyName), zap.Error(err), ) }