基于 Rust 實現(xiàn)簡單、快速、輕量級的 AI Agent 框架 Rig
這幾天 AI Agent 生態(tài)進入爆發(fā)期,有個叫 Rig 非常搶眼,它是基于 Rust 構(gòu)建的 AI 應(yīng)用開發(fā)專業(yè)框架。與它類似還有個叫 ELIZA 框架,本文主要介紹 Rig。
什么是 Rig?
Rig(ARC) 是一個基于 Rust 優(yōu)勢面向 LLM 工作流引擎的 AI 系統(tǒng)構(gòu)建框架,目的是要解決更底層的性能優(yōu)化問題。值得關(guān)注的一個框架。
Rig 進行 AI 開發(fā)優(yōu)勢
選擇 Rig 可以更高效地開發(fā),擁有著類型安全的 API ,可以減少運行是報錯,異步優(yōu)先設(shè)計,讓你的資源得到最佳利用率。它與 Rust 生態(tài)如 Tokio、Serde 等無縫集成。
Rig 核心功能
- 統(tǒng)一 LLM 接口:支持跨不同 LLM 提供商的一致 API ,簡化集成和減少供應(yīng)商的鎖定。
- Rust 驅(qū)動的卓越性能:基于 Rust 優(yōu)勢,零成本抽象、內(nèi)存安全、高性能的 LLM 操作。
- 高級 AI 工作流抽象:實施復(fù)雜的 AI system,比如 RAG 和多 Agent 設(shè)置,預(yù)構(gòu)建的模塊化組件。
- 類型安全的 LLM 交互:基于 Rust 強類型系統(tǒng)來保障 LLM 交互的安全。
- 無縫對接 Vector Store 集成:內(nèi)置對裁體存儲的支持,實現(xiàn)高效的相似性 AI 應(yīng)用程序的搜索和檢索功能。
- 靈活的嵌入支持:提供易于使用的 API,用于處理嵌入,這對語義至關(guān)重要 搜索和基于內(nèi)容的推薦。
Rig 野心是以 Rust 驅(qū)動性的性能、利用 Rust 優(yōu)勢零成本抽象和內(nèi)存安全、高性能、低延遲的 LLM 操作。當(dāng)然要達到企業(yè)級商用化的標(biāo)準框架,現(xiàn)在階段只是 AI Agent 生態(tài)的爆發(fā)期,至于落地商業(yè)化,需要加速邁向市場去驗證與反饋的。
如何快速上手 Rig
下面是官網(wǎng)幾個 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、內(nèi)存中)的簡單但強大的通用抽象
- 以最少的樣板將 LLM 集成到您的應(yīng)用程序中
Rust 在AI時代會成為主流嗎?
最后,Rust 作為小眾語言,但擁有著別人沒有天生優(yōu)勢,內(nèi)存安全、零成本抽象、快速可靠,開發(fā)社區(qū)非?;钴S。
在 AI 大模型時代,Rust 是否能夠運來新的突破,是否會大量采用于AI 大模型底層的開發(fā),雖然前有C/C++,后有 Zig 這樣性能牛逼的語言。
最近,也開始看到了 AI Agent 和 AI Infra 有小規(guī)模爆發(fā)了,想要讓 AI Agent 繁榮發(fā)展,自然離不開 AI Infra 高性能的力量。
AI應(yīng)用爆發(fā)式的增長,在模型訓(xùn)練和推理必須得到大幅提升,算力成本和使用效率這兩個指標(biāo)也變得至關(guān)重要了。否則會直接影響模型能力升級和AI應(yīng)用大規(guī)模落地的速度。
盡管已有計算模型和框架比如 TensorFlow 和 PyTorch 也取得了非常好的成果。但在性能優(yōu)化和資源管理方面存在很大問題,特別在大規(guī)模并行計算和高性能計算環(huán)境中,還是顯得有些力不從心的。
大佬看了很多問題,于是逐漸采用 Rust 重構(gòu)一些新框架,如Candle、Burn、DFDX、tch-rs、Linfa、ndarray、Polars等框架的出現(xiàn)。以及 OpenAI 、Google、微軟等一些核心需要高性能,也換成了 Rust 來重構(gòu)。
所以,未來打造高性能的 AI Infra 方向上,Rust 會有很大優(yōu)勢。
參考資料:
- 官網(wǎng):https://rig.rs
- https://docs.rs/rig-core/latest/rig
- Github:https://github.com/0xPlaygrounds/rig