The Groq adapter provides access to Groq's fast inference API, featuring the world's fastest LLM inference.
npm install @tanstack/ai-groq
import { chat } from "@tanstack/ai";
import { groqText } from "@tanstack/ai-groq";
const stream = chat({
adapter: groqText("llama-3.3-70b-versatile"),
messages: [{ role: "user", content: "Hello!" }],
});
import { chat } from "@tanstack/ai";
import { createGroqText } from "@tanstack/ai-groq";
const adapter = createGroqText("llama-3.3-70b-versatile", process.env.GROQ_API_KEY!, {
// ... your config options
});
const stream = chat({
adapter: adapter,
messages: [{ role: "user", content: "Hello!" }],
});
import { createGroqText, type GroqTextConfig } from "@tanstack/ai-groq";
const config: Omit<GroqTextConfig, 'apiKey'> = {
baseURL: "https://api.groq.com/openai/v1", // Optional, for custom endpoints
};
const adapter = createGroqText("llama-3.3-70b-versatile", process.env.GROQ_API_KEY!, config);
import { chat, toServerSentEventsResponse } from "@tanstack/ai";
import { groqText } from "@tanstack/ai-groq";
export async function POST(request: Request) {
const { messages } = await request.json();
const stream = chat({
adapter: groqText("llama-3.3-70b-versatile"),
messages,
});
return toServerSentEventsResponse(stream);
}
import { chat, toolDefinition } from "@tanstack/ai";
import { groqText } from "@tanstack/ai-groq";
import { z } from "zod";
const searchDatabaseDef = toolDefinition({
name: "search_database",
description: "Search the database",
inputSchema: z.object({
query: z.string(),
}),
});
const searchDatabase = searchDatabaseDef.server(async ({ query }) => {
// Search database
return { results: [] };
});
const messages = [{ role: "user", content: "Search for something" }];
const stream = chat({
adapter: groqText("llama-3.3-70b-versatile"),
messages,
tools: [searchDatabase],
});
Groq supports various provider-specific options:
const stream = chat({
adapter: groqText("llama-3.3-70b-versatile"),
messages: [{ role: "user", content: "Hello!" }],
modelOptions: {
temperature: 0.7,
max_completion_tokens: 1024,
top_p: 0.9,
},
});
Enable reasoning for models that support it (e.g., openai/gpt-oss-120b, qwen/qwen3-32b). This allows the model to show its reasoning process, which is streamed as thinking chunks:
modelOptions: {
reasoning_effort: "medium", // "none" | "default" | "low" | "medium" | "high"
}
Groq offers a diverse selection of models from multiple providers:
Groq provides unique Text-to-Speech capabilities via Canopy Labs Orpheus models:
import { generateSpeech } from "@tanstack/ai";
import { groqSpeech } from "@tanstack/ai-groq";
const result = await generateSpeech({
adapter: groqSpeech("canopylabs/orpheus-v1-english"),
text: "Hello, welcome to TanStack AI!",
voice: "autumn",
format: "wav",
});
// result.audio contains base64-encoded audio
console.log(result.format); // "wav"
Available voices: autumn, diana, hannah, austin, daniel, troy
Available voices for Arabic model (canopylabs/orpheus-arabic-saudi): fahad, sultan, lulwa, noura
const result = await generateSpeech({
adapter: groqSpeech("canopylabs/orpheus-v1-english"),
text: "High quality speech",
voice: "diana",
format: "wav",
modelOptions: {
sample_rate: 24000, // Audio sample rate in Hz
},
});
Note: Additional formats (mp3, flac, ogg, mulaw) are defined for future compatibility but are not yet supported by Orpheus TTS models.
Set your API key in environment variables:
GROQ_API_KEY=gsk_...
Creates a Groq chat adapter using environment variables.
Parameters:
Returns: A Groq chat adapter instance.
Creates a Groq chat adapter with an explicit API key.
Parameters:
Returns: A Groq chat adapter instance.
Creates a Groq TTS adapter using environment variables.
Parameters:
Returns: A Groq speech adapter instance.
Creates a Groq TTS adapter with an explicit API key.
Parameters:
Returns: A Groq speech adapter instance.