Crate groqai

Source
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

⚠️ 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