llm mail integration
This commit is contained in:
39
internal/agents/research/agent.go
Normal file
39
internal/agents/research/agent.go
Normal file
@@ -0,0 +1,39 @@
|
||||
// research/agent.go – Research-Agent: wraps brain.AskQuery
|
||||
package research
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"my-brain-importer/internal/agents"
|
||||
"my-brain-importer/internal/brain"
|
||||
)
|
||||
|
||||
// Agent beantwortet Fragen mit der Wissensdatenbank.
|
||||
type Agent struct{}
|
||||
|
||||
func New() *Agent { return &Agent{} }
|
||||
|
||||
func (a *Agent) Handle(req agents.Request) agents.Response {
|
||||
if len(req.Args) == 0 {
|
||||
return agents.Response{Text: "❌ Keine Frage angegeben."}
|
||||
}
|
||||
question := strings.Join(req.Args, " ")
|
||||
|
||||
answer, chunks, err := brain.AskQuery(question)
|
||||
if err != nil {
|
||||
return agents.Response{Error: err, Text: fmt.Sprintf("❌ Fehler: %v", err)}
|
||||
}
|
||||
if len(chunks) == 0 {
|
||||
return agents.Response{Text: "❌ Keine relevanten Informationen in der Datenbank gefunden.\nFüge mehr Daten mit `/ingest` hinzu."}
|
||||
}
|
||||
|
||||
var sb strings.Builder
|
||||
fmt.Fprintf(&sb, "💬 **Antwort auf:** _%s_\n\n", question)
|
||||
sb.WriteString(answer)
|
||||
sb.WriteString("\n\n📚 **Quellen:**\n")
|
||||
for _, chunk := range chunks {
|
||||
fmt.Fprintf(&sb, "• %.1f%% – %s\n", chunk.Score*100, chunk.Source)
|
||||
}
|
||||
return agents.Response{Text: sb.String()}
|
||||
}
|
||||
Reference in New Issue
Block a user