Während die Funktionsweise von LLMs für viele Entwickler schwer fassbar sein mag, ist die Funktionsweise von LLM-Apps das nicht – sie beinhalten im Wesentlichen eine Reihe von Aufrufen an externe Dienste wie LLMs/Datenbanken/Suchmaschinen oder eine Zwischenverarbeitung von Daten, die alle miteinander verknüpft sind.

Flows#

Flex Flow#

Sie können LLM-Apps mithilfe einer Python-Funktion oder -Klasse als Einstiegspunkt erstellen, die Ihre App-Logik kapselt. Sie können diese direkt mit einer reinen Code-Erfahrung testen oder ausführen. Oder Sie können eine flow.flex.yaml definieren, die auf diese Einträge verweist, was das Testen, Ausführen oder Anzeigen von Traces über die Promptflow VS Code Extension ermöglicht.

Unsere Beispiele sollten Ihnen auch eine Vorstellung davon geben, wie Sie Flex Flows schreiben.

DAG-Flow#

Somit können LLM-Apps als gerichtete azyklische Graphen (DAGs) von Funktionsaufrufen definiert werden. Diese DAGs sind Flows in Prompt Flow.

Ein DAG-Flow in Prompt Flow ist ein DAG von Funktionen (wir nennen sie Tools). Diese Funktionen/Tools sind über Eingabe-/Ausgabeabhängigkeiten verbunden und werden basierend auf der Topologie vom Prompt Flow Executor ausgeführt.

Ein Flow wird als YAML-Datei dargestellt und kann mit unserer Prompt Flow für VS Code-Erweiterung visualisiert werden. Hier ist ein Beispiel für eine flow.dag.yaml

flow_dag

Beziehen Sie sich bitte auf unsere Beispiele, um zu erfahren, wie Sie einen DAG-Flow schreiben.

Wann Flex- oder DAG-Flow verwendet werden sollte#

DAG-Flow bietet eine benutzerfreundliche Möglichkeit zur Entwicklung Ihrer LLM-App, was folgende Vorteile hat:

  • Low-Code: Benutzer können per Drag & Drop in der Benutzeroberfläche eine LLM-App erstellen.

  • DAG-Visualisierung: Benutzer können die Logikstruktur der App mit der DAG-Ansicht leicht verstehen.

Flex-Flow bietet eine codefreundliche Möglichkeit zur Entwicklung Ihrer LLM-App, was folgende Vorteile hat:

  • Schneller Einstieg: Benutzer können schnell mit einem einfachen Prompt testen und dann mit Python-Code und Tracing-Visualisierungs-UI anpassen.

  • Fortgeschrittenere Orchestrierung: Benutzer können komplexe Flows mit integrierten Python-Steueroperatoren (if-else, foreach) oder anderen Drittanbieter-/Open-Source-Bibliotheken schreiben.

  • Einfache Integration von anderen Plattformen: Benutzer sind möglicherweise bereits auf Plattformen wie langchain und semantic kernel mit vorhandenem Code. Benutzer können Prompt Flow mit wenigen Codeänderungen einfach integrieren.

Flow-Typen#

Prompt Flow-Beispiele organisieren Flows in drei Kategorien:

  • Standard Flow oder Chat Flow: Diese beiden sind für die Entwicklung Ihrer LLM-Anwendung gedacht. Der Hauptunterschied zwischen den beiden liegt in der zusätzlichen Unterstützung, die der "Chat Flow" für Chat-Anwendungen bietet. Zum Beispiel können Sie chat_history, chat_input und chat_output für Ihren Flow definieren. Prompt Flow bietet im Gegenzug eine chatähnliche Erfahrung (einschließlich des Gesprächsverlaufs) während der Entwicklung des Flows. Darüber hinaus stellt er eine Beispiel-Chat-Anwendung für die Bereitstellung bereit.

  • Evaluations-Flow ist dazu gedacht, die Qualität Ihrer LLM-Anwendung (Standard/Chat-Flow) zu testen/bewerten. Er wird normalerweise auf den Ausgaben von Standard-/Chat-Flows ausgeführt und berechnet einige Metriken, die verwendet werden können, um festzustellen, ob der Standard-/Chat-Flow gut funktioniert. Z. B. ist die Antwort korrekt? Basiert die Antwort auf Fakten?

Flex Flow Beispiele

  • basic: Ein grundlegender Standard-Flow, der mit einer Funktions-Einstiegspunkt definiert ist, der Azure OpenAI mit in Umgebungsvariablen gespeicherten Verbindungsinformationen aufruft.

  • chat-basic: Ein grundlegender Chat-Flow, der mit einer Klassen-Einstiegspunkt definiert ist. Er zeigt, wie man einen Chatbot erstellt, der sich an frühere Interaktionen erinnern und den Gesprächsverlauf nutzen kann, um die nächste Nachricht zu generieren.

  • eval-code-quality: Ein Beispiel-Flow, der mit einer Funktions-Einstiegspunkt definiert ist und zeigt, wie die Qualität von Code-Snippets bewertet wird.

DAG-Flow Beispiele

  • basic: Ein grundlegender Standard-Flow, der ein benutzerdefiniertes Python-Tool verwendet, das Azure OpenAI mit in Umgebungsvariablen gespeicherten Verbindungsinformationen aufruft.

  • chat-basic: Dieses Beispiel zeigt, wie man einen grundlegenden Chat-Flow erstellt. Es demonstriert, wie man einen Chatbot erstellt, der sich an frühere Interaktionen erinnern und den Gesprächsverlauf nutzen kann, um die nächste Nachricht zu generieren.

  • eval-basic:

Nächste Schritte#