项目简介
Beluga AI是一个用Go语言编写的全面框架,专注于构建复杂的AI和代理应用程序。它提供统一的LLM集成、灵活的工具管理、RAG能力和强大的编排引擎,并支持REST和Model Context Protocol (MCP) 服务器功能,使其能够标准化地向LLM客户端提供上下文信息和功能。该框架已达到生产级标准,拥有完善的测试和可观测性。
主要功能点
- LLM集成: 支持OpenAI、Anthropic、Bedrock等多种大型语言模型服务提供商,提供统一的API接口。
- 代理构建: 提供灵活的框架和工具包,用于创建具备推理、规划和执行任务能力的自主AI代理。
- 工具管理: 允许您定义、集成和管理各种工具(如Shell命令、Go函数、外部API调用器),供AI代理在执行任务时调用。
- 记忆管理: 为AI代理提供多种记忆类型,支持包括内存缓冲、总结记忆和向量数据库(如pgvector, Pinecone)在内的多种后端,用于管理对话历史和上下文。
- RAG管道: 实现检索增强生成(Retrieval-Augmented Generation)流程,包括数据加载、文本分割、嵌入生成和信息检索组件,以提供更精准的上下文。
- 工作流编排: 定义和管理复杂的AI任务序列,支持Chain(链式)、Graph(图式)和Workflow(工作流)等多种编排模式。
- MCP服务器: 内置基于JSON-RPC协议的Model Context Protocol (MCP) 服务器实现,使AI功能和上下文能够以标准化、可扩展的方式被LLM客户端访问和使用。
- 可观测性: 全面集成OpenTelemetry,提供生产级的指标、分布式追踪和结构化日志功能,便于监控和故障排除。
安装步骤
- 确保Go环境就绪: 确保您的系统已安装Go 1.24+版本。您可以访问Go官方网站获取安装指南。
- 安装Beluga AI框架: 打开终端,运行以下Go命令来安装Beluga AI框架作为您的项目依赖:
go get github.com/lookatitude/beluga-ai - 准备您的应用程序: 您现在可以将Beluga AI作为库导入到您的Go项目中,并开始构建您的AI应用程序。
服务器配置
Beluga AI框架内置了MCP服务器实现。MCP客户端需要以下信息来连接和使用它。以下是一个MCP客户端配置示例的JSON格式说明(请根据您的实际部署情况修改):
{ "server_name": "Beluga AI MCP Server", "command": "/usr/local/bin/my_beluga_app", "args": ["server", "mcp", "--config", "/etc/beluga/config.yaml"] }
- 'server_name': 这是MCP服务器在客户端界面显示的名称,例如 "Beluga AI MCP Server"。
- 'command': 这是您的Beluga AI应用程序可执行文件的完整路径。例如,如果您使用'go build'命令构建了应用程序,该路径可能指向'./my_beluga_app'(在当前目录),或者在生产环境中指向如'/usr/local/bin/my_beluga_app'的全局路径。
- 'args': 这是启动MCP服务器时需要传递给可执行文件的命令行参数列表。
- '"server"': 这个参数告诉应用程序以服务器模式运行。
- '"mcp"': 这个参数指定服务器使用MCP协议进行通信。
- '"--config", "/etc/beluga/config.yaml"': (可选但强烈推荐)这个参数用于指定您的Beluga AI应用程序的配置文件路径。该文件可以定义LLM提供商的API密钥、模型名称、代理行为、工具注册信息以及内存和向量存储的连接设置。
请注意,上述路径和参数是示例。在实际部署时,您需要根据您的Go应用程序的构建方式、可执行文件的位置以及您的配置文件的存放路径进行准确的设置。
基本使用方法
要将Beluga AI作为MCP服务器使用,您需要遵循以下基本步骤:
-
编写您的Go应用程序: 在您的Go项目中,您将使用Beluga AI库来定义您的AI代理、注册工具、配置LLM等。例如,您可能有一个'main.go'文件来设置和启动所有组件:
package main import ( "context" "fmt" "os" "github.com/lookatitude/beluga-ai/pkg/agents" "github.com/lookatitude/beluga-ai/pkg/agents/tools" "github.com/lookatitude/beluga-ai/pkg/llms" "github.com/lookatitude/beluga-ai/pkg/server" // 导入服务器包 ) func main() { // 1. 初始化 Beluga AI 配置 (例如,LLM 提供商) // 实际应用中,这些配置会从config.yaml加载 llmConfig := llms.NewConfig( llms.WithProvider("mock"), // 使用mock进行演示,实际应为"openai", "anthropic"等 llms.WithModelName("demo-model"), llms.WithProviderSpecific("responses", []string{"Hello, I'm a Beluga AI agent."}), ) llmProvider, err := llms.NewFactory().CreateProvider("mock", llmConfig) if err != nil { fmt.Printf("Error creating LLM provider: %v\n", err) os.Exit(1) } // 2. 定义并注册您的工具 calculatorTool := tools.NewGoFunctionTool("calculator", "Calculates math expressions.", func(ctx context.Context, input string) (string, error) { // 真实的计算逻辑,这里简化为示例 return fmt.Sprintf("Result of %s is 42", input), nil }) // 框架内部会处理工具的注册机制 // 3. 定义并注册您的AI代理 // 代理将使用LLM和工具 myAgent := agents.NewBuilder(agents.NewAgentFactory()). WithName("math-solver-agent"). WithType("ReActAgent"). // 例如 ReActAgent WithLLM(llmProvider). WithTools([]agents.Tool{calculatorTool}). Build() // 框架内部会处理代理的注册机制 // 4. 配置并启动MCP服务器 // 假设您的应用程序有一个命令行解析器来处理 "server mcp" 命令 fmt.Println("Beluga AI应用程序已准备就绪。") fmt.Println("要启动MCP服务器,请在命令行中运行您的可执行文件,例如:") fmt.Println(" ./my_beluga_app server mcp --config /etc/beluga/config.yaml") // 这是一个概念性的示例,实际的服务器启动逻辑会由 'pkg/server' 包处理 // 并且通常由应用程序的 'main' 函数根据命令行参数进行调度。 // 例如,'server.Run(os.Args)' 可能会解析命令行参数并启动相应的服务器。 if len(os.Args) > 1 && os.Args[1] == "server" && os.Args[2] == "mcp" { fmt.Println("正在启动 Beluga AI MCP 服务器...") serverConfig := server.NewConfig() // 假设可以从环境变量或命令行参数加载 // 注册您的代理和工具到服务器 (具体API需参考pkg/server) // server.RegisterAgent(myAgent) // server.RegisterTool(calculatorTool) err := server.StartMCPServer(context.Background(), serverConfig) // 启动MCP服务器 if err != nil { fmt.Printf("MCP 服务器启动失败: %v\n", err) os.Exit(1) } fmt.Println("MCP 服务器已启动并监听请求。") // 保持服务器运行 select {} } else { fmt.Println("未检测到服务器启动命令。请使用 'server mcp' 参数启动MCP服务器。") } } -
构建您的应用程序: 在您的项目根目录中,使用Go命令构建您的应用程序。这将生成一个可执行文件:
go build -o my_beluga_app ./main.go(请将'./main.go'替换为您的实际主文件路径。)
-
运行MCP服务器: 在终端中执行您构建的应用程序,并传入启动MCP服务器所需的参数。请确保'config.yaml'文件存在于指定路径,并正确配置了LLM访问凭证等:
./my_beluga_app server mcp --config /etc/beluga/config.yaml此命令将启动Beluga AI MCP服务器,它将监听来自MCP客户端的JSON-RPC请求。一旦服务器运行,MCP客户端即可通过JSON-RPC协议与服务器通信,访问您定义的AI代理、工具和上下文数据。
关键词
AI框架, Go语言, AI代理, RAG, LLM集成
分类ID
1
信息
分类
开发者工具