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;