Expand description
§GroqAI - Rust Client Library for Groq API
GroqAI 是一个用于 Groq API 的 Rust 客户端库
This crate provides a comprehensive Rust client for interacting with the Groq API, offering support for chat completions, audio transcription/translation, file management, batch processing, and model information retrieval.
§Features
- Chat Completions: Support for both streaming and non-streaming chat completions
- Audio Processing: Audio transcription and translation capabilities
- File Management: Upload, list, retrieve, and delete files
- Batch Processing: Create and manage batch jobs for efficient processing
- Model Information: Retrieve available models and their details
- Rate Limiting: Built-in rate limiting and retry mechanisms
- Error Handling: Comprehensive error types for robust error handling
§Quick Start
§Using Environment Variables (Recommended)
⚠️ Required: Set GROQ_API_KEY environment variable first!
export GROQ_API_KEY="gsk_your_api_key_here"// Option 1: Import specific types
use groqai::{GroqClient, ChatMessage, Role};
// Option 2: Use prelude for convenience (imports most common types)
// use groqai::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Creates client from GROQ_API_KEY environment variable
let client = GroqClient::new()?;
let messages = vec![
ChatMessage::new_text(Role::User, "Hello, how are you?")
];
let response = client
.chat("llama-3.1-70b-versatile")
.messages(messages)
.send()
.await?;
println!("Response: {}", response.choices[0].message.content);
Ok(())
}§Using API Key Directly
use groqai::prelude::*; // Convenient import
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = GroqClient::with_api_key("gsk_your_api_key")?;
let messages = vec![
ChatMessage::new_text(Role::User, "Hello!")
];
let response = client
.chat("llama-3.1-70b-versatile")
.messages(messages)
.send()
.await?;
println!("Response: {}", response.choices[0].message.content);
Ok(())
}§Configuration
§Environment Variables
# Required
export GROQ_API_KEY="gsk_your_api_key_here"
# Optional
export GROQ_PROXY_URL="http://proxy.example.com:8080"
export GROQ_TIMEOUT_SECS="60" # default: 30§API Key
You need a valid Groq API key to use this library. The API key must start with “gsk_”. You can obtain one from the Groq Console.
Re-exports§
pub use client::GroqClient;pub use client::GroqClientBuilder;pub use error::GroqError;pub use types::ChatMessage;pub use types::Role;pub use types::MessageContent;pub use types::MessagePart;pub use types::ImageUrl;pub use types::KnownModel;pub use types::ChatCompletionResponse;pub use types::Choice;pub use types::Usage;pub use types::ChatCompletionChunk;pub use types::ChoiceChunk;pub use types::MessageDelta;pub use api::chat::ChatRequestBuilder;pub use api::audio::AudioRequestBuilder;pub use api::files::FileRequestBuilder;pub use api::batches::BatchRequestBuilder;pub use api::models::ModelsRequestBuilder;pub use api::fine_tunings::FineTuningRequestBuilder;pub use api::chat::ChatCompletionRequest;pub use api::audio::AudioTranscriptionRequest;pub use api::audio::AudioTranslationRequest;pub use api::files::FileCreateRequest;pub use api::batches::BatchCreateRequest;pub use api::fine_tunings::FineTuningCreateRequest;pub use types::Transcription;pub use types::Translation;pub use types::WorkFile;pub use types::WorkFileList;pub use types::WorkFileDeletion;pub use types::Model;pub use types::ModelList;pub use types::Batch;pub use types::BatchList;pub use types::RequestCounts;pub use types::Tool;pub use types::ToolCall;pub use types::FunctionCall;pub use types::FunctionDef;pub use types::ResponseFormat;pub use types::ToolChoice;pub use types::ServiceTier;pub use types::StopSequence;pub use types::StreamOptions;pub use types::CompoundCustom;pub use types::SearchSettings;
Modules§
- api
- API endpoint implementations for Groq services
- client
- Client implementation for Groq API
- error
- Error types and handling for the Groq API client
- prelude
- Prelude module for convenient imports
- rate_
limit - Rate limiting and retry logic for API requests
- transport
- HTTP transport layer for Groq API communication
- types
- Type definitions for Groq API requests and responses