Files
aichat/main.go
T
2026-06-17 11:29:51 +08:00

65 lines
1.7 KiB
Go

package main
import (
"fmt"
"os"
"strings"
searchagent "aichat/agents/search"
sqlquery "aichat/agents/sql"
"aichat/config"
"aichat/conversation"
"aichat/llm"
"aichat/server"
"aichat/toolrouter"
)
func main() {
cfg, legacySearchProfiles, err := config.Load("config.yaml")
if err != nil {
fmt.Fprintln(os.Stderr, "配置加载失败:", err)
os.Exit(1)
}
// 初始化火山方舟 SDK 客户端
aiState, err := llm.NewState(cfg.OpenAI)
if err != nil {
fmt.Fprintln(os.Stderr, "OpenAI 配置初始化失败:", err)
os.Exit(1)
}
searchConfig, err := searchagent.LoadConfig("agents/search/config.yaml", legacySearchProfiles)
if err != nil {
fmt.Fprintln(os.Stderr, "联网搜索配置加载失败:", err)
os.Exit(1)
}
searchState, err := searchagent.NewState(searchConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "联网搜索初始化失败:", err)
os.Exit(1)
}
sqlConfig, err := sqlquery.LoadConfig("agents/sql/config.yaml")
if err != nil {
fmt.Fprintln(os.Stderr, "SQL 查询插件配置加载失败:", err)
os.Exit(1)
}
sqlState, err := sqlquery.NewState(sqlConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "SQL 查询插件初始化失败:", err)
os.Exit(1)
}
defer sqlState.Close()
toolRouterState, err := toolrouter.NewState(&cfg.ToolRouter, aiState)
if err != nil {
fmt.Fprintln(os.Stderr, "工具路由配置初始化失败:", err)
os.Exit(1)
}
store := conversation.NewStore("conversations")
app := server.New(cfg, aiState, searchState, sqlState, toolRouterState, store)
cfg.Server.Mode = strings.ToLower(cfg.Server.Mode)
if err := app.Run(); err != nil {
fmt.Fprintln(os.Stderr, "服务异常退出:", err)
os.Exit(1)
}
}