KI26.4.3 Scripting mit KI
Das ai-Modul steht in QF-Test Skripten ohne Import zur Verfügung und
ermöglicht die direkte Kommunikation mit einem konfigurierten LLM. Typische
Einsatzgebiete sind die dynamische Textauswertung, die Generierung von Testdaten
zur Laufzeit oder die KI-gesteuerte Steuerung einer Anwendung mithilfe von
MCP-Werkzeugen.
26.4.3.1 LLM-Anfragen senden
"Object ask(String message, String configName, Double temperature, Double topP, Integer topK, Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, List<String> stopSequences, Integer timeoutMs) throws TestException" sendet eine Textnachricht an ein konfiguriertes LLM und gibt dessen Antwort zurück. Ohne Angabe einer Konfiguration wird die Standardkonfiguration verwendet.
// Einfache Anfrage mit Standardkonfiguration
antwort = ai.ask("Erkläre kurz, was ein Regressionstest ist")
rc.logMessage(antwort)
// Anfrage mit expliziter Konfiguration
antwort = ai.ask("Bist du erreichbar?", "mein-modell") "Object askWithTools(String message, String configName, ...) throws TestException" funktioniert identisch, ermöglicht dem Modell jedoch zusätzlich, die vordefinierten MCP-Werkzeuge von QF-Test aufzurufen. Auf diese Weise kann der Agent selbstständig mit der Anwendung interagieren, ohne dass Sie jeden Einzelschritt vorgeben müssen.
ai.askWithTools("Öffne die Anwendung, melde dich als 'admin' an und prüfe, ob das Dashboard angezeigt wird") 26.4.3.2 KI-Konfiguration im Skript setzen
Mit "void setDefaultConfig(String provider, String baseUrl, String apiKey, String modelName, String displayName="Default")" lässt sich die aktive KI-Konfiguration zur Laufzeit ändern, ohne den Optionendialog öffnen zu müssen. Das ist nützlich, wenn verschiedene Modelle für unterschiedliche Aufgaben innerhalb derselben Testsuite eingesetzt werden sollen. Mit "void resetDefaultConfig()" wird anschließend auf die erste konfigurierte Konfiguration zurückgestellt.
// Konfiguration zur Laufzeit setzen
ai.setDefaultConfig("OpenAIGeneric", "https://api.openai.com/v1", api_schluessel, "gpt-4o")
antwort = ai.ask("Generiere fünf Testfallnamen für einen Login-Test")
// Zurücksetzen auf die konfigurierte Standardkonfiguration
ai.resetDefaultConfig() "List<String> getConfigNames()" gibt eine Liste aller im Optionendialog eingetragenen Konfigurationsnamen zurück.
26.4.3.3 Prompts abrufen
Prozeduren, die in qfs-ai.qft oder einer eigenen
user-ai.qft als MCP-Prompts definiert sind, können mit
"String getPrompt(String promptName, Map<String, Object> promptArguments)" als fertigen Prompttext abgerufen werden.
Das Ergebnis kann direkt an "Object ask(String message, String configName, Double temperature, Double topP, Integer topK, Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, List<String> stopSequences, Integer timeoutMs) throws TestException" übergeben werden.
// Vordefinierte Prompt-Vorlage abrufen und verwenden
prompt = ai.getPrompt("plan_tests", ["url": "https://example.com"])
testplan = ai.ask(prompt)
rc.logMessage(testplan) Mit "List<List<Object>> listPrompts()" erhalten Sie eine Übersicht aller verfügbaren Prompts mit Name, Titel und Beschreibung.
26.4.3.4 Benutzerdefinierte Modelle registrieren
Mit "void addCustomModel(final String name, final Object responseFunction)" können Sie ein eigenes Modell registrieren, das über eine beliebige Schnittstelle kommuniziert - etwa über ein Kommandozeilen-Tool oder ein externes KI-System. Das registrierte Modell steht anschließend wie jede andere KI-Konfiguration unter seinem Namen zur Verfügung.
Die Callback-Funktion empfängt neben der Nachricht auch optionale Parameter sowie
ein toolBridge-Objekt. Über toolBridge.listTools() können
die verfügbaren QF-Test Werkzeuge abgerufen werden; mit
toolBridge.callTool(name, params) können diese aufgerufen werden. Nur
wenn das benutzerdefinierte Modell die verfügbaren Werkzeuge an das KI-System
weiterreicht und deren Aufrufe verarbeitet - oder alternativ einen externen Client
verwendet, der mit dem QF-Test MCP-Server verbunden ist - kann es für agentische
Funktionen wie die Testgenerierung eingesetzt werden.
// Externes CLI-Werkzeug als KI-Modell registrieren
ai.addCustomModel("MeinModell", (msg, parameters, toolBridge) -> {
def cmd = ["my-ai-shell-command", msg]
def proc = cmd.execute()
proc.outputStream.close()
proc.waitFor()
return proc.in.text
})
// Registriertes Modell verwenden
antwort = ai.ask("Erzähl mir einen Witz!", "MeinModell")
// Modell wieder entfernen
ai.removeCustomModel("MeinModell")
Die vollständige API-Referenz des ai-Moduls finden Sie unter
"Das ai-Modul".