groq_api_rs/lib.rs
1//! Provides a simple client implementation for the [groq cloud API](https://console.groq.com/playground).
2//! You can learn more about the API provided [API Documentation](https://console.groq.com/docs/quickstart)
3//! This crate uses [`reqwest`], [`reqwest_eventsource`], [`tokio`], [`serde`], [`serde_json`], [`anyhow`],
4//! [`chrono`],[`futures`]
5//!
6//! # MSRV
7//! 1.78.0
8//!
9//! # Usage
10//! ```sh
11//! cargo add groq-api-rs
12//! ```
13//!
14//! # Example
15//! Request a completion object from Groq
16//! ```
17//! use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
18//!
19//! async fn create_completion() -> anyhow::Result<()> {
20//! let messages = vec![Message::UserMessage {
21//! role: Some("user".to_string()),
22//! content: Some("Explain the importance of fast language models".to_string()),
23//! name: None,
24//! tool_call_id: None,
25//! }];
26//! let request = builder::RequestBuilder::new("mixtral-8x7b-32768".to_string());
27//! let api_key = env!("GROQ_API_KEY");
28//!
29//! let mut client = Groq::new(api_key);
30//! client.add_messages(messages);
31//!
32//! let res = client.create(request).await;
33//! assert!(res.is_ok());
34//! Ok(())
35//! }
36//! ```
37//!
38//! Request a completion chunk object from Groq using stream option implemented with SSE
39//! ```
40//! use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
41//! async fn create_stream_completion() -> anyhow::Result<()> {
42//! let messages = vec![Message::UserMessage {
43//! role: Some("user".to_string()),
44//! content: Some("Explain the importance of fast language models".to_string()),
45//! name: None,
46//! tool_call_id: None,
47//! }];
48//! let request =
49//! builder::RequestBuilder::new("mixtral-8x7b-32768".to_string()).with_stream(true);
50//! let api_key = env!("GROQ_API_KEY");
51//!
52//! let mut client = Groq::new(api_key);
53//! client.add_messages(messages);
54//!
55//! let res = client.create(request).await;
56//! assert!(res.is_ok());
57//! Ok(())
58//! }
59//! ```
60//!
61//! Example that the completion can return Error Object and augmented with HTTP status code.
62//! ```
63//! use groq_api_rs::completion::{client::Groq, message::Message, request::builder};
64//! async fn error_does_return() -> anyhow::Result<()> {
65//! let messages = vec![Message::UserMessage {
66//! role: Some("user".to_string()),
67//! content: Some("Explain the importance of fast language models".to_string()),
68//! name: None,
69//! tool_call_id: None,
70//! }];
71//! let request =
72//! builder::RequestBuilder::new("mixtral-8x7b-32768".to_string()).with_stream(true);
73//! let api_key = "";
74//!
75//! let mut client = Groq::new(api_key);
76//! client.add_messages(messages);
77//!
78//! let res = client.create(request).await;
79//! assert!(res.is_err());
80//! eprintln!("{}", res.unwrap_err());
81//! Ok(())
82//! }
83//! ```
84
85pub mod completion;