Blades
面向 Go 的可扩展多模态智能体框架,用于组合模型、工具、记忆与工作流。
- Star 数
- ★ 815
- 最近更新
- 4 个月前
- License
- MIT
- 主语言
- Go
- FA 评分
- 23/100 · 缺口较多
30 秒速览
- 可在哪里用
- 通用 · 跨平台OpenAI API
- 开始前需要
- 典型场景
- Go 后端团队要在现有服务中调用 OpenAI 模型,实现多轮问答并读取 Agent 返回的文本。
- 主要局限
- README 未给出安装命令、Go 版本、模块版本或独立部署方案,首次接入需要自行补齐工程配置。
这个 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(...)。
- Go 后端团队要在现有服务中调用 OpenAI 模型,实现多轮问答并读取 Agent 返回的文本。
- 需要把多个 Agent 或 Chain 串联为多步骤推理流程的 Go 应用开发者。
- 要为模型接入数据库查询、API 调用等外部能力,并希望用 InputSchema 约束调用参数的团队。
- 需要按会话保存与搜索对话消息、让后续轮次保留上下文的应用。
- 希望在不改 Runner 核心逻辑的前提下加入日志、监控、认证或限流等中间件的工程团队。
如何安装或部署这个 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() 获取文本响应。
这个 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 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|
| Blades 当前 | 23 · 缺口较多 | ★ 815 | 4 个月前 | Go | OpenAI API |
| Agently AI 应用运行时 | 63 · 存在缺口 | ★ 1.7k | 11 天前 | Python | OpenAI API · Claude API |
| Dynamiq 智能体编排框架 | 61 · 存在缺口 | ★ 1.1k | 1 天前 | Python | OpenAI API |
| DSPy-Go | 49 · 缺口较多 | ★ 196 | 5 天前 | Go | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示仓库没有提供权限管理、用户确认、数据流透明、敏感数据处理、依赖安全、外部影响、回滚或来源归属的机制。所有相关标准均未在文件中体现,因此得分为0。
自一致性:README中概念描述与代码接口基本一致,但未提供完整代码验证,故得1分。依赖可用性:依赖项在go.mod中列出,但未验证其可用性,得1分。失败消息:未提供错误处理或失败消息的文档,得0分。
受众与场景:README明确面向Go开发者,并列举了多轮对话、思维链等场景,得2分。能力边界:描述了核心组件,但未明确边界,得1分。触发精度:未提供触发机制,得0分。环境适配:提供了环境变量配置示例,但未全面说明,得1分。
信息架构:README结构清晰,有架构图,得2分。安装说明:提供了快速开始示例,但未提供详细安装步骤,得1分。命名稳定性:接口命名稳定,但未提供版本历史,得1分。示例与FAQ:提供了示例代码,但无FAQ,得2分。已知限制:未明确列出,得1分。许可证:MIT许可证文件存在,得2分。版本与变更日志:无版本号或变更日志,得0分。维护责任:未明确维护者,得1分。
输出可用性:示例展示了输出,但未说明格式,得1分。边际价值:框架提供多模态支持,但未与其他方案对比,得1分。成本效益:未提供性能或成本数据,得1分。
声明可追溯性:README中的声明未提供具体证据,得1分。跨来源佐证:无外部验证,得0分。事实与推断分离:部分描述为推断,未明确区分,得1分。
- 源码中未见:最小权限约束只授予完成任务所需的权限:用专用账号或只读令牌,并限定可访问的目录和仓库。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:数据流向说明运行时观察它连接了哪些外部服务(代理或防火墙日志);弄清数据去向之前不要输入敏感数据。
- 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 源码中未见:外部影响披露先弄清它会写入、发送或修改哪些外部系统,用测试账号或测试仓库验证后再接入正式环境。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 源码中未见:来源归属可核验从官方仓库或包源安装,核对发布者和仓库地址,避免同名仿冒包。
- 仓库未提供任何安全机制,如权限控制、用户确认或数据流透明,使用前需自行评估风险。
- 依赖项未验证安全性,且无版本锁定,可能引入供应链风险。
- 无版本号或变更日志,难以追踪更新和兼容性。
- 未明确维护责任,长期维护性存疑。