feat: add Gin HTTP API with SSE streaming chat
This commit is contained in:
@@ -1,18 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"eino-test/config"
|
||||
"eino-test/internal/agent"
|
||||
"eino-test/internal/api"
|
||||
"eino-test/internal/embedding"
|
||||
"eino-test/internal/index"
|
||||
"eino-test/internal/rag"
|
||||
"eino-test/internal/store"
|
||||
)
|
||||
|
||||
func main() {
|
||||
cfg := config.Load()
|
||||
noteStore := store.NewMemoryNoteStore()
|
||||
_ = noteStore
|
||||
ctx := context.Background()
|
||||
|
||||
log.Printf("Server starting on port %s (data dir: %s)", cfg.Port, cfg.DataDir)
|
||||
fmt.Println("Knowledge Assistant ready")
|
||||
noteStore := store.NewMemoryNoteStore()
|
||||
embedder, err := embedding.NewEmbedder(ctx, cfg.OpenAIAPIKey, cfg.OpenAIBaseURL, cfg.OpenAIEmbedModel)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create embedder: %v", err)
|
||||
}
|
||||
|
||||
vectorIdx := index.NewInMemoryVectorIndex()
|
||||
pipeline := rag.NewRAGPipeline(noteStore, embedder, vectorIdx)
|
||||
|
||||
if err := pipeline.IndexAllFromDir(ctx, cfg.DataDir); err != nil {
|
||||
log.Printf("Warning: failed to index notes: %v", err)
|
||||
}
|
||||
|
||||
supervisorAgent, err := agent.NewSupervisorAgent(ctx, cfg, pipeline)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create supervisor agent: %v", err)
|
||||
}
|
||||
|
||||
router := api.NewRouter(cfg, pipeline, supervisorAgent)
|
||||
|
||||
log.Printf("Server starting on port %s", cfg.Port)
|
||||
if err := router.Run(":" + cfg.Port); err != nil {
|
||||
log.Fatalf("Failed to start server: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user