2 个不稳定版本
0.2.0 | 2024 年 6 月 26 日 |
---|---|
0.1.0 | 2024 年 6 月 14 日 |
#494 在 网页编程
每月 39 次下载
在 nerve-ai 中使用
47KB
974 行
groq-api-rs
为 groq 云 API 提供简单的客户端实现。您可以了解更多关于提供的 API 的信息 API 文档 此 crate 使用 reqwest
、reqwest_eventsource
、tokio
、serde
、serde_json
、anyhow
、chrono
、futures
MSRV
1.78.0
用法
cargo add groq-api-rs
示例
从 Groq 请求一个完成对象
use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
async fn create_completion() -> anyhow::Result<()> {
let messages = vec![Message::UserMessage {
role: Some("user".to_string()),
content: Some("Explain the importance of fast language models".to_string()),
name: None,
tool_call_id: None,
}];
let request = builder::RequestBuilder::new("mixtral-8x7b-32768".to_string());
let api_key = env!("GROQ_API_KEY");
let mut client = Groq::new(api_key);
client.add_messages(messages);
let res = client.create(request).await;
assert!(res.is_ok());
Ok(())
}
使用通过 SSE 实现的流选项从 Groq 请求一个完成块对象
use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
async fn create_stream_completion() -> anyhow::Result<()> {
let messages = vec![Message::UserMessage {
role: Some("user".to_string()),
content: Some("Explain the importance of fast language models".to_string()),
name: None,
tool_call_id: None,
}];
let request =
builder::RequestBuilder::new("mixtral-8x7b-32768".to_string()).with_stream(true);
let api_key = env!("GROQ_API_KEY");
let mut client = Groq::new(api_key);
client.add_messages(messages);
let res = client.create(request).await;
assert!(res.is_ok());
Ok(())
}
示例表明,完成可以返回错误对象,并附加 HTTP 状态码。
use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
async fn error_does_return() -> anyhow::Result<()> {
let messages = vec![Message::UserMessage {
role: Some("user".to_string()),
content: Some("Explain the importance of fast language models".to_string()),
name: None,
tool_call_id: None,
}];
let request =
builder::RequestBuilder::new("mixtral-8x7b-32768".to_string()).with_stream(true);
let api_key = "";
let mut client = Groq::new(api_key);
client.add_messages(messages);
let res = client.create(request).await;
assert!(res.is_err());
eprintln!("{}", res.unwrap_err());
Ok(())
}
贡献
欢迎提交问题和 PR。我仍在学习 Rust,设计和编码可能并不完美。
依赖关系
~8–20MB
~289K SLoC