8 个版本
0.2.51 | 2024 年 6 月 26 日 |
---|---|
0.2.5 | 2024 年 6 月 26 日 |
0.1.5 | 2024 年 6 月 24 日 |
#606 in 网页编程
每月 78 次下载
38KB
506 行
非官方 Groq API Rust 客户端库
此库提供与 Groq API 交互的能力。它允许您通过 GroqClient
接口向 API 发送请求并接收响应。
如何安装
要安装 groq-api-rust
crate,请在项目目录中运行以下命令将其添加到 Rust 项目的依赖项中
cargo add groq-api-rust
使用方法
-
将
groq-api-rust
crate 导入到您的 Rust 项目中。 -
通过调用
GroqClient::new()
并提供您的 Groq API 密钥和可选的端点 URL 来创建GroqClient
结构体的实例。 -
使用
chat_completion()
方法在GroqClient
实例上执行聊天补全。使用所需的模型、消息和其他参数创建一个ChatCompletionRequest
结构体,并将其传递给chat_completion()
方法。 -
使用
speech_to_text()
方法在GroqClient
实例上执行语音转文本转换。使用音频文件数据和其他参数创建一个SpeechToTextRequest
结构体,并将其传递给speech_to_text()
方法。
示例
聊天补全
use groq_api_rust::{GroqClient, ChatCompletionMessage, ChatCompletionRoles, ChatCompletionRequest};
let api_key = std::env::var("GROQ_API_KEY").unwrap();
let client = GroqClient::new(api_key.to_string(), None);
let messages = vec![ChatCompletionMessage {
role: ChatCompletionRoles::User,
content: "Hello".to_string(),
name: None,
}];
let request = ChatCompletionRequest::new("llama3-70b-8192", messages);
let response = client.chat_completion(request).unwrap();
println!("{}", response.choices[0].message.content);
assert!(!response.choices.is_empty());
语音转文本
use groq_api_rust::{GroqClient, SpeechToTextRequest};
use std::{fs::File, io::Read};
let api_key = std::env::var("GROQ_API_KEY").unwrap();
let client = GroqClient::new(api_key, None);
let audio_file_path = "audio_file.mp3";
let mut file = File::open(audio_file_path).expect("Failed to open audio file");
let mut audio_data = Vec::new();
file.read_to_end(&mut audio_data)
.expect("Failed to read audio file");
let request = SpeechToTextRequest::new(audio_data)
.temperature(0.7)
.language("en")
.model("whisper-large-v3");
let response = client
.speech_to_text(request)
.expect("Failed to get response");
println!("Speech to Text Response: {}", response.text);
异步聊天补全
use groq_api_rust::{AsyncGroqClient, ChatCompletionMessage,ChatCompletionRoles, ChatCompletionRequest};
use tokio;
let api_key = std::env::var("GROQ_API_KEY").unwrap();
let client = AsyncGroqClient::new(api_key, None);
let messages1 = vec![ChatCompletionMessage {
role: ChatCompletionRoles::User,
content: "Hello".to_string(),
name: None,
}];
let request1 = ChatCompletionRequest::new("llama3-70b-8192", messages1);
let messages2 = vec![ChatCompletionMessage {
role: ChatCompletionRoles::User,
content: "How are you?".to_string(),
name: None,
}];
let request2 = ChatCompletionRequest::new("llama3-70b-8192", messages2);
let (response1, response2) = tokio::join!(
client.chat_completion(request1),
client.chat_completion(request2)
);
let response1 = response1.expect("Failed to get response for request 1");
let response2 = response2.expect("Failed to get response for request 2");
println!("Response 1: {}", response1.choices[0].message.content);
println!("Response 2: {}", response2.choices[0].message.content);
异步语音转文本
use groq_api_rust::{AsyncGroqClient, SpeechToTextRequest};
use tokio;
let api_key = std::env::var("GROQ_API_KEY").unwrap();
let client = AsyncGroqClient::new(api_key, None);
let audio_file_path1 = "onepiece_demo.mp4";
let audio_file_path2 = "save.ogg";
let (audio_data1, audio_data2) = tokio::join!(
tokio::fs::read(audio_file_path1),
tokio::fs::read(audio_file_path2)
);
let audio_data1 = audio_data1.expect("Failed to read first audio file");
let audio_data2 = audio_data2.expect("Failed to read second audio file");
let (request1, request2) = (
SpeechToTextRequest::new(audio_data1)
.temperature(0.7)
.language("en")
.model("whisper-large-v3"),
SpeechToTextRequest::new(audio_data2)
.temperature(0.7)
.language("en")
.model("whisper-large-v3")
);
let (response1, response2) = tokio::join!(
client.speech_to_text(request1),
client.speech_to_text(request2)
);
let response1 = response1.expect("Failed to get response for first audio");
let response2 = response2.expect("Failed to get response for second audio");
println!("Speech to Text Response 1: {}", response1.text);
println!("Speech to Text Response 2: {}", response2.text);
待办事项
- 实现请求的流式传输。
贡献
欢迎贡献!如果您有问题或想提出改进建议,请打开一个问题或提交一个拉取请求。
许可
此库根据 Apache 许可证 2.0 许可。有关更多信息,请参阅 LICENSE 文件。
依赖关系
~4–15MB
~217K SLoC