Добавил реализацию

This commit is contained in:
av
2026-06-28 12:20:10 +03:00
parent 4f2fb5998a
commit d8ef7063f4
12 changed files with 731 additions and 39 deletions
+24 -14
View File
@@ -22,6 +22,7 @@ import (
"git.vakhrushev.me/av/jellybit/internal/llm"
"git.vakhrushev.me/av/jellybit/internal/logging"
"git.vakhrushev.me/av/jellybit/internal/metadata"
"git.vakhrushev.me/av/jellybit/internal/naming"
"git.vakhrushev.me/av/jellybit/internal/qbt"
"git.vakhrushev.me/av/jellybit/internal/recognize"
"git.vakhrushev.me/av/jellybit/internal/store"
@@ -62,7 +63,27 @@ func runServe(args []string) error {
return err
}
ingestor := ingest.New(st, qb, ingest.Config{
// LLM-провайдер (опц.) — общий для вывода имени и распознавания.
var llmProvider llm.Provider
if cfg.LLM.Type != "" && cfg.LLM.BaseURL != "" {
llmProvider, err = llm.New(llm.Config{
Type: cfg.LLM.Type,
BaseURL: cfg.LLM.BaseURL,
APIKey: cfg.LLM.APIKey,
Model: cfg.LLM.Model,
Proxy: cfg.LLM.Proxy,
Timeout: cfg.LLM.Timeout.Std(),
}, logger)
if err != nil {
return fmt.Errorf("llm provider: %w", err)
}
}
// Вывод отображаемого имени торрента из контекста (best-effort). Без LLM
// работает только алгоритмический фолбек.
namer := naming.New(llmProvider, cfg.LLM.MaxRetries, logger)
ingestor := ingest.New(st, qb, namer, ingest.Config{
Category: cfg.QBittorrent.Category,
SavePath: cfg.QBittorrent.SavePath,
}, logger)
@@ -79,19 +100,8 @@ func runServe(args []string) error {
// Ф2/Ф3: распознаватель и раскладчик. Если LLM не сконфигурирован,
// сервис работает как в Ф1 (completed-задачи дальше не двигаются).
var recognizer worker.Recognizer
if cfg.LLM.Type != "" && cfg.LLM.BaseURL != "" {
provider, perr := llm.New(llm.Config{
Type: cfg.LLM.Type,
BaseURL: cfg.LLM.BaseURL,
APIKey: cfg.LLM.APIKey,
Model: cfg.LLM.Model,
Proxy: cfg.LLM.Proxy,
Timeout: cfg.LLM.Timeout.Std(),
}, logger)
if perr != nil {
return fmt.Errorf("llm provider: %w", perr)
}
recognizer = recognize.New(provider, providers, recognize.Config{
if llmProvider != nil {
recognizer = recognize.New(llmProvider, providers, recognize.Config{
MaxRetries: cfg.LLM.MaxRetries,
AutoThreshold: cfg.Recognition.AutoConfidenceThreshold,
}, logger)