導讀:構建可以與 Llama 3.2 等先進大語言模型進行聊天的 CLI 。瞭解 Rust 和 Ollama 庫如何讓這一切變得輕而易舉。
作為一名學習 Rust 的開發人員,我想構建一個實用專案來應用我的新技能。隨著 Anthropic 的 Llama 3.2 等大型語言模型的興起,我認為建立一個 Rust 命令列介面 (CLI) 來與模型互動會非常有趣。
僅用幾分鐘,我就能夠使用 Ollama Rust 庫組裝一個可用的 CLI。這個CLI被我稱為“Jarvis”,它允許您與 Llama 3.2 聊天,以及執行一些基本命令,例如檢查時間、日期和列出目錄內容。
在這篇文章中,我將介紹 Jarvis CLI 的關鍵元件,並解釋如何使用Rust與 Llama 3.2 或其他大型語言模型進行互動。最後,您將看到 Rust 的效能和表現力如何使其成為 AI 應用程式的絕佳選擇。
Jarvis CLI 結構
Jarvis CLI 的主要元件包括:
1. JarvisConfig 結構
-
定義可用的命令
-
驗證命令和列印幫助文字的方法
2. main() 中的命令處理邏輯
-
解析命令列引數
-
根據命令呼叫適當的函式
3. 每個命令的功能
-
– 獲取當前時間
-
date – 獲取今天的日期
-
你好 – 列印可定製的問候語
-
ls——列出目錄內容
-
chat – 使用 Ollama lib 與 Llama 3.2 互動
以下是該程式碼的精簡版本:
struct JarvisConfig {
commands: Vec<&'static str>,
}
impl JarvisConfig {
fn new() -> Self {...}
fn print_help(&self) {...}
fn is_valid_command(&self, command: &str) -> bool {...}
}
#[tokio::main]
async fn main() {
let config = JarvisConfig::new();
let args: Vec<String> = env::args().collect();
match args[1].as_str() {
"time" => {...}
"date" => {...}
"hello" => {...}
"ls" => {...}
"chat" => {
let ollama = Ollama::default();
match ollama
.generate(GenerationRequest::new(
"llama3.2".to_string(),
args[2].to_string(),
))
.await
{
Ok(res) => println!("{}", res.response),
Err(e) => println!("Failed to generate response: {}", e),
}
}
_ => {
println!("Unknown command: {}", args[1]);
config.print_help();
}
}
}
使用 Ollama 與 Llama 3.2 聊天最有趣的部分是“聊天”命令,它使用 Ollama Rust 庫與 Llama 3.2 互動。
將 Ollama 依賴項新增到 Cargo.toml 後,使用它非常簡單:
使用預設設定建立 Ollama 例項:
let ollama = Ollama::default();
就是這樣!只需幾行程式碼,我們就可以向 Llama 3.2 傳送提示並接收生成的響應。
示例用法
以下是與 Jarvis CLI 的一些示例互動:
GenerationRequest::new(
"llama3.2".to_string(),
args[2].to_string()
)
第二個示例。
match ollama.generate(...).await {
Ok(res) => println!("{}", res.response),
Err(e) => println!("Failed to generate response: {}", e),
}
一些對話示例:
$ jarvis hello
Hello, World!
$ jarvis hello Alice
Hello, Alice!
$ jarvis time
Current time in format (HH:mm:ss): 14:30:15
$ jarvis ls /documents
/documents/report.pdf: file
/documents/images: directory
$ jarvis chat "What is the capital of France?"
Paris is the capital and most populous city of France.
儘管 Python 仍然是 AI/ML 的首選,但在需要最高效能、併發性和/或安全性的情況下,Rust 是一個引人注目的替代方案。很高興看到 Rust 在這一領域得到越來越多的採用。
結論
在這篇文章中,我們學習瞭如何使用 Ollama 庫構建 Rust CLI 與 Llama 3.2 互動。憑藉基本的 Rust 知識,我們可以在幾分鐘內組裝出一個有用的 AI 驅動工具。Rust 的獨特優勢使其非常適合 AI/ML 系統開發。隨著生態系統的成熟,我預計我們將看到它被更多的採用。
我鼓勵你在下一個 AI 專案中嘗試使用 Rust,無論是像這樣的簡單 CLI 還是更復雜的系統。
它的效能、安全性和表現力可能會讓你大吃一驚。
作者:聆聽音樂的魚