Anpassung von Prompts mit Varianten#

Experimentelles Feature

Dies ist eine experimentelle Funktion und kann sich jederzeit ändern. Erfahren Sie mehr.

Um diesen Teil besser zu verstehen, lesen Sie bitte zuerst Schnellstart und Ausführen und Bewerten eines Flows.

Was ist eine Variante und warum sollten wir uns darum kümmern?#

Um Benutzern zu helfen, Prompts effizienter zu optimieren, führen wir das Konzept der Varianten ein, mit dem Sie das Verhalten des Modells unter verschiedenen Bedingungen testen können, wie z. B. unterschiedliche Formulierungen, Formatierungen, Kontexte, Temperaturen oder Top-K-Werte. Vergleichen und finden Sie den besten Prompt und die beste Konfiguration, die die Genauigkeit, Diversität oder Kohärenz des Modells maximieren.

Erstellen einer Ausführung mit einem anderen Variantenknoten#

In diesem Beispiel verwenden wir den Flow web-classification. Sein Knoten summarize_text_content hat zwei Varianten: variant_0 und variant_1. Der Unterschied zwischen ihnen sind die Eingabeparameter

...
nodes:
- name: summarize_text_content
  use_variants: true
...
node_variants:
  summarize_text_content:
    default_variant_id: variant_0
    variants:
      variant_0:
        node:
          type: llm
          source:
            type: code
            path: summarize_text_content.jinja2
          inputs:
            deployment_name: text-davinci-003
            max_tokens: '128'
            temperature: '0.2'
            text: ${fetch_text_content_from_url.output}
          provider: AzureOpenAI
          connection: open_ai_connection
          api: completion
          module: promptflow.tools.aoai
      variant_1:
        node:
          type: llm
          source:
            type: code
            path: summarize_text_content__variant_1.jinja2
          inputs:
            deployment_name: text-davinci-003
            max_tokens: '256'
            temperature: '0.3'
            text: ${fetch_text_content_from_url.output}
          provider: AzureOpenAI
          connection: open_ai_connection
          api: completion
          module: promptflow.tools.aoai

Sie können die gesamte Flow-Definition in flow.dag.yaml überprüfen.

Nun erstellen wir eine Varianten-Ausführung, die die Variante variant_1 des Knotens summarize_text_content verwendet. Angenommen, Sie befinden sich im Arbeitsverzeichnis <path-to-the-sample-repo>/examples/flows/standard

Beachten Sie, dass wir --variant übergeben, um anzugeben, welche Variante des Knotens ausgeführt werden soll.

pf run create --flow web-classification --data web-classification/data.jsonl --variant '${summarize_text_content.variant_1}' --column-mapping url='${data.url}' --stream --name my_first_variant_run
from promptflow.client import PFClient

pf = PFClient()  # get a promptflow client
flow = "web-classification"
data= "web-classification/data.jsonl"

# use the variant1 of the summarize_text_content node.
variant_run = pf.run(
    flow=flow,
    data=data,
    variant="${summarize_text_content.variant_1}",  # use variant 1.
    column_mapping={"url": "${data.url}"},
)

pf.stream(variant_run)

img img

Nachdem die Varianten-Ausführung erstellt wurde, können Sie die Varianten-Ausführung mit einem Evaluations-Flow evaluieren, genau wie Sie eine Standard-Flow-Ausführung evaluieren würden.

Nächste Schritte#

Erfahren Sie mehr über