ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Rig:用 Rust 构建模块化、可扩展 LLM 应用的统一框架实战指南

Rig:用 Rust 构建模块化、可扩展 LLM 应用的统一框架实战指南 AI AgentAgent 框架RAG后端【免费下载链接】rig⚙️ Build modular and scalable LLM Applications in Rust项目地址https://gitcode.com/GitHub_Trending/rig2/rig点击查看免费下载导读本文以 rig 官方 README 为骨架系统讲解这个 Rust LLM 应用框架的核心理念、架构分层、快速上手路径与完整集成矩阵。读完你将掌握如何在几行代码内通过统一接口接入 20 模型提供商与 10 向量数据库、如何理解rig-core可移植契约层与rig-agent经典 Agent 运行时的职责边界、如何用cassette特性实现免 API Key 的请求录制与回放以及如何借助仓库源码与测试体系验证每个结论。Rig 是什么Rig 是一个用于构建**可扩展scalable、模块化modular、符合人体工程学ergonomic**的 LLM 应用的 Rust 库。它解决的核心痛点是LLM 生态中模型提供商、向量数据库、工具协议碎片化严重应用层代码往往被某个厂商的 SDK 绑定。Rig 通过一层单一统一接口one singular unified interface把这种复杂性收口让开发者用最少的样板代码minimal boilerplate把 LLM 能力集成进应用。仓库根目录的 Cargo.toml 中这个库的自我描述是 An opinionated library for building LLM powered applications——它有明确的设计主张而不是一个什么都收的中立适配层。核心特性一览根据 README.md 与仓库源码Rig 的特性可以归纳为以下几组Agentic 工作流支持多轮multi-turn流式对话与提示词编排内置经典 Agent 运行时默认启用并提供可序列化的AgentRun状态机见下文运行时选择。统一模型接口20 模型提供商全部收敛到同一套Model契约之下10 向量存储集成共享同一套VectorStoreIndex契约。全能力覆盖不仅支持 completion 与 embedding 工作流还覆盖转录transcription、音频生成audio generation与图像生成image generation三类多模态能力。可观测性完整兼容 GenAI Semantic Convention。浏览器 WASM 支持可移植核心portable core与经典运行时支持wasm32-unknown-unknown无需任何 wasm feature flag详见 crates/rig-agent/README.mdWASI 不支持rig-rmcp/MCP 仅限原生平台。需要提醒的是README 顶部有一则显著的WARNING项目处于快速迭代期未来更新将包含破坏性变更breaking changesRig 会随演进标注变更并给出迁移路径。计划用于生产环境时应关注 CHANGELOG.md 与 MIGRATING.md。运行时选择rig-core 与 rig-agent 的职责分层Rig 的架构精髓在于把与具体提供商相关的可移植契约和Agent 编排逻辑彻底分离这是理解整个框架的钥匙。rig-core提供者无关的契约层crates/rig-core/src/lib.rs 的模块头注释定义得很清楚rig-core包含**提供者中立provider-neutral**的消息模型、completion 模型、可移植与上下文相关的工具契约、memory 与向量存储契约以及内置的提供商映射。具体来说Model/DynModel一个Model把端点线wire绑定到传输层transportDynModel是擦除到操作层面的模型便于消费者持有。providers模块从源码 crates/rig-core/src/providers/mod.rs 可以看到内置客户端的完整清单——anthropic、azure、chatgpt、cohere、copilot、deepseek、gemini、groq、huggingface、llamacpp、mistral、ollama、openai、openrouter、perplexity、together、venice、voyageai、xai 等。每个客户端如openai::OpenAI持有配置与传输负责构建它服务的模型。driver、operation、serve、effect、tool、memory、vector_store等模块提供底层运行契约。rig-agent经典 Agent 运行时rig-agent包含经典 builder、prompt/streaming trait、类型化 hooks、实时工具注册表live tool registry、抽取extraction以及可序列化的AgentRun状态机。该运行时默认启用。从源码结构crates/rig-agent/src/agent可以看到 builder、drive、engine、hook、runner、streaming、telemetry 等完整实现模块。根 facaderig的再导出根包 src/lib.rs 是整仓库的 facade门面把rig_core再导出为rig::...路径并在默认agent特性下把rig_agent的运行时再导出为rig::agent。因此大多数代码只需要依赖rig一个 crate。README 明确指出需要按特性feature-gated访问伴生 crate 时使用根rigfacade只需要核心提供商抽象时可以直接使用rig-core。两个 Agent 运行时经典运行时与 ECS 运行时共享同一个 adapter 来执行Model。ECS 检查点checkpoint保留的是执行状态与 handler 描述符不是提供商的启动配方恢复时会对照原始保存的契约显式校验完整 handler 集合或接受有意的替换。效果回放effect replay使用已记录的 handler不需要现场构造提供商——详细契约见 crates/rig-ecs/CONTRACT.md。快速开始README 给出的依赖添加方式有两种按需选择cargo add rig # or: cargo add rig-core其中cargo add rig会启用默认特性。查看 Cargo.toml 的[features]段可以确认默认集是[rig-core/default, reqwest, agent, derive, rustls]——即内置 reqwest 传输、经典 Agent 运行时、rig_tool派生宏与 rustls TLS 栈。仓库还提供了丰富的可运行示例见 examples 目录每个示例是一个独立 Cargo 包以及各 crate 自己的examples目录提供商测试覆盖与 cassette 命令说明见 tests/README.md。最小可用示例README 给出了一个基于 OpenAI 的完整示例这是理解 Rig 用法的最佳起点use rig::prelude::*; use rig::providers::openai::{self, OpenAI}; #[tokio::main] async fn main() - Result(), anyhow::Error { // The client reads OPENAI_API_KEY and builds the models it serves. let model OpenAI::from_env()?.completion(openai::GPT_5_2); let comedian_agent AgentBuilder::new(model) .preamble(You are a comedian here to entertain the user using humour and jokes.) .build(); // Prompt the agent and print the response let response comedian_agent.prompt(Entertain me!).await?; println!({}, response.output); Ok(()) }逐行解读这条调用链OpenAI::from_env()?读取OPENAI_API_KEY环境变量构造客户端。根据 src/lib.rs 中reqwest特性的注释未显式指定传输的提供商客户端OpenAI::from_env()会通过内置的共享 reqwest 客户端发送请求with_http则可为其他HttpClientExt挂载自定义客户端。.completion(openai::GPT_5_2)从客户端构建一个 completion 模型模型标识符是rig-core内置提供商映射的一部分。AgentBuilder::new(model)把模型注册为标签defaultbuilder 源码见 crates/rig-agent/src/agent/builder.rs 中的AgentBuilder::new它内部调用named_model(default, model)。.preamble(...)设置系统提示词system prompt。.build()在构建期完成所有 handler 注册——默认模型、工具、memory、检索索引等都会在 agent 的 owner 标签下被铸造出稳定的 key形如owner/model:label、owner/memory、owner/retrieve:context#n。.prompt(...)阻塞式提示返回TypedPromptResponse其output字段携带模型回复文本。README 特别提醒使用#[tokio::main]需要启用 tokio 的macros和rt-multi-thread特性或直接启用fullcargo add tokio --features macros,rt-multi-thread对应仓库中 examples/agent/src/main.rs 是一个去掉注释的最小可运行版本examples目录每个包独立可跑cargo run -p agent即可体验完整的 provider/client/agent/prompt 流程。AgentBuilder 的完整配置面结合 builder 源码AgentBuilder还提供以下高频配置项足以覆盖大多数应用场景方法作用说明name/description为 agent 命名与描述命名 agent 会获得跨进程稳定的 key便于 replaypreamble/append_preamble/without_preamble设置 / 追加 / 清除系统提示词追加用段落方式拼接context添加静态上下文文档文档自动获得static_doc_niddynamic_context(samples, index)每次提示前从向量索引检索samples条文档注入上下文通过 agent 总线上的检索 handler 实现tool/dynamic_tool/retrieved_tools注册工具支持类型化工具、运行时定义工具与按请求检索的工具tool_choice设置工具选择策略ToolChoice类型来自 completion 消息模型default_max_turns设置默认最大轮数temperature/max_tokens采样温度与输出 token 上限output_schemaT/output_mode用 JSON Schema 约束结构化输出T: JsonSchema由schemars生成memory/conversation挂载会话记忆后端与对话 idmemory handler 注册在 agent 的 memory key 下model_route(label, model)注册可路由的备用模型配合using_model(label)或路由 hook 使用add_hook添加类型化 hook例如on_completion_call、on_model_selectrecord_to(recorder)挂接效果日志录制器见下文Recording and replay注意AgentBuilder使用 typestate 模式NoToolConfig/WithBuilderTools/WithToolServerHandle三种状态在编译期约束builder 自带工具与共享工具服务器二选一避免运行期歧义。Recording and replay免 API Key 的录制回放这是 README 中一个非常实用的进阶能力。启用cassette特性后rig::cassette::effect_log提供日志、录制器、回放 handler 与检查点checkpoint四种设施。核心用法持有一个EffectLogRecorder句柄通过AgentBuilder::record_to挂接它的 clone见 builder 源码中record_to的签名——它要求Recorder Send Sync因为回复观察者会跨总线的线程安全通道导入rig::cassette::agent::AgentReplayExt来给日志盖章或检查回放兼容性。对于不需要传输层transport-free的消费者README 建议直接依赖rig-cassette并关闭默认特性。其可选agent与ecs适配器彼此独立、也与原生http引擎相互独立两个运行时都不依赖具体日志 crate。完整的依赖保证、ECS 回放安装与迁移路径见 crates/rig-cassette/README.md。从 Cargo.toml 可以确认cassette特性是[dep:rig-cassette]属于 opt-inrig-cassette在 workspace 依赖中默认关闭特性default-features false需要按需开启agent/ecs/http。这一能力与仓库庞大的测试体系深度绑定tests/README.md 描述了 cassette 优先cassette-first的测试方针——录制好的真实提供商流量是默认证据通过RIG_PROVIDER_TEST_MODEreplay可以在零 API Key、零成本下回放 anthropic、bedrock、openai、gemini 等 18 个提供商的 cassette 测试套件cargo xtask cassette record系列命令则管理录制、扫描敏感信息、审计 golden 与清理尝试账本。支持的集成一张特性矩阵Rig 把每一个伴生 crate 都收敛为根 facade 的一个特性开关示例配置rig { version 0.36.0, features [lancedb, fastembed] }当前仓库 workspace 版本为0.42.0见 Cargo.toml 的[workspace.package]以下表格为 README 原文继承。IntegrationCrateFeatureModule pathAWS Bedrockrig-bedrockbedrockrig::bedrockAWS S3Vectorsrig-s3vectorss3vectorsrig::s3vectorsCandle (local Llama/SmolLM2/Qwen3 tools, YOLOv8 pose)rig-candlecandlerig::candleCloudflare Vectorizerig-vectorizevectorizerig::vectorizeFastEmbedrig-fastembedfastembedrig::fastembedGoogle Gemini gRPCrig-gemini-grpcgemini-grpcrig::gemini_grpcGoogle Vertex AIrig-vertexaivertexairig::vertexaiHelixDBrig-helixdbhelixdbrig::helixdbLanceDBrig-lancedblancedbrig::lancedbMemory policiesrig-memorymemoryrig::memoryMilvusrig-milvusmilvusrig::milvusMongoDBrig-mongodbmongodbrig::mongodbNeo4jrig-neo4jneo4jrig::neo4jPostgreSQLrig-postgrespostgresrig::postgresQdrantrig-qdrantqdrantrig::qdrantScyllaDBrig-scylladbscylladbrig::scylladbSQLiterig-sqlitesqliterig::sqliteSurrealDBrig-surrealdbsurrealdbrig::surrealdbTypeSafe Jev (experimental judgments)rig-typesafeaitypesafeairig::typesafeai两点补充说明README 原文要点rig::memory不需要memory特性即可使用它包含核心会话记忆 trait 与从rig-core再导出的内存后端开启features [memory]才会把rig-memory伴生 crate 提供的可复用历史塑形history-shaping策略类型加入到同一模块。另有一个关联 craterig-onchain-kitRig Onchain Kit目标是让 Solana/EVM 与 Rig 的交互更易实现属于额外功能扩展。这些伴生模块在 facade 中的映射方式可以对照 src/lib.rs 里的companion_modules!宏——每个模块由对应特性门控例如bedrock rig_bedrock [bedrock]、fastembed由fastembed/fastembed-hf-hub/fastembed-ort-download-binaries三个特性中的任意一个启用。生态与生产实践参考README 还列举了一批实际使用 Rig 的公司与开源项目涵盖医疗可视化工具St Jude 的 proteinpaint、终端编码 AgentVT Code、GPU 加速终端模拟器Con、去中心化 AI 网络Dria、事件驱动框架Nethermind NINE、Neon 的 app.build、AI 投资组合管理框架Listen、智能搜索Cairnify、视觉 AI 工作区Ryzome、安全个人 AI 助手Ironclaw、事件管理平台ilert等。这些是项目官方声明的使用者可作为生态成熟度的参考但本文不据此做任何最强/最佳之类的定性结论。若你的团队也在生产中使用 Rig可以在仓库提出 issue 把自己的名字加入该列表更多项目、库、工具与文章收录在官方维护的 awesome-rig 清单中。总结Rig 的工程设计思路可以概括为三层rig-core 定契约、rig-agent 定编排、根 facade 收口特性。上手路径是cargo add rig→AgentBuilder::new(model)→.build()→.prompt()进阶路径是借助cassette特性把提供商交互固化为可回放的效果日志再配合rig-ecs的检查点恢复实现可持久化的 Agent 执行。仓库根目录的 examples 目录40 个可运行示例覆盖多 Agent、RAG、工具调用、流式、OTel 观测、本地 Candle 推理、WASM 等场景与 tests/README.md 描述的测试矩阵是深入验证这些能力的首选入口。赞分享AI AgentAgent 框架RAG后端【免费下载链接】rig⚙️ Build modular and scalable LLM Applications in Rust项目地址https://gitcode.com/GitHub_Trending/rig2/rig点击查看免费下载相关推荐LibreHardwareMonitor 硬件监控完全指南温度、风扇与电压一次读全LibreHardwareMonitor 硬件监控完全指南温度、风扇与电压一次读全 视频渲染到一半机箱风扇疯狂嘶吼您却猜不到是哪块硬件在发烫。LibreH指标监控Angular Components模块化设计构建可扩展应用架构Angular Components模块化设计构建可扩展应用架构 在现代Web开发中构建可扩展的应用架构是前端工程师面临的核心挑战。Angular作为一个全前端UI组件设计系统Yi大语言模型深度实战四维技术栈构建企业级AI应用Yi大语言模型深度实战四维技术栈构建企业级AI应用 在AI技术快速迭代的今天如何选择合适的大语言模型并将其有效部署到生产环境成为技术团队面临的核心挑战。Y大模型微调模型量化多模态本地部署上一篇Universal Android Debloater免 root 清理 Android 预装应用完整教程下一篇如何彻底告别网盘限速网盘直链下载助手终极实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表