基于 Rust 實現簡單、快速、輕量級的 AI Agent 框架 Rig
這幾天 AI Agent 生態進入爆發期,有個叫 Rig 非常搶眼,它是基于 Rust 構建的 AI 應用開發專業框架。與它類似還有個叫 ELIZA 框架,本文主要介紹 Rig。
什么是 Rig?
Rig(ARC) 是一個基于 Rust 優勢面向 LLM 工作流引擎的 AI 系統構建框架,目的是要解決更底層的性能優化問題。值得關注的一個框架。
Rig 進行 AI 開發優勢
選擇 Rig 可以更高效地開發,擁有著類型安全的 API ,可以減少運行是報錯,異步優先設計,讓你的資源得到最佳利用率。它與 Rust 生態如 Tokio、Serde 等無縫集成。
Rig 核心功能
- 統一 LLM 接口:支持跨不同 LLM 提供商的一致 API ,簡化集成和減少供應商的鎖定。
- Rust 驅動的卓越性能:基于 Rust 優勢,零成本抽象、內存安全、高性能的 LLM 操作。
- 高級 AI 工作流抽象:實施復雜的 AI system,比如 RAG 和多 Agent 設置,預構建的模塊化組件。
- 類型安全的 LLM 交互:基于 Rust 強類型系統來保障 LLM 交互的安全。
- 無縫對接 Vector Store 集成:內置對裁體存儲的支持,實現高效的相似性 AI 應用程序的搜索和檢索功能。
- 靈活的嵌入支持:提供易于使用的 API,用于處理嵌入,這對語義至關重要 搜索和基于內容的推薦。
Rig 野心是以 Rust 驅動性的性能、利用 Rust 優勢零成本抽象和內存安全、高性能、低延遲的 LLM 操作。當然要達到企業級商用化的標準框架,現在階段只是 AI Agent 生態的爆發期,至于落地商業化,需要加速邁向市場去驗證與反饋的。
如何快速上手 Rig
下面是官網幾個 Demo 。
basic_llm.rs
use rig::providers::openai;
use rig::completion::Prompt;
#[tokio::main]
async fn main() -> Result<()> {
let client = openai::Client::from_env();
let gpt4 = client.agent("gpt-4").build();
let response = gpt4.prompt("Translate 'Hello, world!' to French.").await?;
println!("Translation: {}", response);
Ok(())
}
rag_system.rs
use rig::providers::openai;
use rig::vector_store::in_memory_store::InMemoryVectorStore;
use rig::completion::Prompt;
#[tokio::main]
asyncfn main() -> Result<()> {
let client = openai::Client::from_env();
let embed_model = client.embedding_model("text-embedding-ada-002");
letmut store = InMemoryVectorStore::default();
let rag_agent = client.context_rag_agent("gpt-4")
.dynamic_context(1, store.index(embed_model))
.build();
let response = rag_agent.prompt("What is Rig?").await?;
println!("RAG Agent: {}", response);
Ok(())
}
extractor.rs
use rig::providers::openai;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, JsonSchema, Serialize)]
struct MovieReview {
sentiment: String,
rating: f32,
}
#[tokio::main]
asyncfn main() -> Result<()> {
let client = openai::Client::from_env();
let extractor = client.extractor::<MovieReview>("gpt-4").build();
let review = extractor.extract("I loved this movie! It's a solid 9/10.").await?;
println!("Extracted: {:?}", review);
Ok(())
}
高級功能
- 完全支持 LLM 完成和嵌入工作流程
- 對 LLM 提供程序(例如 OpenAI、Cohere)和向量存儲(例如 MongoDB、內存中)的簡單但強大的通用抽象
- 以最少的樣板將 LLM 集成到您的應用程序中
Rust 在AI時代會成為主流嗎?
最后,Rust 作為小眾語言,但擁有著別人沒有天生優勢,內存安全、零成本抽象、快速可靠,開發社區非常活躍。
在 AI 大模型時代,Rust 是否能夠運來新的突破,是否會大量采用于AI 大模型底層的開發,雖然前有C/C++,后有 Zig 這樣性能牛逼的語言。
最近,也開始看到了 AI Agent 和 AI Infra 有小規模爆發了,想要讓 AI Agent 繁榮發展,自然離不開 AI Infra 高性能的力量。
AI應用爆發式的增長,在模型訓練和推理必須得到大幅提升,算力成本和使用效率這兩個指標也變得至關重要了。否則會直接影響模型能力升級和AI應用大規模落地的速度。
盡管已有計算模型和框架比如 TensorFlow 和 PyTorch 也取得了非常好的成果。但在性能優化和資源管理方面存在很大問題,特別在大規模并行計算和高性能計算環境中,還是顯得有些力不從心的。
大佬看了很多問題,于是逐漸采用 Rust 重構一些新框架,如Candle、Burn、DFDX、tch-rs、Linfa、ndarray、Polars等框架的出現。以及 OpenAI 、Google、微軟等一些核心需要高性能,也換成了 Rust 來重構。
所以,未來打造高性能的 AI Infra 方向上,Rust 會有很大優勢。
參考資料:
- 官網:https://rig.rs
- https://docs.rs/rig-core/latest/rig
- Github:https://github.com/0xPlaygrounds/rig