> ## Documentation Index
> Fetch the complete documentation index at: https://docs.obiguard.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Groq

Obiguard provides a robust and secure gateway to facilitate the integration of various Large Language Models (LLMs) into your applications,
including [Groq APIs](https://console.groq.com/docs/quickstart).

With Obiguard, you can take advantage of features like fast AI gateway access, observability, prompt management, and more,
all while ensuring the secure management of your LLM API keys through a [virtual key](/virtual-keys) system.

<Note>
  Provider Slug. `groq`
</Note>

## Obiguard SDK Integration with Groq Models

Obiguard provides a consistent API to interact with models from various providers. To integrate Groq with Obiguard:

### 1. Install the Obiguard SDK

Add the Obiguard SDK to your application to interact with Groq AI's API through Obiguard's gateway.

<Tabs>
  <Tab title="Python SDK">
    ```sh theme={null}
    pip install obiguard
    ```
  </Tab>
</Tabs>

### 2. Initialize Obiguard with the Virtual Key

To use Groq with Obiguard, [get your API key from here](https://console.groq.com/keys), then add it to Obiguard to create the virtual key.

<Tabs>
  <Tab title="Python SDK">
    ```python theme={null}
    from obiguard import Obiguard

    client = Obiguard(
      obiguard_api_key="sk-obg***", # Your Obiguard API key
      virtual_key="VIRTUAL_KEY" # Replace with your virtual key for Groq
    )
    ```
  </Tab>
</Tabs>

### **3. Invoke Chat Completions with** Groq

Use the Obiguard instance to send requests to Groq. You can also override the virtual key directly in the API call if needed.

<Tabs>
  <Tab title="Python SDK">
    ```python theme={null}
    completion = client.chat.completions.create(
      messages= [{"role": 'user', "content": 'Say this is a test'}],
      model= 'mistral-medium'
    )
    ```
  </Tab>
</Tabs>

### Groq Tool Calling

Tool calling feature lets models trigger external tools based on conversation context.
You define available functions, the model chooses when to use them, and your application executes them and returns results.

Obiguard supports Groq Tool Calling and makes it interoperable across multiple providers.

<Card title="Supported Groq Models with Tool Calling" href="https://console.groq.com/docs/tool-use#supported-models" />

<Tabs>
  <Tab title="Python SDK">
    ```python Get Weather Tool theme={null}
    tools = [{
      "type": "function",
      "function": {
        "name": "getWeather",
        "description": "Get the current weather",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City and state"},
            "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
          },
          "required": ["location"]
        }
      }
    }]

    response = client.chat.completions.create(
      model="llama-3.3-70b-versatile",
      messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What's the weather like in Delhi - respond in JSON"}
      ],
      tools=tools,
      tool_choice="auto"
    )
    print(response.choices[0].finish_reason)
    ```
  </Tab>

  <Tab title="cURL">
    ```curl Get Weather Tool theme={null}
    curl -X POST "https://gateway.obiguard.ai/v1/chat/completions" \
      -H "Content-Type: application/json" \
      -H "x-obiguard-api-key: Bearer $OBIGUARD_API_KEY" \
      -d '{
        "model": "llama-3.3-70b-versatile",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "What'\''s the weather like in Delhi - respond in JSON"}
        ],
        "tools": [{
          "type": "function",
          "function": {
            "name": "getWeather",
            "description": "Get the current weather",
            "parameters": {
              "type": "object",
              "properties": {
                "location": {"type": "string", "description": "City and state"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
              },
              "required": ["location"]
            }
          }
        }],
        "tool_choice": "auto"
      }'
    ```
  </Tab>
</Tabs>

### Groq Speech to Text (Whisper)

OpenAI's Audio API converts speech to text using the Whisper model. It offers transcription in the original language and translation to English,
supporting multiple file formats and languages with high accuracy.

<Tabs>
  <Tab title="Python SDK">
    ```python Python theme={null}
    audio_file= open("/path/to/file.mp3", "rb")

    # Transcription
    transcription = client.audio.transcriptions.create(
      model="whisper-large-v3",
      file=audio_file
    )
    print(transcription.text)

    # Translation
    translation = client.audio.translations.create(
      model="whisper-large-v3",
      file=audio_file
    )
    print(translation.text)
    ```
  </Tab>

  <Tab title="cURL">
    ```curl REST theme={null}
    # Transcription
    curl -X POST "https://gateway.obiguard.ai/v1/audio/transcriptions" \
      -H "x-obiguard-api-key: $OBIGUARD_API_KEY" \
      -H "Content-Type: multipart/form-data" \
      -F "file=@/path/to/file.mp3" \
      -F "model=whisper-large-v3"

    # Translation
    curl -X POST "https://gateway.obiguard.ai/v1/audio/translations" \
      -H "x-obiguard-api-key: $OBIGUARD_API_KEY" \
      -H "Content-Type: multipart/form-data" \
      -F "file=@/path/to/file.mp3" \
      -F "model=whisper-large-v3"
    ```
  </Tab>
</Tabs>

### Groq Text to Speech

Groq's Text to Speech (TTS) API converts written text into natural-sounding audio using six distinct voices.
It supports multiple languages, streaming capabilities, and various audio formats for different use cases.

<Tabs>
  <Tab title="Python SDK">
    ```python Python theme={null}
    from pathlib import Path

    speech_file_path = Path(__file__).parent / "speech.mp3"
    response = client.audio.speech.create(
      model="playai-tts",
      voice="Fritz-PlayAI",
      input="Today is a wonderful day to build something people love!"
    )

    with open(speech_file_path, "wb") as f:
      f.write(response.content)
    ```
  </Tab>

  <Tab title="cURL">
    ```curl REST theme={null}
    curl -X POST "https://gateway.obiguard.ai/v1/audio/speech" \
      -H "x-obiguard-api-key: $OBIGUARD_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "playai-tts",
        "voice": "Fritz-PlayAI",
        "input": "Today is a wonderful day to build something people love!"
      }' \
      --output speech.mp3
    ```
  </Tab>
</Tabs>

## Next Steps

The complete list of features supported in the SDK are available on the link below.

<Card title="Obiguard SDK Client" icon="code" href="/api-reference/sdk/python">
  Learn more about the Obiguard SDK Client
</Card>
