导读:构建可以与 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 应用程序的绝佳选择。
定义可用的命令
验证命令和打印帮助文本的方法
解析命令行参数
根据命令调用适当的函数
- 获取当前时间
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 发送提示并接收生成的响应。
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 helloHello, 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 在这一领域得到越来越多的采用。
作者:聆听音乐的鱼
本篇文章为 @ 行动的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。