10.3    Groq-API

Wenn Sie mit öffentlich verfügbaren LLMs experimentieren möchten, aber keinen ausreichend schnellen Rechner haben, ist Groq (https://wow.groq.com) eine spannende Alternative. Diese Firma bietet Entwicklern aktuell (Stand Mitte 2024) eine kostenlose Möglichkeit, einige ausgewählte Sprachmodelle auszuführen (llama, mixtral, gemma, whisper).

Bemerkenswert an Groq ist die unglaubliche Geschwindigkeit, in der Prompts beantwortet werden – viel schneller als mit guter eigener Hardware, deutlich schneller aber auch im Vergleich zur OpenAI-API. Gerade zum Experimentieren ist diese Geschwindigkeit herrlich!

Für Developer-Accounts gelten Rate-Limits von mehreren Tausend Tokens pro Minute (30.000 bei llama3). Aufgrund der hohen Geschwindigkeit werden diese Limits aber schnell überschritten, wenn Sie in einem Script mehrere Prompts abarbeiten. Wir können natürlich nicht sagen, wie lange dieser Entwickler-Zugang kostenlos bleibt. Die kommerzielle Nutzung ist in jedem Fall kostenpflichtig.

Für erste Experimente richten Sie am besten ein Python-Environment-Verzeichnis ein. Die folgenden Kommandos gelten für Linux und macOS:

python3 -m venv groq
cd groq
source bin/activate
pip3 install groq
pip3 install python-dotenv

Damit Sie Groq nutzen können, brauchen Sie einen API-Key. Den erhalten Sie nach einem unkomplizierten Log-in (Sie müssen nur Ihre E-Mail-Adresse angeben) auf der Groq-Website. Sie speichern den Key in der Datei .env im Projektverzeichnis:

# Datei .env
GROQ_API_KEY=gsk_xxx

Die Nutzung der API sieht wiederum ganz ähnlich wie bei OpenAI oder Ollama aus:

# Beispieldatei groq/hello.py
import os
from groq import Groq
from dotenv import load_dotenv

load_dotenv()
client = Groq(api_key=os.getenv("GROQ_API_KEY"))
completion = client.chat.completions.create(
model="llama3-8b-8192",
messages=[
{ "role": "user",
"content": "How do I use list comprehension in Python?"}])

print("finish_reason:", completion.choices[0].finish_reason)
print("input token:", completion.usage.prompt_tokens)
print("output token:", completion.usage.total_tokens)
print()
print(completion.choices[0].message.content)