NSXNO 是一个基于 Go 语言的项目,实现了一个能够通过 OpenAI API 与模型上下文协议(MCP)工具交互的 AI 代理。该代理可以处理自然语言查询并相应地执行工具,支持流式响应和并行工具调用。
- 集成 OpenAI 的 GPT 模型
- 支持模型上下文协议(MCP)工具
- 流式响应实现实时输出
- 并行工具执行能力
- 可扩展的代理架构
- Go 1.24.3 或更高版本
- 访问兼容 OpenAI 的 API 端点
- MCP 服务器端点
github.com/modelcontextprotocol/go-sdk v0.2.0github.com/openai/openai-go/v2 v1.11.0github.com/tidwall/gjson v1.18.0
-
克隆仓库:
git clone https://github.com/atopos31/nsxno.git cd nsxno -
安装依赖:
go mod tidy
应用程序需要设置几个环境变量:
OPENAI_BASE_URL: OpenAI API 的基础 URLOPENAI_API_KEY: 你的 OpenAI API 密钥OPENAI_MODEL: 要使用的模型(例如 gpt-4)TEST_MCP_BASE_URL: MCP 服务器端点
示例:
export OPENAI_BASE_URL="https://api.openai.com/v1"
export OPENAI_API_KEY="your-api-key-here"
export OPENAI_MODEL="gpt-4"
export TEST_MCP_BASE_URL="http://localhost:3000/mcp"运行应用程序:
go run main.go默认情况下,应用程序会让 AI 执行 "分两次获取一下198.199.77.16和115.190.78.97的ip归属地 两次之间分别回复我"(分两步获取 198.199.77.16 和 115.190.78.97 的 IP 归属地,并在两次操作之间进行回复)。
项目由两个主要组件构成:
-
主应用程序 (
main.go): 设置与 OpenAI API 和 MCP 服务器的连接,配置代理并运行交互循环。 -
代理实现 (
react/agent.go): 包含处理 AI 响应、处理工具调用和管理对话流程的核心逻辑。
Agent.Run(): 处理与 AI 对话的主执行循环McpToolHandler(): 通过与 MCP 服务器通信来处理工具调用ToolsFormMCP(): 将 MCP 工具转换为 OpenAI 工具格式- 支持流式响应处理和实时输出
欢迎提交贡献!请随时提交 Pull Request。
本项目采用 MIT 许可证 - 详情请见 LICENSE 文件。