Plumb ctx through classifier and Ollama HTTP path
OllamaClient.Generate/GenerateText/call now take ctx and build the HTTP request via NewRequestWithContext, so an in-flight LLM call is aborted when the parent context is cancelled (Ctrl-C). Classifier.Classify and its tier helpers take ctx too. ProcessFunc gets a ctx parameter so the poller can forward its cancellable context down to classification. Explainer.summarize manages its own 60s context since reaction-driven flow has no parent ctx to inherit.
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
package explainer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"html"
|
||||
"log/slog"
|
||||
@@ -125,8 +126,11 @@ Rules:
|
||||
- Stick strictly to facts in the article. Do not speculate.`
|
||||
|
||||
func (e *Explainer) summarize(headline, body string) (string, error) {
|
||||
// Reaction-driven flow has no parent ctx; bound the LLM call ourselves.
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||
defer cancel()
|
||||
prompt := fmt.Sprintf("Headline: %s\n\nArticle body:\n%s", headline, body)
|
||||
out, err := e.ollama.GenerateText(summarySystem, prompt)
|
||||
out, err := e.ollama.GenerateText(ctx, summarySystem, prompt)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user