Introduce multiple agents, tools, and utilities for processing, extracting, and answering user-provided questions using LLMs and external data. Key features include knowledge processing, question splitting, search term generation, and contextual knowledge handling.
34 lines
953 B
Go
34 lines
953 B
Go
package shared
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
// TidBit is a small piece of information that the AI has learned.
|
|
type TidBit struct {
|
|
Info string
|
|
Source string
|
|
}
|
|
|
|
type Knowledge struct {
|
|
// OriginalQuestions are the questions that was asked first to the AI before any processing was done.
|
|
OriginalQuestions []string
|
|
|
|
// RemainingQuestions is the questions that are left to find answers for.
|
|
RemainingQuestions []string
|
|
|
|
// Knowledge are the tidbits of information that the AI has learned.
|
|
Knowledge []TidBit
|
|
}
|
|
|
|
// ToMessage converts the knowledge to a message that can be sent to the LLM.
|
|
func (k Knowledge) ToMessage() string {
|
|
var learned []string
|
|
for _, t := range k.Knowledge {
|
|
learned = append(learned, t.Info)
|
|
}
|
|
return "Original questions asked:\n" + strings.Join(k.OriginalQuestions, "\n") + "\n" +
|
|
"Learned information:\n" + strings.Join(learned, "\n") + "\n" +
|
|
"Remaining questions:\n" + strings.Join(k.RemainingQuestions, "\n")
|
|
}
|