Zum Inhalt

Batch-Operationen

Batch-Operationen ermöglichen es Ihnen, mehrere Elemente in einem einzigen API-Aufruf zu verarbeiten, anstatt separate Aufrufe für jedes Element durchzuführen. In Elluminate bedeutet dies, dass Sie mehrere Responses parallel generieren oder mehrere Ratings durchführen können, was die Effizienz deutlich verbessert und den Overhead reduziert.

Anstatt beispielsweise 10 separate API-Aufrufe zu tätigen, um Responses für 10 verschiedene Sets von Template-Variablen zu generieren, können Sie alle 10 Sets in einer einzigen Batch-Anfrage senden. Der Server verarbeitet diese Anfragen parallel und liefert alle Ergebnisse gemeinsam zurück.

Batch-Operationen sind besonders nützlich, wenn Sie:

  • Responses in Masse verarbeiten: Effizient Responses für mehrere Prompts generieren
  • Batch-Ratings: Parallel mehrere Responses anhand von Kriterien raten
from dotenv import load_dotenv
from elluminate import Client

load_dotenv(override=True)

client = Client()

prompt_template, _ = client.prompt_templates.get_or_create(
    "Explain why {{language}}'s {{quirk}} is considered surprising or counterintuitive, "
    + "and demonstrate it with a short code example that might trip up even experienced developers.",
    name="Programming Quirks",
)

client.criteria.get_or_generate_many(prompt_template)

values = [
    {"language": "Python", "quirk": "mutable default arguments"},
    {"language": "JavaScript", "quirk": "type coercion"},
    {"language": "Java", "quirk": "string pool internment"},
]

template_variables = []
for value in values:
    variables = client.template_variables.add_to_collection(
        template_variables=value,
        collection=prompt_template.default_template_variables_collection,
    )
    template_variables.append(variables)

responses = client.responses.generate_many(
    prompt_template=prompt_template, template_variables=template_variables
)  # (1)!

# Generate ratings for the `responses`
batch_ratings = client.ratings.rate_many(responses)  # (2)!

for i, response in enumerate(responses):
    ratings = batch_ratings[i]
    print(f"\n\nResponse: {response.response}")
    for rating in ratings:
        print(f"Criteria: {rating.criterion.criterion_str}")
        print(f"Rating: {rating.rating}\n")
1. Generiert effizient mehrere Responses aus einem einzelnen Prompt-Template mit verschiedenen Template-Variablen. Beachten Sie, dass dies auch von der Methode `generate_many(prompt_template, collection=collection)` verwendet wird.

2. Führt effizient mehrere Ratings für Responses anhand ihrer jeweiligen Kriterien durch. Wie bei der `rate`-Methode können Sie einen Rating-Modus festlegen oder auf ein Experiment verweisen.

Performance-Überlegungen

Batch-Operationen bieten mehrere Leistungsvorteile:

  • Reduzierter Netzwerk-Overhead
  • Parallele Verarbeitung auf dem Server
  • Geringere Gesamtlatenz für mehrere Operationen
  • Effizientere Ressourcennutzung

Beachten Sie jedoch:

  • Speicherverbrauch bei großen Batches
  • Timeout-Grenzen bei lang laufenden Operationen
  • API-Ratenlimits und Kontingente
  • Komplexität der Fehlerbehandlung