1 个不稳定版本
0.1.1 | 2023 年 11 月 21 日 |
---|
#529 in 机器学习
在 smart-llamas 中使用
37KB
741 行
Ollama-rs
一个简单易用的库,用于与 Ollama 服务器交互。
它遵循 Ollama API 文档制作。
安装
将 ollama-rs 添加到您的 Cargo.toml
[dependencies]
ollama-rs = "0.1.1"
初始化 Ollama
// By default it will connect to localhost:11434
let ollama = Ollama::default();
// For custom values:
let ollama = Ollama::new("https://127.0.0.1".to_string(), 11434);
使用
您可以自由查看 聊天机器人示例,该示例展示了如何使用此库在 50 行代码以下创建一个简单的聊天机器人。
这些示例为了简单起见使用了较差的错误处理,但您应该在您的代码中正确处理错误。
完成生成
let model = "llama2:latest".to_string();
let prompt = "Why is the sky blue?".to_string();
let res = ollama.generate(GenerationRequest::new(model, prompt)).await;
if let Ok(res) = res {
println!("{}", res.response);
}
输出: 天空之所以呈现蓝色,是因为一种称为瑞利散射的现象...
完成生成(流式传输)
需要 stream
功能。
let model = "llama2:latest".to_string();
let prompt = "Why is the sky blue?".to_string();
let mut stream = ollama.generate_stream(GenerationRequest::new(model, prompt)).await.unwrap();
let mut stdout = tokio::io::stdout();
while let Some(res) = stream.next().await {
let res = res.unwrap();
stdout.write(res.response.as_bytes()).await.unwrap();
stdout.flush().await.unwrap();
}
与上面的输出相同,但为流式传输。
列出本地模型
let res = ollama.list_local_models().await.unwrap();
返回一个包含 Model
结构体的向量。
显示模型信息
let res = ollama.show_model_info("llama2:latest".to_string()).await.unwrap();
返回一个 ModelInfo
结构体。
创建模型
let res = ollama.create_model("model".into(), "/tmp/Modelfile.example".into()).await.unwrap();
返回一个表示模型创建最终状态的 CreateModelStatus
结构体。
创建模型(流式传输)
需要 stream
功能。
let mut res = ollama.create_model_stream("model".into(), "/tmp/Modelfile.example".into()).await.unwrap();
while let Some(res) = res.next().await {
let res = res.unwrap();
// Handle the status
}
返回一个 CreateModelStatusStream
,它将流式传输模型创建的每个状态更新。
复制模型
let _ = ollama.copy_model("mario".into(), "mario_copy".into()).await.unwrap();
删除模型
ollama.delete_model("mario_copy".into()).await.unwrap();
生成嵌入
let prompt = "Why is the sky blue?".to_string();
let res = ollama.generate_embeddings("llama2:latest".to_string(), prompt, None).await.unwrap();
返回一个包含嵌入(浮点向量)的 GenerateEmbeddingsResponse
结构体。
依赖项
~3–16MB
~237K SLoC