-
Notifications
You must be signed in to change notification settings - Fork 888
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[doc] Refine tracing doc by separating tracing and devkit (#3002)
# Description This pull request splits tracing index into two pages, one for `promptflow-tracing`, one for `promptflow-devkit`. # All Promptflow Contribution checklist: - [x] **The pull request does not introduce [breaking changes].** - [ ] **CHANGELOG is updated for new features, bug fixes or other significant changes.** - [x] **I have read the [contribution guidelines](../CONTRIBUTING.md).** - [ ] **Create an issue and link to the pull request to get dedicated review from promptflow team. Learn more: [suggested workflow](../CONTRIBUTING.md#suggested-workflow).** ## General Guidelines and Best Practices - [x] Title of the pull request is clear and informative. - [x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, [see this page](https://github.com/Azure/azure-powershell/blob/master/documentation/development-docs/cleaning-up-commits.md). ### Testing Guidelines - [ ] Pull request includes test coverage for the included changes.
- Loading branch information
1 parent
98d3e69
commit 4351ea8
Showing
4 changed files
with
133 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Manage traces | ||
|
||
:::{admonition} Experimental feature | ||
This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). | ||
::: | ||
|
||
Prompt flow provides several trace toolkits in `promptflow-devkit`. This page will introduce how to delete traces in local storage with CLI/SDK. | ||
|
||
## Local trace management | ||
|
||
### Delete | ||
|
||
Prompt flow provides capability to delete traces in local storage, user can delete traces by collection (a bucket of traces, can be specified with `start_trace`), time range or prompt flow run with both CLI and SDK: | ||
|
||
::::{tab-set} | ||
:::{tab-item} CLI | ||
:sync: CLI | ||
|
||
```bash | ||
pf trace delete --collection <collection-name> # delete specific collection | ||
pf trace delete --collection <collection-name> --started-before '2024-03-01T16:00:00.123456' # delete traces started before the time in specific collection | ||
pf trace delete --run <run-name> # delete traces originated from specific prompt flow run | ||
``` | ||
::: | ||
|
||
:::{tab-item} SDK | ||
:sync: SDK | ||
|
||
```python | ||
from promptflow.client import PFClient | ||
|
||
pf = PFClient() | ||
pf.traces.delete(collection="<collection-name>") # delete specific collection | ||
pf.traces.delete(collection="<collection-name>", started_before="2024-03-01T16:00:00.123456") # delete traces started before the time in specific collection | ||
pf.traces.delete(run="<run-name>") # delete traces originated from specific prompt flow run | ||
``` | ||
|
||
::: | ||
|
||
:::: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# Visualize traces | ||
|
||
:::{admonition} Experimental feature | ||
This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). | ||
::: | ||
|
||
Prompt flow provides several trace toolkits in `promptflow-devkit`. This page will introduce trace UI, where user can better capture and visualize the internal execution details for flows. With trace UI, user can track and visualize flow execution, which provides critical insights for developer to understand the internal details of execution. | ||
|
||
## Overview | ||
|
||
With `promptflow-devkit` installed, running python script with `start_trace` will produce below example output: | ||
|
||
```text | ||
Prompt flow service has started... | ||
You can view the traces from local: http://localhost:<port>/v1.0/ui/traces/?#collection=basic | ||
``` | ||
|
||
Click the url, user will see a trace list that corresponding to each LLM calls: | ||
![LLM-trace-list](../../media/trace/LLM-trace-list.png) | ||
|
||
|
||
Click on one line record, the LLM detail will be displayed with chat window experience, together with other LLM call params: | ||
![LLM-trace-detail](../../media/trace/LLM-trace-detail.png) | ||
|
||
When combine trace and flow, trace UI provides a more comprehensive view of the flow execution, user can easily track the flow execution details, and debug the flow execution issues. | ||
|
||
### Flow test | ||
|
||
If your application is created with DAG flow, all flow test and batch run will be automatically enable trace function. Take the **[chat_with_pdf](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-pdf/)** as example. | ||
|
||
Run `pf flow test --flow .`, each flow test will generate single line in the trace UI: | ||
|
||
![flow-trace-record](../../media/trace/flow-trace-records.png) | ||
|
||
Click a record, the trace details will be visualized as tree view. | ||
|
||
![flow-trace-detail](../../media/trace/flow-trace-detail.png) | ||
|
||
### Evaluate against batch data | ||
|
||
Keep using **[chat_with_pdf](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-pdf)** as example, to trigger a batch run, you can use below command under the folder (you can learn more from [Run and evaluate a flow](https://microsoft.github.io/promptflow/how-to-guides/run-and-evaluate-a-flow/index.html) to understand what does below command do): | ||
|
||
```shell | ||
pf run create --flow . --data "./data/bert-paper-qna.jsonl" --column-mapping chat_history='${data.chat_history}' pdf_url='${data.pdf_url}' question='${data.question}' | ||
``` | ||
|
||
Then you will get a run related trace URL, e.g. `http://localhost:<port>/v1.0/ui/traces?run=chat_with_pdf_20240226_181222_219335` | ||
|
||
![batch_run_record](../../media/trace/batch_run_record.png) | ||
|
||
### Search | ||
|
||
Trace UI supports simple Python expression for search experience, which is demonstrated in below GIF: | ||
|
||
![advanced_search](../../media/trace/advanced-search.gif) | ||
|
||
Currently it supports: | ||
|
||
- Operators: | ||
- bool: `and` and `or` | ||
- compare: `==`, `!=`, `>`, `>=`, `<` and `<=` | ||
- Searchable fields: | ||
- metadata: `name`, `kind` and `status` | ||
- time: `start_time` | ||
- token count: `cumulative_token_count.total`, `cumulative_token_count.prompt` and `cumulative_token_count.completion` | ||
|
||
You can also find the hints by clicking the button right to the search edit box: | ||
|
||
![search_hint](../../media/trace/trace-ui-search-hint.png) |