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)

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