使用变体调整提示#
实验性功能
这是一个实验性功能,随时可能更改。了解更多。
为了更好地理解这部分内容,请先阅读快速入门和运行和评估流程。
什么是变体以及我们为什么要关注它#
为了帮助用户更高效地调整提示,我们引入了变体概念,它可以帮助您测试模型在不同条件下的行为,例如不同的措辞、格式、上下文、温度或top-k,比较并找到能够最大限度地提高模型准确性、多样性或连贯性的最佳提示和配置。
使用不同变体节点创建运行#
在此示例中,我们使用流程web-classification,其节点summarize_text_content
有两个变体:variant_0
和variant_1
。它们之间的区别在于输入参数。
...
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
您可以在flow.dag.yaml中查看整个流程定义。
现在我们将创建一个变体运行,该运行使用节点summarize_text_content
的变体variant_1
。假设您位于工作目录<path-to-the-sample-repo>/examples/flows/standard
请注意,我们传递--variant
来指定应运行节点的哪个变体。
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)
创建变体运行后,您可以使用评估流程评估变体运行,就像评估标准流程运行一样。
后续步骤#
了解更多关于