17611538698
webmaster@21cto.com

构建 Rust 命令行界面以与 Llama 3.2 聊天

人工智能 0 28 2025-01-10 10:07:06

图片

导读:构建可以与 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 = 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 AliceHello, Alice!
$ jarvis timeCurrent 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 还是更复杂的系统。


它的性能、安全性和表现力可能会让你大吃一惊。

作者:聆听音乐的鱼

评论