0xPlaygrounds/rig
⚙️🦀 Build modular and scalable LLM Applications in Rust
什么是 Rig?
Rig 是一个基于 Rust 的生态系统,用于构建和运行使用大型语言模型(LLM)的应用。它由两部分组成:
rig库 – 一组 crate,提供与提供商无关的 API,用于补全、嵌入、音频/图像生成、向量存储、工具契约、内存处理和 OpenTelemetry 语义。rig终端代理 – 一个基于 Bevy 游戏引擎的命令行“编码代理”。该代理可以通过plugins.toml文件中的插件(工具、命令、UI 面板)进行扩展。
两者都是开源的,发布在 crates.io 上,并针对 Linux/macOS 和 Rust 1.97+。
主要特性(如 README 中所述)
| 领域 | 详情 |
|---|---|
| 插件架构 | 所有内容——登录、模型选择、工具、终端 UI——都是 Bevy 插件。您可以在不触及核心的情况下添加、替换或移除插件。 |
| 自重建代理 | /reload 命令使用任何插件更改重新编译代理,并在同一会话中重启它,如果编译失败则回退到之前的构建。 |
| 可脚本化 / 管道友好 | rig -p --json 和 rig --json 在标准输出上输出 JSON,允许其他程序通过管道驱动代理。help-agents 命令记录了该协议。 |
| 丰富的工具集 | 内置工具用于读写文件、编辑代码、搜索、运行 shell 命令和远程 SSH 执行。其他工具可以作为插件添加。 |
| 模型和向量存储集成 | 20+ 模型提供商(OpenAI、AWS Bedrock、Gemini 等)和 10+ 向量存储后端(LanceDB、Qdrant、Milvus、SQLite、MongoDB、Neo4j 等)通过单一接口暴露。 |
| 代理能力 | 多轮流式、类型化钩子、工具使用、带压缩的内存窗口、检查点,以及通过 rig-cassette crate 进行重放。 |
| 跨平台运行时 | 核心和代理运行时编译到 wasm32-unknown-unknown,支持基于浏览器的使用。 |
| 可观测性 | 发出 OpenTelemetry GenAI 语义约定,用于追踪和指标。 |
入门指南
安装终端代理
cargo install rig
rig # 启动交互式编码代理
登录:/login chatgpt 或设置 API 密钥环境变量(例如 OPENAI_API_KEY)。
选择模型:/model。
一次性提示:rig -p "修复失败的测试"。
在您自己的 Rust 代码中使用该库
# Cargo.toml
[dependencies]
rig = "0.44"
use rig::prelude::*;
use rig::providers::openai::{self, OpenAI};
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let model = OpenAI::from_env()?.completion(openai::GPT_6_1_SOL);
let agent = AgentBuilder::new(model)
.preamble("You are a comedian …")
.build();
let resp = agent.prompt("Entertain me!").await?;
println!("{}", resp.output());
Ok(())
}
注意:添加 tokio 并启用 macros,rt-multi-thread 特性。
Crate 概览
| Crate | 用途 |
|---|---|
rig-core |
提供商中性的数据结构、模型/嵌入契约、工具接口。 |
rig-agent |
构建器、提示、流式、钩子、可序列化的运行日志。 |
rig-memory |
对话窗口、压缩、持久化。 |
rig-cassette |
代理效果的记录/重放、检查点。 |
rig-tools |
常用编码工具(读取、写入、编辑、搜索、shell)。 |
rig-ecs / rig-harness |
Bevy ECS 内核和编码代理的插件框架。 |
rig-tui / rig-basics |
默认终端 UI 和基线插件。 |
集成 crate(例如 rig-bedrock、rig-lancedb、rig-fastembed 等) |
可选功能,引入特定的模型提供商或向量存储后端。 |
社区与生态系统
- 文档 – https://rig.rs/docs 和 docs.rs 上的 API 参考。
- Discord – https://discord.gg/playgrounds 用于提问和想法。
- Awesome 列表 – https://github.com/0xPlaygrounds/awesome-rig 收集基于 Rig 构建的项目。
- 许可证 – MIT。
- 稳定性 – 预 1.0;每个版本可能包含破坏性更改(参见
CHANGELOG.md和MIGRATING.md)。
谁可能使用这个?
- 想要一个类型安全、模块化框架来构建 LLM 驱动工具的 Rust 开发者。
- 构建编码助手、基于聊天的代理或 RAG 管道的团队,需要自定义工具和持久内存。
- 任何希望尝试多种模型提供商或向量存储而无需切换语言的人。
结论
Rig 是一个真正的、面向生产的 Rust 库和配套终端代理,用于构建 LLM 应用。其插件优先的设计、广泛的提供商/向量存储支持以及内置的可观测性,使其成为喜欢 Rust 并希望深度控制其 AI 代理的开发者的坚实基础。
相关
- 项目
- 项目
- 项目
- 项目
- 项目