Von Raoul Essohone Sone auf Donnerstag, 08. August 2024
Kategorie: Big Data & AI

Generative AI Testing Konferenz (1/2)

​Thema 1: Don't Forget to Test: Crafting Reliable Chatbots

Was ist ein Chatbot?

​Ein Chatbot ist ein Computerprogramm, das eine menschliche Konversation mit einer/einem Endbenutzer:in simuliert. Moderne Chatbots verwenden zunehmend Konversations-KI-Techniken wie die Verarbeitung natürlicher Sprache (NLP) und LLMs (Large Language Models), um Fragen von Benutzenden zu verstehen und Antworten darauf zu automatisieren.

Chatbots benutzen ein RAG-System, um Daten zu bearbeiten.

RAG (Retrieval Augmented Generation):

​Ein RAG-System besteht aus mehreren Komponenten:

Unit-Tests sind bei großen Sprachmodellen (LLMs) schwierig. Die Antwort ist nicht immer richtig und eine Frage kann zu mehreren unterschiedlichen Antworten führen. Die Antwort wird von Faktoren wie z. B. Kontext oder Datenvolumen beeinflusst.

Um die Qualität der Antworten zu verbessern, müssen die Chatbots getestet werden. Um die Richtigkeit der Antworten zu prüfen, müssen kontextbasierte Metriken (KPI) definiert werden.

Der Textprozess von Chatbots besteht aus:

Ein Testszenario hat drei Komponenten: eine Frage, eine erwartete Antwort und eine Liste von Hilfsmitteln, die für das Testen relevant sind.

Hier kann man die sogenannte „Factual similarity“ (tatsächliche Ähnlichkeit) prüfen. Sie beschreibt die tatsächliche Überschneidung zwischen der generierten Antwort und der tatsächlichen Antwort.

Außerdem können die Chatbots auf Schadensverursachung (Test for Harmfulness) getestet werden. Wie schädlich ist der Chatbot? Sind die Antworten richtig und ergeben sie einen Sinn? 

Einige Frameworks helfen beim Testen von Chatbots:

Chatbots (LLMs) haben viele Einschränkungen:

Fazit

Von generativer KI gesteuerte Chatbots haben durch ihr Verständnis der Alltagssprache und komplexer Abfragen, die Fähigkeit, sich an den Gesprächsstil eines/einer Benutzer:in anzupassen und beim Beantworten von Fragen Empathie einzusetzen.

Chatbots müssen ständig kontextspezifisch eingesetzt und getestet werden, um die Effektivität zu steigern. Der Mensch sollte immer die Kontrolle über die KI haben, um Schaden zu minimieren. 

Thema 2: Pattern Thinking for Prompt Engineers: A Case Study in Test Design

Thematisiert wurde in diesem Vortrag, wie man LLMs anwenden kann, um komplexe oder fortgeschrittene Probleme zu lösen. Wie soll man ein Prompt (eine Abfrage) formulieren, um die bestmögliche Antwort von der KI zu bekommen? 

Was ist Pattern Thinking?

Ein Muster (Pattern) ist eine Reihe oder eine Anordnung von Dingen. In der Welt gibt es unendlich viele Muster. Diese hängen meistens vom Kontext ab.

Wenn man das Wort „Muster“ auf digitale Erfahrungen anwendet, beschreibt es wiederverwendbare Lösungen für standardmäßige Problemsätze.

Pattern Thinking ist das Erkennen und Anwenden von Szenarien oder Erfahrungen in einer bestimmten Reihenfolge, um ein Problem zu lösen. 

Was ist Prompt Engineering?

Prompt Engineering ist der Prozess, bei dem man Lösungen mit generativer künstlicher Intelligenz (generativer KI) so steuert, dass sie die gewünschten Ergebnisse erzielen.

Damit die Menschen Probleme lösen können und eine bessere Welt schaffen können, müssen sie einen guten Umgang miteinander haben und insbesondere eine sehr gute Kommunikation untereinander pflegen. Bei Prompt Engineering gilt das gleiche Prinzip.

Damit das LLM (Large Language Model) hochwertige und bessere Antworten geben kann, muss man die Qualität der Abfragen (Prompts) und die Qualität des Gesprächs mit der KI deutlich erhöhen. Wie mit Menschen; konkrete Fragen liefern bessere Antworten und bessere Gespräche liefern bessere Ergebnisse.

Um bessere Abfragen zu formulieren und bessere Gespräche zu führen, braucht man ein besseres „Pattern Thinking“.

Damit „Pattern Thinking“ wirklich funktioniert, sollte man eigene Abfragen (Prompts) erstellen bzw. formulieren. Man muss über den Tellerrand hinausschauen und seine Kreativität einsetzen.

Die Nutzung von „Patterns“ (Muster) oder „Prompts“ Anderer ist nicht „Pattern Thinking“. Man soll seine eigenen Muster „denken“ bzw. kreieren.

Damit „Pattern Thinking“ und „Prompt Engineering“ optimal funktionieren, sollte man bereits über Know-how in dem jeweiligen Thema verfügen, um einschätzen zu können, in welchem Bereich Hilfe von der KI benötigt wird.

Hier muss man wissen, was die menschliche Rolle und was die Rolle des LLM beinhaltet. LLMs können lügen oder in die Irre führen. LLMs helfen denjenigen, die das Thema verstehen; das ist das Muster.

Ein:e Softwareentwickler:in oder Softwaretester:in würde keine guten Ergebnisse erzielen, wenn sie oder er Lösungen in den Themen Medizin und Biologie generieren würde. Sie hätten keine Ahnung von der Medizin oder Biologie.

Um am meisten vom LLMs zu profitieren, sollte man eine Meta-Sprache statt einer natürlichen Sprache anwenden.

Einige kleine Blöcke, die man für „Pattern Thinking“ benutzen kann, sind:

​Fazit

Die Kombination von „Pattern Thinking“ und „Prompt Engineering“ mit generativer KI (LLMs) ist ein mächtiges Tool, um komplexe Probleme schneller zu lösen.

Leider sind die meisten keine „Pattern Thinker“. Sie folgen dem Trend, indem sie den Mustern von Anderen folgen. Sie können oder wollen ihre eigenen Muster nicht denken bzw. kreieren. Wie Wallace D. Wattles gesagt hat: „Denken ist die schwierigste Arbeit der Welt“. 

Thema 3: Unit Test on Steroids: Leveraging Fuzz Testing and Generative AI for a scalable Testing Strategy

Hier geht es darum, die White-Box-Tests mit Whitebox Fuzzing und generativer KI zu verbessern. 

Was ist Fuzz-Testing (Fuzzing)?

Fuzz-Testing (Fuzzing) ist ein Qualitätssicherungsverfahren, das zur Entdeckung von Programmierfehlern oder Bugs und Sicherheitslücken in Software, Betriebssystemen und Netzwerken eingesetzt wird.

Beim Fuzzing werden große Mengen an Zufallsdaten, Fuzz genannt, in das Testobjekt eingegeben, um es zum Absturz zu bringen. Das Programm wird mit absichtlich falsch aufgebauten, unerwarteten oder völlig zufälligen Eingaben gefüttert, um zu sehen, wie es darauf reagiert. 

Anwendung von Fuzzing

Fuzzing wird in der Regel mit automatisierter Software durchgeführt, die neue Testfälle erzeugt und das zu testende Programm mit Eingaben füttert.

Fuzzer eignen sich am besten zum Aufspüren von Schwachstellen, die Bedrohungsakteur:innen für verschiedene Arten von Angriffen ausnutzen könnten, zum Beispiel Pufferüberläufe, Denial of Service, Cross-Site-Scripting und SQL Injection.

Dies sind Schemata, die böswillige Hacker verwenden, um in kürzester Zeit so viel Schaden wie möglich anzurichten.

Fuzz Testing ist derzeit die effektivste Methode, um Fehler und Sicherheitslücken zu finden. 

Wie funktioniert Whitebox Fuzzing?

Testfälle werden vom einer selbstlernenden KI generiert, um die Codeabdeckung zu maximieren.

Einige Methoden für Fuzz-Tests sind die nachfolgend genannten:

Die Vorteile von Fuzz Tests

Im Folgenden sind einige der spezifischen Vorteile von Fuzz Tests aufgeführt:

Die Grenzen von Fuzz Tests

Fuzz Tests unterliegen einigen wesentlichen Einschränkungen, darunter den folgenden:

Nutzung generativer KI zur automatischen Generierung von Fuzz-Tests

Die Nutzung der statischen Analyse und der Codeanalyse- und Generierungsfunktionen von LLMs führt zu guten Ergebnissen:

Fazit

Fuzz Testing hat ein sehr gutes Kosten-Nutzen-Verhältnis und deckt oft Fehler auf, die beim Schreiben und Debuggen von Software übersehen werden. Allerdings ist die Entwicklung hochwertiger Fuzz Tests anspruchsvoll und zeitaufwändig.

Die Nutzung generativer KI beim Fuzzing optimiert den Testprozess.

Selbstlernende KI durch Feedback-basiertes Fuzzing haben viele Vorteile:

Seminarempfehlung

Kommentare hinterlassen