开发与工程 golangmultimodalworkflow-orchestrationstructured-outputconversation-memorymiddleware

Blades

面向 Go 的可扩展多模态智能体框架,用于组合模型、工具、记忆与工作流。

FollowAgents 评估 · FARS-2.0
待评估
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Blades 是一个 Go 语言多模态 AI Agent 框架,而非独立托管的聊天产品。其统一的 Agent 执行接口以 Run(context.Context, *Invocation) 返回 Generator[*Message, error],Agent、Chain 和 ModelProvider 可据此组合。框架提供可插拔的 ModelProvider、Tool、Memory 与 Middleware,并以 flow 编排多步骤推理和多个 Agent 的数据、控制流。输出既可通过 Generate 一次性获得,也可通过 NewStreaming 逐步消费;示例展示了在应用代码中接入 OpenAI 模型并由 Runner 执行。它适合希望在 Go 服务或应用内自行实现智能体逻辑的团队,README 未说明独立部署服务、CLI 或安装命令。

应用先创建如 openai.NewModel("gpt-5", openai.Config{APIKey: os.Getenv("OPENAI_API_KEY")}) 的 ModelProvider,再用 blades.NewAgent 配置 WithModel 与 WithInstruction。调用方构造 blades.UserMessage,使用 blades.NewRunner(agent).Run(context.Background(), input) 执行,并从返回的消息读取 Text()。在需要扩展时,Agent 可通过 Tool 的 InputSchema 和 Handle 调用封装后的外部能力;Memory 可按会话保存和检索消息,Middleware 可在 Runner 执行链中加入横切逻辑。技能可由 skills.NewFromDir("./skills") 或 skills.NewFromEmbed(embed.FS) 加载后传给 WithSkills(...)。

  1. Go 后端团队要在现有服务中调用 OpenAI 模型,实现多轮问答并读取 Agent 返回的文本。
  2. 需要把多个 Agent 或 Chain 串联为多步骤推理流程的 Go 应用开发者。
  3. 要为模型接入数据库查询、API 调用等外部能力,并希望用 InputSchema 约束调用参数的团队。
  4. 需要按会话保存与搜索对话消息、让后续轮次保留上下文的应用。
  5. 希望在不改 Runner 核心逻辑的前提下加入日志、监控、认证或限流等中间件的工程团队。

这个 Agent 有哪些优点和局限?

优点
  • 以统一 Agent 接口和 Generator 输出模型连接 Agent、Chain 与 ModelProvider,便于组合执行单元。
  • ModelProvider 是可插拔抽象,README 明确以 OpenAI、DeepSeek、Gemini 等不同模型服务为可集成对象。
  • 同时覆盖 Tool、会话记忆、流式生成和 Middleware,适合把智能体能力嵌入 Go 应用。
  • 技能既可从目录加载,也可通过 embed.FS 打包进程序。
局限
  • README 未给出安装命令、Go 版本、模块版本或独立部署方案,首次接入需要自行补齐工程配置。
  • OpenAI 示例依赖网络访问和 OPENAI_API_KEY,模型调用的成本与可用性取决于所选服务商。
  • 持久化记忆和更复杂的记忆策略被鼓励由开发者扩展,README 只明确提供 InMemory 实现。
  • 没有展示 CLI、HTTP 服务接口或生产运维配置,团队需自行定义应用入口和运行边界。

如何安装或部署这个 Agent?

README 未提供可复制的安装命令、Go 版本要求或模块初始化步骤,因此无法据此确认依赖安装流程。已明确的运行前提是 Go 环境,以及使用 OpenAI 示例时设置 OPENAI_API_KEY;还需要让项目能够导入 github.com/go-kratos/blades 和 github.com/go-kratos/blades/contrib/openai。

如何使用这个 Agent?

在 Go 程序中读取 OPENAI_API_KEY,创建 openai.NewModel("gpt-5", openai.Config{APIKey: os.Getenv("OPENAI_API_KEY")}),然后以 blades.NewAgent("Blades Agent", blades.WithModel(model), blades.WithInstruction("You are a helpful assistant that provides detailed and accurate information.")) 创建 Agent。用 blades.UserMessage("What is the capital of France?") 创建输入,再执行 runner := blades.NewRunner(agent) 和 runner.Run(context.Background(), input)。检查 err 后,对返回结果调用 output.Text() 获取文本响应。

常见问题

它能直接作为聊天服务部署吗?
README 将其描述为 Go 框架,并展示在 Go 程序中创建 Agent 和 Runner;未提供独立聊天服务或部署命令。
是否只能使用 OpenAI?
不是。README 将 ModelProvider 设计为可插拔接口,并列举 OpenAI、DeepSeek、Gemini 等可集成的模型服务;但具体接入代码需由应用提供。
使用 OpenAI 示例需要什么凭据?
示例通过环境变量 OPENAI_API_KEY 读取 API 密钥。
对话上下文如何保存?
Memory 接口用于存储和检索消息,并支持按会话管理;README 明确提到 InMemory 实现,持久化存储需自行扩展。

相关 Agents