73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/mudler/local-agent-framework/core/agent"
|
|
"github.com/mudler/local-agent-framework/core/state"
|
|
"github.com/mudler/local-agent-framework/pkg/llm"
|
|
rag "github.com/mudler/local-agent-framework/pkg/vectorstore"
|
|
"github.com/mudler/local-agent-framework/webui"
|
|
)
|
|
|
|
var testModel = os.Getenv("TEST_MODEL")
|
|
var apiURL = os.Getenv("API_URL")
|
|
var apiKey = os.Getenv("API_KEY")
|
|
var vectorStore = os.Getenv("VECTOR_STORE")
|
|
var timeout = os.Getenv("TIMEOUT")
|
|
var embeddingModel = os.Getenv("EMBEDDING_MODEL")
|
|
|
|
const defaultChunkSize = 4098
|
|
|
|
func init() {
|
|
if testModel == "" {
|
|
testModel = "hermes-2-pro-mistral"
|
|
}
|
|
if apiURL == "" {
|
|
apiURL = "http://192.168.68.113:8080"
|
|
}
|
|
if timeout == "" {
|
|
timeout = "5m"
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
// current dir
|
|
cwd, err := os.Getwd()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
stateDir := cwd + "/pool"
|
|
os.MkdirAll(stateDir, 0755)
|
|
|
|
var ragDB agent.RAGDB
|
|
lai := llm.NewClient(apiKey, apiURL+"/v1", timeout)
|
|
|
|
switch vectorStore {
|
|
case "localai":
|
|
laiStore := rag.NewStoreClient(apiURL, apiKey)
|
|
ragDB = rag.NewLocalAIRAGDB(laiStore, lai)
|
|
default:
|
|
var err error
|
|
ragDB, err = rag.NewChromemDB("local-agent-framework", stateDir, lai, embeddingModel)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
pool, err := state.NewAgentPool(testModel, apiURL, stateDir, ragDB, webui.Actions, webui.Connectors, timeout)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
app := webui.NewApp(webui.WithPool(pool))
|
|
|
|
if err := pool.StartAll(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
log.Fatal(app.Listen(":3000"))
|
|
}
|