Go Wanwu:构建企业级AI Agent生态的万物互联框架
1. 项目概述
Wanwu (万物) 是一个基于 Go 语言开发的高性能、可扩展的 AI Agent(智能体)编排与执行框架。其核心目标是打破 AI 模型与物理世界/数字化业务系统之间的壁垒,通过标准化的接口定义,让大语言模型(LLM)能够像调用函数一样,精准地操控各种外部工具、API 及硬件设备。
在当前的 AI 浪潮中,单纯的对话机器人已无法满足企业需求。企业需要的是能够“执行任务”的 Agent。Wanwu 正是为了解决这一痛点而生,它提供了一套完整的机制,将 LLM 的推理能力与 Go 语言的并发处理能力相结合,构建出稳定、高效的自动化工作流。
2. 核心设计理念
Wanwu 的设计遵循了 “感知 \(\rightarrow\) 决策 \(\rightarrow\) 执行 \(\rightarrow\) 反馈” 的闭环逻辑:
- 解耦化设计:将 LLM 的模型层、工具定义层(Tool Definition)与执行层(Execution Layer)完全解耦。这意味着你可以随时更换底层的模型(如从 GPT-4 切换到 Claude 3 或本地 Llama 3),而无需修改业务逻辑。
- 强类型约束:利用 Go 语言的静态类型特性,为 AI 调用的工具提供严格的输入输出校验,有效降低 LLM 产生“幻觉”导致调用参数错误的问题。
- 插件化架构:支持快速扩展自定义 Tool,开发者只需实现特定的接口即可将任何内部 API 转化为 AI 可识别的能力。
- 状态管理:内置会话状态追踪,确保 Agent 在多轮对话中能够记住上下文,并维持任务执行的连续性。
3. 关键功能模块
3.1 Tool Registry (工具注册表)
这是 Wanwu 的核心。它允许开发者定义一个“工具集”,每个工具包含: * 名称:唯一标识符。 * 描述:告诉 LLM 这个工具在什么场景下使用(这是 Prompt Engineering 的关键)。 * 参数 Schema:定义输入参数的类型和含义。
3.2 Orchestrator (编排器)
编排器负责解析 LLM 的意图。当 LLM 返回一个 tool_call 请求时,编排器会:
1. 在注册表中匹配对应的工具。
2. 验证参数合法性。
3. 异步或同步地执行 Go 函数。
4. 将执行结果回传给 LLM 进行二次总结。
3.3 Connector (连接器)
Wanwu 提供了多种连接器,用于对接不同的 LLM 供应商(如 OpenAI, Azure, Anthropic 等)以及企业内部的 RPC/HTTP 服务。
4. 快速上手实例
为了直观展示 Wanwu 的能力,我们假设要构建一个“企业智能运维 Agent”,它能够查询服务器状态并重启服务。
场景定义
- 工具 A:
get_server_status(server_id)\(\rightarrow\) 返回 CPU/内存占用。 - 工具 B:
restart_service(server_id, service_name)\(\rightarrow\) 执行重启操作。
代码实现示例
package main
import (
"context"
"fmt"
"github.com/UnicomAI/wanwu" // 假设导入路径
)
// 1. 定义具体工具的执行逻辑
func GetServerStatus(ctx context.Context, args map[string]interface{}) (string, error) {
serverID := args["server_id"].(string)
// 模拟调用监控 API
return fmt.Sprintf("服务器 %s 当前 CPU 占用 95%%, 内存 80%%", serverID), nil
}
func RestartService(ctx context.Context, args map[string]interface{}) (string, error) {
serverID := args["server_id"].(string)
serviceName := args["service_name"].(string)
// 模拟执行重启脚本
return fmt.Sprintf("已成功重启服务器 %s 上的服务 %s", serverID, serviceName), nil
}
func main() {
// 2. 初始化 Wanwu 引擎
engine := wanwu.NewEngine(wanwu.Config{
Model: "gpt-4-turbo",
APIKey: "your-api-key",
})
// 3. 注册工具
engine.RegisterTool(&wanwu.Tool{
Name: "get_server_status",
Description: "获取指定服务器的实时运行状态,包括CPU和内存使用率",
Parameters: map[string]string{
"server_id": "服务器唯一标识符",
},
Handler: GetServerStatus,
})
engine.RegisterTool(&wanwu.Tool{
Name: "restart_service",
Description: "重启指定服务器上的特定服务",
Parameters: map[string]string{
"server_id": "服务器唯一标识符",
"service_name": "需要重启的服务名称",
},
Handler: RestartService,
})
// 4. 执行对话
userInput := "服务器 SRV-001 好像出问题了,帮我看看状态,如果 CPU 太高就重启一下 nginx 服务。"
response, err := engine.Chat(context.Background(), userInput)
if err != nil {
panic(err)
}
fmt.Println("Agent 回复:", response)
}
执行流程解析
- 用户输入 \(\rightarrow\) 引擎将输入及工具描述发送给 LLM。
- LLM 决策 \(\rightarrow\) LLM 识别出需要先调用
get_server_status。 - Wanwu 执行 \(\rightarrow\) 引擎调用 Go 函数
GetServerStatus\(\rightarrow\) 返回 “CPU 占用 95%“。 - LLM 二次决策 \(\rightarrow\) LLM 看到 CPU 过高,决定调用
restart_service。 - Wanwu 执行 \(\rightarrow\) 引擎调用
RestartService\(\rightarrow\) 返回 “已成功重启”。 - 最终输出 \(\rightarrow\) LLM 总结:“我已经为您检查了 SRV-001,发现 CPU 占用过高(95%),现已成功为您重启了 nginx 服务。”
5. Wanwu 的优势分析
| 维度 | 传统脚本/工作流 | 纯 LLM 对话 | Go Wanwu 框架 |
|---|---|---|---|
| 灵活性 | 低(硬编码路径) | 高(但无法执行) | 极高(动态决策+精准执行) |
| 稳定性 | 高 | 低(容易胡言乱语) | 高(强类型校验+Go 运行时) |
| 开发效率 | 低(需写大量 if-else) | 高(自然语言) | 中高(定义接口即可) |
| 并发能力 | 取决于语言 | 取决于 API | 极强(原生 Go 协程支持) |
6. 适用场景
- 智能运维 (AIOps):自动分析日志 \(\rightarrow\) 触发诊断工具 \(\rightarrow\) 执行修复脚本。
- 企业数字化助手:查询 ERP 数据 \(\rightarrow\) 生成报表 \(\rightarrow\) 通过邮件发送给主管。
- IoT 设备控制:通过自然语言控制智能家居或工业设备(如:“把 3 号车间的温度调低 2 度”)。
- 复杂业务 API 聚合:将数十个碎片化的内部 API 封装成一个统一的 AI 接口,降低前端调用复杂度。
7. 未来展望
随着 Agentic Workflow(智能体工作流)成为 AI 应用的主流,Wanwu 预计将在以下方向演进: * 多 Agent 协作:支持多个具有不同工具集的 Agent 相互协作完成复杂任务。 * 长期记忆增强:集成向量数据库(如 Milvus/Pinecone),使 Agent 具备领域知识库。 * 可视化编排:提供低代码界面,通过拖拽定义工具链条。
通过将 Go 语言的工程化能力与 LLM 的智能化能力深度融合,Wanwu 为开发者提供了一条从“对话机器人”走向“生产力工具”的快速通道。



还没有评论,来说两句吧...