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