summaryrefslogtreecommitdiff
path: root/bot.go
diff options
context:
space:
mode:
Diffstat (limited to 'bot.go')
-rw-r--r--bot.go65
1 files changed, 4 insertions, 61 deletions
diff --git a/bot.go b/bot.go
index bdf71b9..1367c02 100644
--- a/bot.go
+++ b/bot.go
@@ -23,8 +23,6 @@ import (
"strings"
"sync"
"time"
-
- "github.com/neurosnap/sentences/english"
)
var (
@@ -753,62 +751,6 @@ func sendMsgToLLM(body io.Reader) {
}
}
-func chatRagUse(qText string) (string, error) {
- logger.Debug("Starting RAG query", "original_query", qText)
- tokenizer, err := english.NewSentenceTokenizer(nil)
- if err != nil {
- logger.Error("failed to create sentence tokenizer", "error", err)
- return "", err
- }
- // this where llm should find the questions in text and ask them
- questionsS := tokenizer.Tokenize(qText)
- questions := make([]string, len(questionsS))
- for i, q := range questionsS {
- questions[i] = q.Text
- logger.Debug("RAG question extracted", "index", i, "question", q.Text)
- }
- if len(questions) == 0 {
- logger.Warn("No questions extracted from query text", "query", qText)
- return "No related results from RAG vector storage.", nil
- }
- respVecs := []models.VectorRow{}
- for i, q := range questions {
- logger.Debug("Processing RAG question", "index", i, "question", q)
- emb, err := ragger.LineToVector(q)
- if err != nil {
- logger.Error("failed to get embeddings for RAG", "error", err, "index", i, "question", q)
- continue
- }
- logger.Debug("Got embeddings for question", "index", i, "question_len", len(q), "embedding_len", len(emb))
- // Create EmbeddingResp struct for the search
- embeddingResp := &models.EmbeddingResp{
- Embedding: emb,
- Index: 0, // Not used in search but required for the struct
- }
- vecs, err := ragger.SearchEmb(embeddingResp)
- if err != nil {
- logger.Error("failed to query embeddings in RAG", "error", err, "index", i, "question", q)
- continue
- }
- logger.Debug("RAG search returned vectors", "index", i, "question", q, "vector_count", len(vecs))
- respVecs = append(respVecs, vecs...)
- }
- // get raw text
- resps := []string{}
- logger.Debug("RAG query final results", "total_vecs_found", len(respVecs))
- for _, rv := range respVecs {
- resps = append(resps, rv.RawText)
- logger.Debug("RAG result", "slug", rv.Slug, "filename", rv.FileName, "raw_text_len", len(rv.RawText))
- }
- if len(resps) == 0 {
- logger.Info("No RAG results found for query", "original_query", qText, "question_count", len(questions))
- return "No related results from RAG vector storage.", nil
- }
- result := strings.Join(resps, "\n")
- logger.Debug("RAG query completed", "result_len", len(result), "response_count", len(resps))
- return result, nil
-}
-
func roleToIcon(role string) string {
return "<" + role + ">: "
}
@@ -838,11 +780,12 @@ func showSpinner() {
time.Sleep(100 * time.Millisecond)
spin := i % len(spinners)
app.QueueUpdateDraw(func() {
- if toolRunningMode {
+ switch {
+ case toolRunningMode:
textArea.SetTitle(spinners[spin] + " tool")
- } else if botRespMode {
+ case botRespMode:
textArea.SetTitle(spinners[spin] + " " + botPersona)
- } else {
+ default:
textArea.SetTitle(spinners[spin] + " input")
}
})