#llm #reqwest #groq #request-builder #api-bindings #groq-api

groq-api-rs

针对 Groq 云 LLM API 的客户端

2 个不稳定版本

0.2.0 2024 年 6 月 26 日
0.1.0 2024 年 6 月 14 日

#494网页编程

每月 39 次下载
nerve-ai 中使用

MIT/Apache

47KB
974

groq-api-rs

groq 云 API 提供简单的客户端实现。您可以了解更多关于提供的 API 的信息 API 文档 此 crate 使用 reqwestreqwest_eventsourcetokioserdeserde_jsonanyhowchronofutures

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