microsoft--promptflow
e768098d0e
tools_continuous_delivery / Private PyPI non-main branch release (push) Has been skipped
tools_continuous_delivery / Private PyPI main branch release (push) Failing after 2m42s
Publish Promptflow Doc / Build (push) Has been cancelled
Publish Promptflow Doc / Deploy (push) Has been cancelled
Flake8 Lint / flake8 (push) Has been cancelled
Spell check CI / Spell_Check (push) Has been cancelled
182 行
5.5 KiB
Markdown
182 行
5.5 KiB
Markdown
# Quick start
|
|
|
|
This guide will walk you through the first steps of the prompt flow code-first experience.
|
|
|
|
**Prerequisite** - To make the most of this tutorial, you'll need:
|
|
- Python programming knowledge
|
|
|
|
**Learning Objectives** - Upon completing this tutorial, you should know how to:
|
|
- Setup your python environment to run prompt flow
|
|
- Create a flow using a prompt and python function
|
|
- Test the flow using your favorite experience: CLI, SDK or UI.
|
|
|
|
## Installation
|
|
|
|
Install promptflow package to start.
|
|
```sh
|
|
pip install promptflow
|
|
```
|
|
|
|
Learn more about [installation](./installation/index.md).
|
|
|
|
## Create your first flow
|
|
|
|
### Model a LLM call with a prompty
|
|
|
|
Create a Prompty file to help you trigger one LLM call.
|
|
|
|
```md
|
|
---
|
|
name: Minimal Chat
|
|
model:
|
|
api: chat
|
|
configuration:
|
|
type: azure_openai
|
|
azure_deployment: gpt-35-turbo
|
|
parameters:
|
|
temperature: 0.2
|
|
max_tokens: 1024
|
|
inputs:
|
|
question:
|
|
type: string
|
|
sample:
|
|
question: "What is Prompt flow?"
|
|
---
|
|
|
|
system:
|
|
You are a helpful assistant.
|
|
|
|
user:
|
|
{{question}}
|
|
```
|
|
|
|
Prompty is a markdown file. The front matter structured in `YAML`, encapsulates a series of metadata fields pivotal for defining the model’s configuration and the inputs for the prompty. After this front matter is the prompt template, articulated in the `Jinja` format.
|
|
See more details in [Develop a prompty](./develop-a-prompty/index.md).
|
|
|
|
### Create a flow
|
|
Create a python function which is the entry of a `flow`.
|
|
|
|
```python
|
|
import os
|
|
|
|
from dotenv import load_dotenv
|
|
from pathlib import Path
|
|
from promptflow.tracing import trace
|
|
from promptflow.core import Prompty
|
|
|
|
BASE_DIR = Path(__file__).absolute().parent
|
|
|
|
@trace
|
|
def chat(question: str = "What's the capital of France?") -> str:
|
|
"""Flow entry function."""
|
|
|
|
if "OPENAI_API_KEY" not in os.environ and "AZURE_OPENAI_API_KEY" not in os.environ:
|
|
# load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
prompty = Prompty.load(source=BASE_DIR / "chat.prompty")
|
|
# trigger a llm call with the prompty obj
|
|
output = prompty(question=question)
|
|
return output
|
|
```
|
|
|
|
Flow can be a python function or class or a yaml file describing a DAG which encapsulates your LLM application logic.
|
|
Learn more on the [flow concept](../concepts/concept-flows.md) and how to [Develop a flow](./develop-a-flex-flow/index.md).
|
|
|
|
See the full example of this python file in: [Minimal Chat](https://github.com/microsoft/promptflow/tree/main/examples/flex-flows/chat-minimal).
|
|
|
|
## Test the flow
|
|
|
|
Test the flow with your favorite experience: CLI, SDK or UI.
|
|
|
|
::::{tab-set}
|
|
|
|
:::{tab-item} CLI
|
|
:sync: CLI
|
|
|
|
`pf` is the CLI command you get when you install the `promptflow` package. Learn more about features of the `pf` CLI in the [reference doc](https://microsoft.github.io/promptflow/reference/pf-command-reference.html).
|
|
|
|
```sh
|
|
pf flow test --flow flow:chat --inputs question="What's the capital of France?"
|
|
```
|
|
|
|
You will get some output like the following in your terminal.
|
|
```text
|
|
Prompt flow service has started...
|
|
You can view the trace detail from the following URL:
|
|
http://127.0.0.1:51330/v1.0/ui/traces/?#collection=chat-minimal&uiTraceId=0x49382bbe30664f747348a8ae9dc8b954
|
|
|
|
The capital of France is Paris
|
|
|
|
```
|
|
|
|
If you click the trace URL printed, you will see a trace UI which helps you understand the actual LLM call that happened behind the scenes.
|
|

|
|
|
|
|
|
:::
|
|
|
|
:::{tab-item} SDK
|
|
:sync: SDK
|
|
|
|
Call the chat function with your question. Assume you have a `flow.py` file with the following content.
|
|
```python
|
|
if __name__ == "__main__":
|
|
from promptflow.tracing import start_trace
|
|
|
|
start_trace()
|
|
|
|
result = chat("What's the capital of France?")
|
|
print(result)
|
|
```
|
|
|
|
Run the script with `python flow.py`, and you will get some output like below:
|
|
```text
|
|
Prompt flow service has started...
|
|
You can view the trace detail from the following URL:
|
|
http://127.0.0.1:51330/v1.0/ui/traces/?#collection=chat-minimal&uiTraceId=0x49382bbe30664f747348a8ae9dc8b954
|
|
|
|
The capital of France is Paris
|
|
|
|
```
|
|
|
|
If you click the trace URL printed, you will see a trace UI which helps you understand the actual LLM call that happened behind the scenes.
|
|

|
|
:::
|
|
|
|
:::{tab-item} UI
|
|
:sync: VS Code Extension
|
|
|
|
Start test chat ui with below command.
|
|
|
|
```sh
|
|
pf flow test --flow flow:chat --ui
|
|
```
|
|
|
|
The command will open a browser page like below:
|
|

|
|
|
|
See more details of this topic in [Chat with a flow](./chat-with-a-flow/index.md).
|
|
|
|
|
|
Click the "View trace" button to see a trace UI which helps you understand the actual LLM call that happened behind the scenes.
|
|

|
|
|
|
|
|
:::
|
|
|
|
::::
|
|
|
|
|
|
## Next steps
|
|
|
|
Learn more on how to:
|
|
- [Tracing](./tracing/index.md): details on how tracing works.
|
|
- [Develop a prompty](./develop-a-prompty/index.md): details on how to develop prompty.
|
|
- [Develop a flow](./develop-a-flex-flow/index.md): details on how to develop a flow using a python function or class.
|
|
- [Develop a DAG flow](./develop-a-dag-flow/index.md): details on how to develop a flow using friendly DAG UI.
|
|
|
|
And you can also check our [Tutorials](https://microsoft.github.io/promptflow/tutorials/index.html), especially:
|
|
- [Tutorial: Chat with PDF](https://microsoft.github.io/promptflow/tutorials/chat-with-pdf.html): An end-to-end tutorial on how to build a high quality chat application with prompt flow, including flow development and evaluation with metrics.
|
|
|