Skip to content

Latest commit

 

History

History
1068 lines (669 loc) · 21.2 KB

pf-command-reference.md

File metadata and controls

1068 lines (669 loc) · 21.2 KB

pf

:::{admonition} Experimental feature This is an experimental feature, and may change at any time. Learn more. :::

Manage prompt flow resources with the prompt flow CLI.

Command Description
pf flow Manage flows.
pf connection Manage connections.
pf run Manage runs.
pf tool Init or list tools.
pf config Manage config for current user.
pf service Manage prompt flow service.
pf upgrade Upgrade prompt flow CLI.
pf trace Manage traces.

pf flow

Manage promptflow flow flows.

Command Description
pf flow init Initialize a prompt flow directory.
pf flow test Test the prompt flow or flow node.
pf flow validate Validate a flow and generate flow.tools.json for it.
pf flow build Build a flow for further sharing or deployment.
pf flow serve Serve a flow as an endpoint.

pf flow init

Initialize a prompt flow directory.

pf flow init [--flow]
             [--entry]
             [--function]
             [--prompt-template]
             [--type]
             [--yes]

Examples

Create a flow folder with code, prompts and YAML specification of the flow.

pf flow init --flow <path-to-flow-direcotry>

Create an evaluation prompt flow

pf flow init --flow <path-to-flow-direcotry> --type evaluation

Create a flow in existing folder

pf flow init --flow <path-to-existing-folder> --entry <entry.py> --function <function-name> --prompt-template <path-to-prompt-template.md>

Optional Parameters

--flow

The flow name to create.

--entry

The entry file name.

--function

The function name in entry file.

--prompt-template

The prompt template parameter and assignment.

--type

The initialized flow type.
accepted value: standard, evaluation, chat

--yes --assume-yes -y

Automatic yes to all prompts; assume 'yes' as answer to all prompts and run non-interactively.

pf flow test

Test the prompt flow or flow node.

pf flow test --flow
             [--inputs]
             [--node]
             [--variant]
             [--debug]
             [--interactive]
             [--verbose]
             [--ui]

Examples

Test the flow.

pf flow test --flow <path-to-flow-directory>

Test the flow from json file.

pf flow test --flow <path-to-flow-directory> --inputs inputs.json

Test the flow with first line from jsonl file.

pf flow test --flow <path-to-flow-directory> --inputs inputs.jsonl

Test the flow with input values.

pf flow test --flow <path-to-flow-directory> --inputs data_key1=data_val1 data_key2=data_val2

Test the flow with specified variant node.

pf flow test --flow <path-to-flow-directory> --variant '${node_name.variant_name}'

Test the single node in the flow.

pf flow test --flow <path-to-flow-directory> --node <node_name>

Debug the single node in the flow.

pf flow test --flow <path-to-flow-directory> --node <node_name> --debug

Chat in the flow.

pf flow test --flow <path-to-flow-directory> --node <node_name> --interactive

Chat in the chat window.

pf flow test --flow <path-to-flow-directory> --ui

Required Parameter

--flow

The flow directory to test.

Optional Parameters

--inputs

Input data for the flow. Example: --inputs data1=data1_val data2=data2_val

--node

The node name in the flow need to be tested.

--variant

Node & variant name in format of ${node_name.variant_name}.

--debug

Debug the single node in the flow.

--interactive

Start a interactive chat session for chat flow.

--verbose

Displays the output for each step in the chat flow.

--ui

The flag to start an interactive chat experience in local chat window.

pf flow validate

Validate the prompt flow and generate a flow.tools.json under .promptflow. This file is required when using flow as a component in a Azure ML pipeline.

pf flow validate --source
                 [--debug]
                 [--verbose]

Examples

Validate the flow.

pf flow validate --source <path-to-flow>

Required Parameter

--source

The flow source to validate.

pf flow build

Build a flow for further sharing or deployment.

pf flow build --source
              --output
              --format
              [--variant]
              [--verbose]
              [--debug]

Examples

Build a flow as docker, which can be built into Docker image via docker build.

pf flow build --source <path-to-flow> --output <output-path> --format docker

Build a flow as docker with specific variant.

pf flow build --source <path-to-flow> --output <output-path> --format docker --variant '${node_name.variant_name}'

Required Parameter

--source

The flow or run source to be used.

--output

The folder to output built flow. Need to be empty or not existed.

--format

The format to build flow into

Optional Parameters

--variant

Node & variant name in format of ${node_name.variant_name}.

--verbose

Show more details for each step during build.

--debug

Show debug information during build.

pf flow serve

Serving a flow as an endpoint.

pf flow serve --source
              [--port]
              [--host]
              [--environment-variables]
              [--verbose]
              [--debug]
              [--skip-open-browser]

Examples

Serve flow as an endpoint.

pf flow serve --source <path-to-flow>

Serve flow as an endpoint with specific port and host.

pf flow serve --source <path-to-flow> --port <port> --host <host> --environment-variables key1="`${my_connection.api_key}`" key2="value2"

Required Parameter

--source

The flow or run source to be used.

Optional Parameters

--port

The port on which endpoint to run.

--host

The host of endpoint.

--environment-variables

Environment variables to set by specifying a property path and value. Example: --environment-variable key1="`${my_connection.api_key}`" key2="value2". The value reference to connection keys will be resolved to the actual value, and all environment variables specified will be set into os.environ.

--verbose

Show more details for each step during serve.

--debug

Show debug information during serve.

--skip-open-browser

Skip opening browser after serve. Store true parameter.

pf connection

Manage prompt flow connections.

Command Description
pf connection create Create a connection.
pf connection update Update a connection.
pf connection show Show details of a connection.
pf connection list List all the connection.
pf connection delete Delete a connection.

pf connection create

Create a connection.

pf connection create --file
                     [--name]
                     [--set]

Examples

Create a connection with YAML file.

pf connection create -f <yaml-filename>

Create a connection with YAML file with override.

pf connection create -f <yaml-filename> --set api_key="<api-key>"

Create a custom connection with .env file; note that overrides specified by --set will be ignored.

pf connection create -f .env --name <name>

Required Parameter

--file -f

Local path to the YAML file containing the prompt flow connection specification.

Optional Parameters

--name -n

Name of the connection.

--set

Update an object by specifying a property path and value to set. Example: --set property1.property2=.

pf connection update

Update a connection.

pf connection update --name
                     [--set]

Example

Update a connection.

pf connection update -n <name> --set api_key="<api-key>"

Required Parameter

--name -n

Name of the connection.

Optional Parameter

--set

Update an object by specifying a property path and value to set. Example: --set property1.property2=.

pf connection show

Show details of a connection.

pf connection show --name

Required Parameter

--name -n

Name of the connection.

pf connection list

List all the connection.

pf connection list

pf connection delete

Delete a connection.

pf connection delete --name

Required Parameter

--name -n

Name of the connection.

pf run

Manage prompt flow runs.

Command Description
pf run create Create a run.
pf run update Update a run metadata, including display name, description and tags.
pf run stream Stream run logs to the console.
pf run list List runs.
pf run show Show details for a run.
pf run show-details Preview a run's intput(s) and output(s).
pf run show-metrics Print run metrics to the console.
pf run visualize Visualize a run.
pf run archive Archive a run.
pf run restore Restore an archived run.

pf run create

Create a run.

pf run create [--file]
              [--flow]
              [--data]
              [--column-mapping]
              [--run]
              [--variant]
              [--stream]
              [--environment-variables]
              [--connections]
              [--set]
              [--source]
              [--resume-from] # require promptflow>=1.8.0, and original run created with promptflow>=1.8.0

Examples

Create a run with YAML file.

pf run create -f <yaml-filename>

Create a run with YAML file and replace another data in the YAML file.

pf run create -f <yaml-filename> --data <path-to-new-data-file-relative-to-yaml-file>

Create a run from flow directory and reference a run.

pf run create --flow <path-to-flow-directory> --data <path-to-data-file> --column-mapping groundtruth='${data.answer}' prediction='${run.outputs.category}' --run <run-name> --variant '${summarize_text_content.variant_0}' --stream

Create a run from an existing run record folder.

pf run create --source <path-to-run-folder>

Create a run by specifying the resume_from. (Require promptflow>=1.8.0, and original run created with promptflow>=1.8.0)

Succeeded line result of the original run will be reused, only remaining/failed lines will be run.

pf run create --resume-from <original-run-name>
pf run create --resume-from <original-run-name> --name <new-run-name> --set display_name='A new run' description='my run description' tags.Type=Test

Optional Parameters

--file -f

Local path to the YAML file containing the prompt flow run specification; can be overwritten by other parameters. Reference here for YAML schema.

--flow

Local path to the flow directory. If --file is provided, this path should be relative path to the file.

--data

Local path to the data file. If --file is provided, this path should be relative path to the file.

--column-mapping

Inputs column mapping, use ${data.xx} to refer to data columns, use ${run.inputs.xx} to refer to referenced run's data columns, and ${run.outputs.xx} to refer to run outputs columns.

--run

Referenced flow run name. For example, you can run an evaluation flow against an existing run. For example, "pf run create --flow evaluation_flow_dir --run existing_bulk_run".

--variant

Node & variant name in format of ${node_name.variant_name}.

--stream -s

Indicates whether to stream the run's logs to the console.
default value: False

--environment-variables

Environment variables to set by specifying a property path and value. Example: --environment-variable key1='${my_connection.api_key}' key2='value2'. The value reference to connection keys will be resolved to the actual value, and all environment variables specified will be set into os.environ.

--connections

Overwrite node level connections with provided value. Example: --connections node1.connection=test_llm_connection node1.deployment_name=gpt-35-turbo

--set

Update an object by specifying a property path and value to set. Example: --set property1.property2=<value>.

--source

Local path to the existing run record folder.

pf run update

Update a run metadata, including display name, description and tags.

pf run update --name
              [--set]

Example

Update a run

pf run update -n <name> --set display_name="<display-name>" description="<description>" tags.key="value"

Required Parameter

--name -n

Name of the run.

Optional Parameter

--set

Update an object by specifying a property path and value to set. Example: --set property1.property2=.

pf run stream

Stream run logs to the console.

pf run stream --name

Required Parameter

--name -n

Name of the run.

pf run list

List runs.

pf run list [--all-results]
            [--archived-only]
            [--include-archived]
            [--max-results]

Optional Parameters

--all-results

Returns all results.
default value: False

--archived-only

List archived runs only.
default value: False

--include-archived

List archived runs and active runs.
default value: False

--max-results -r

Max number of results to return. Default is 50.
default value: 50

pf run show

Show details for a run.

pf run show --name

Required Parameter

--name -n

Name of the run.

pf run show-details

Preview a run's input(s) and output(s).

pf run show-details --name

Required Parameter

--name -n

Name of the run.

pf run show-metrics

Print run metrics to the console.

pf run show-metrics --name

Required Parameter

--name -n

Name of the run.

pf run visualize

Visualize a run in the browser.

pf run visualize --names

Required Parameter

--names -n

Name of the runs, comma separated.

pf run archive

Archive a run.

pf run archive --name

Required Parameter

--name -n

Name of the run.

pf run restore

Restore an archived run.

pf run restore --name

Required Parameter

--name -n

Name of the run.

pf tool

Manage promptflow tools.

Command Description
pf tool init Initialize a tool directory.
pf tool list List all tools in the environment.
pf tool validate Validate tools.

pf tool init

Initialize a tool directory.

pf tool init [--package]
             [--tool]
             [--set]

Examples

Creating a package tool from scratch.

pf tool init --package <package-name> --tool <tool-name>

Creating a package tool with extra info.

pf tool init --package <package-name> --tool <tool-name> --set icon=<icon-path> category=<tool-category> tags="{'<key>': '<value>'}"

Creating a package tool from scratch.

pf tool init --package <package-name> --tool <tool-name>

Creating a python tool from scratch.

pf tool init --tool <tool-name>

Optional Parameters

--package

The package name to create.

--tool

The tool name to create.

--set

Set extra information about the tool, like category, icon and tags. Example: --set =.

pf tool list

List all tools in the environment.

pf tool list [--flow]

Examples

List all package tool in the environment.

pf tool list

List all package tool and code tool in the flow.

pf tool list --flow <path-to-flow-direcotry>

Optional Parameters

--flow

The flow directory.

pf tool validate

Validate tool.

pf tool validate --source

Examples

Validate single function tool.

pf tool validate -–source <package-name>.<module-name>.<tool-function>

Validate all tool in a package tool.

pf tool validate -–source <package-name>

Validate tools in a python script.

pf tool validate --source <path-to-tool-script>

Required Parameter

--source

The tool source to be used.

pf config

Manage config for current user.

Command Description
pf config set Set prompt flow configs for current user.
pf config show Show prompt flow configs for current user.

pf config set

Set prompt flow configs for current user, configs will be stored at ~/.promptflow/pf.yaml.

pf config set

Examples

Config connection provider to azure workspace for current user.

pf config set connection.provider="azureml://subscriptions/<your-subscription>/resourceGroups/<your-resourcegroup>/providers/Microsoft.MachineLearningServices/workspaces/<your-workspace>"

pf config show

Show prompt flow configs for current user.

pf config show

Examples

Show prompt flow for current user.

pf config show

pf service

Manage prompt flow service.

Command Description
pf service start Start prompt flow service.
pf service stop Stop prompt flow service.
pf service status Display the started prompt flow service info.

pf service start

Start the prompt flow service.

pf service start [--port]
                 [--force]
                 [--debug]

Examples

Prompt flow will try to start the service on the default port 23333. If the port is already taken, prompt flow will sequentially probe new ports, incrementing by one each time. Prompt flow retains the port number for future reference and will utilize it for subsequent service startups.

pf service start

Forcefully start the prompt flow service. If the port is already in use, the existing service will be terminated and restart a new service

pf service start --force

Start the prompt flow service with a specified port. If the port is already taken, prompt flow will raise an error unless forcefully start the service with the --force flag. Upon availability, prompt flow retains the port number for future reference and will utilize it for subsequent service startups.

pf service start --port 65553

Start prompt flow service in foreground, displaying debug level logs directly in the terminal.

pf service start --debug

Optional Parameters

--port -p

The designated port of the prompt flow service and port number will be remembered if port is available.

--force

Force restart the existing service if the port is used.

--debug

Start prompt flow service in foreground, displaying debug level logs directly in the terminal.

pf service stop

Stop prompt flow service.

pf service stop [--debug]

Example

Stop prompt flow service.

pf service stop

Optional Parameter

--debug

The flag to turn on debug mode for cli.

pf service status

Display the started prompt flow service info.

pf service status

pf upgrade

Upgrade prompt flow CLI.

Command Description
pf upgrade Upgrade prompt flow CLI.

Examples

Upgrade prompt flow without prompt and run non-interactively.

pf upgrade --yes

pf trace

Manage prompt flow traces.

Command Description
pf trace delete Delete traces

pf trace delete

Delete traces.

pf trace delete [--run]
                [--collection]
                [--started-before]  # should combine with `collection`

Examples

Delete traces comes from a specific run.

pf trace delete --run <run-name>

Delete traces in a specific collection.

pf trace delete --collection <collection>

Delete traces in a specific collection started before a specific time.

# `started-before` should be in ISO 8601 format
pf trace delete --collection <collection> --started-before '2024-03-19T15:17:23.807563'

Autocomplete

To activate autocomplete features for the pf CLI you need to add the following snippet to your ~/.bashrc or ~/.zshrc:

source <promptflow_package_install_root>/pf.completion.sh