feat: add Gin HTTP API with SSE streaming chat

This commit is contained in:
2026-05-05 11:37:19 +08:00
parent a25de092b1
commit 6bbe013170
8 changed files with 377 additions and 10 deletions
+31 -5
View File
@@ -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)
}
}