65 lines
1.7 KiB
Go
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)
|
|
}
|
|
}
|