From 5f2e703c13061a1bb1b193526d3d25a211251536 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Wed, 18 Oct 2023 18:46:33 +0800 Subject: [PATCH 01/11] Add org examples sharing doc --- .../flow-example-sharing-in-organization.md | 64 ++++++++++++++++++ .../org_examples_in_flow_gallery.png | Bin 0 -> 132953 bytes 2 files changed, 64 insertions(+) create mode 100644 docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md create mode 100644 docs/media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png diff --git a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md new file mode 100644 index 00000000000..6c14141efb2 --- /dev/null +++ b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md @@ -0,0 +1,64 @@ +# Flow Example Sharing in Organization + +:::{admonition} Experimental feature +This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). +::: + +Flow developers may want to share their flows within their organization to enhance collaborative development. In this document, we will provide a detailed walkthrough on how to share a flow as a model in an organization registry. Additionally, we will demonstrate how to locate a flow in the Flow gallery. + +## How to share flow as a model in an organization registry +In order to share the flow, we need to register the flow as a model with some specific properties in an organization registry. + +### Prepare a `readme.md` file for the flow +In order to make the flow easily understand, it is better to add an `readme.md` for the flow in the flow folder. Here we take [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as example: +It included below parts in the readme file: +- What the flow is used to. +- What kinds of tools used in the flow. +- Prerequisites needed to run the flow. +- What you will learn from this flow. +Anything else you want others to know about your flow. + +> [!Note] This `readme.md` is optional. But we recommend you to add this file for your flow so that it can be easily and quickly understood. + + +### Prepare a model yaml for the flow +In this section, we will concentrate on the model properties related to this flow's UI display. For information on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is the `model.yml` file for flow: + +```yaml +$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json +name: +type: custom_model +path: +description: +version: +properties: + is-promptflow: true + azureml.promptflow.section: gallery + azureml.promptflow.type: + azureml.promptflow.name: + azureml.promptflow.description: +``` + +Here we use [this existing flow](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-wikipedia) as an example to introduce the model properties: +1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling us to filter and display it in the Flow gallery. +2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in Flow gallery. +3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under separate tabs accordingly. +4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in Flow gallery. +5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in Flow gallery. + +### Register a model in a organization registry +Now you have all things ready, run below command to register the previous model to a organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): +``` +az ml model create -f model.yml --registry-name +``` + +## How to locate a flow in the Flow gallery +- Open a workspace in the region which is supported by the organization registry. Your can find the regions supported by your registry in [this page](https://ml.azure.com/registries?tid=72f988bf-86f1-41af-91ab-2d7cd011db47). +- Click the `Create` button to open the Flow gallery, and you will find the flow registered before: + +![organization examples in flow gallery](../../media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png) + +1. `azureml.promptflow.type`: `evaluate` will be shown in the 'Evaluation' tab. Other values will be shown in the 'Flow' tab. +2. `azureml.promptflow.name`: shown as flow name in the flow card. +3. `azureml.promptflow.description`: shown as flow description in the flow card. +4. `readme.md`: click the `View detail` button will show the content in the `readme.md`. \ No newline at end of file diff --git a/docs/media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png b/docs/media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..d159f0b5a6dcc1084d2aa7f0af97355ec41ca390 GIT binary patch literal 132953 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�MuO{_iz8C5zx+S*ENBfruMeDL`Nw+~`o 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�C&iCIow+3(AE47 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 Date: Thu, 19 Oct 2023 11:08:25 +0800 Subject: [PATCH 02/11] Refine --- .../flow-example-sharing-in-organization.md | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md index 6c14141efb2..96375754c8a 100644 --- a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md +++ b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md @@ -4,31 +4,31 @@ This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). ::: -Flow developers may want to share their flows within their organization to enhance collaborative development. In this document, we will provide a detailed walkthrough on how to share a flow as a model in an organization registry. Additionally, we will demonstrate how to locate a flow in the Flow gallery. +Flow developers may want to share their flows within their organization to enhance collaborative development. In this document, we will provide a detailed walkthrough on how to share a flow as a model in an organization registry. Additionally, we will demonstrate how to locate a flow in the Flow Gallery. ## How to share flow as a model in an organization registry -In order to share the flow, we need to register the flow as a model with some specific properties in an organization registry. -### Prepare a `readme.md` file for the flow -In order to make the flow easily understand, it is better to add an `readme.md` for the flow in the flow folder. Here we take [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as example: -It included below parts in the readme file: -- What the flow is used to. -- What kinds of tools used in the flow. -- Prerequisites needed to run the flow. -- What you will learn from this flow. -Anything else you want others to know about your flow. +To share a flow, the flow needs to be registered as a model with some specific properties in an organization registry. -> [!Note] This `readme.md` is optional. But we recommend you to add this file for your flow so that it can be easily and quickly understood. +### Prepare a `readme.md` file for the flow +To make the flow easily understand, it is better to include an `readme.md` file for the flow in the flow folder. Here we'll use [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as an example: +The readme file may include the following sections: +- The purpose of the flow. +- The tools utilized in the flow. +- The prerequisites required to execute the flow. +- What knowledge can be gained from this flow.. +Any other information you wish to share about your flow. ### Prepare a model yaml for the flow -In this section, we will concentrate on the model properties related to this flow's UI display. For information on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is the `model.yml` file for flow: + +In this section, we will focus on the model properties related to the user interface display of this flow. For details on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is the `model.yml` file for flow: ```yaml $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: type: custom_model -path: +path: description: version: properties: @@ -39,26 +39,44 @@ properties: azureml.promptflow.description: ``` -Here we use [this existing flow](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-wikipedia) as an example to introduce the model properties: -1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling us to filter and display it in the Flow gallery. -2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in Flow gallery. +Properties released to user interface display of this flow: +1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling us to filter it out. +2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in Flow Gallery. 3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under separate tabs accordingly. -4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in Flow gallery. -5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in Flow gallery. +4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in Flow Gallery. +5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in Flow Gallery. + +Take [this existing flow](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-wikipedia) as an example, the model yml for it will look like below: +```yaml +$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json +name: chat-with-wikipedia-in-org +type: custom_model +path: chat_with_wikipedia +description: promptflow flow registered as a custom model +version: 1 +properties: + is-promptflow: true + azureml.promptflow.section: gallery + azureml.promptflow.type: chat + azureml.promptflow.name: Chat with Wikipedia in Org + azureml.promptflow.description: ChatGPT-based chatbot that leverages Wikipedia data to ground the responses. +``` ### Register a model in a organization registry -Now you have all things ready, run below command to register the previous model to a organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): + +Run the following command to register the previous model to an organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): ``` az ml model create -f model.yml --registry-name ``` -## How to locate a flow in the Flow gallery -- Open a workspace in the region which is supported by the organization registry. Your can find the regions supported by your registry in [this page](https://ml.azure.com/registries?tid=72f988bf-86f1-41af-91ab-2d7cd011db47). -- Click the `Create` button to open the Flow gallery, and you will find the flow registered before: +## How to locate a flow in the Flow Gallery + +- Open a workspace in a region that is compatible with the organization registry. +- Click the `Create` button to open the Flow Gallery, and you can find the flow registered before: ![organization examples in flow gallery](../../media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png) -1. `azureml.promptflow.type`: `evaluate` will be shown in the 'Evaluation' tab. Other values will be shown in the 'Flow' tab. +1. `azureml.promptflow.type`: the `evaluate` will be displayed under the 'Evaluation' tab, while other values will appear under the 'Flow' tab. 2. `azureml.promptflow.name`: shown as flow name in the flow card. 3. `azureml.promptflow.description`: shown as flow description in the flow card. 4. `readme.md`: click the `View detail` button will show the content in the `readme.md`. \ No newline at end of file From 4ab3e64af3f260b7449fe2a38237f0734da9c8d3 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Thu, 19 Oct 2023 11:26:03 +0800 Subject: [PATCH 03/11] refine --- docs/how-to-guides/develop-a-flow/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/how-to-guides/develop-a-flow/index.md b/docs/how-to-guides/develop-a-flow/index.md index 0bc532f214c..d0004b0e687 100644 --- a/docs/how-to-guides/develop-a-flow/index.md +++ b/docs/how-to-guides/develop-a-flow/index.md @@ -7,4 +7,5 @@ We provide guides on how to develop a flow by writing a flow yaml from scratch i develop-standard-flow develop-chat-flow +flow-example-sharing-in-organization ``` \ No newline at end of file From c78bee4ee48f201d6ece6e305c23e41ae995d050 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Thu, 19 Oct 2023 12:50:18 +0800 Subject: [PATCH 04/11] Refine --- .../develop-a-flow/flow-example-sharing-in-organization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md index 96375754c8a..b513fd31d9f 100644 --- a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md +++ b/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md @@ -62,7 +62,7 @@ properties: azureml.promptflow.description: ChatGPT-based chatbot that leverages Wikipedia data to ground the responses. ``` -### Register a model in a organization registry +### Register a model in an organization registry Run the following command to register the previous model to an organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): ``` From 89b66b7e320f12a00b4369366d350ce1e0e0afd3 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Thu, 19 Oct 2023 14:32:29 +0800 Subject: [PATCH 05/11] move doc to azureai --- .../flow-example-sharing-in-organization.md | 2 +- docs/cloud/index.md | 1 + docs/how-to-guides/develop-a-flow/index.md | 1 - .../azureml}/org_examples_in_flow_gallery.png | Bin 4 files changed, 2 insertions(+), 2 deletions(-) rename docs/{how-to-guides/develop-a-flow => cloud/azureai}/flow-example-sharing-in-organization.md (97%) rename docs/media/{how-to-guides/share-example-in-org-registry => cloud/azureml}/org_examples_in_flow_gallery.png (100%) diff --git a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md similarity index 97% rename from docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md rename to docs/cloud/azureai/flow-example-sharing-in-organization.md index b513fd31d9f..4f5a72e90e4 100644 --- a/docs/how-to-guides/develop-a-flow/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -74,7 +74,7 @@ az ml model create -f model.yml --registry-name - Open a workspace in a region that is compatible with the organization registry. - Click the `Create` button to open the Flow Gallery, and you can find the flow registered before: -![organization examples in flow gallery](../../media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png) +![organization examples in flow gallery](../../media/cloud/azureml/org_examples_in_flow_gallery.png) 1. `azureml.promptflow.type`: the `evaluate` will be displayed under the 'Evaluation' tab, while other values will appear under the 'Flow' tab. 2. `azureml.promptflow.name`: shown as flow name in the flow card. diff --git a/docs/cloud/index.md b/docs/cloud/index.md index f01219b0428..1959d8532f1 100644 --- a/docs/cloud/index.md +++ b/docs/cloud/index.md @@ -8,4 +8,5 @@ You can develope your flow locally and seamlessly move the experience to azure c azureai/quick-start azureai/deploy-to-azure-appservice azureai/faq +azureai/flow-example-sharing-in-organization ``` \ No newline at end of file diff --git a/docs/how-to-guides/develop-a-flow/index.md b/docs/how-to-guides/develop-a-flow/index.md index d0004b0e687..0bc532f214c 100644 --- a/docs/how-to-guides/develop-a-flow/index.md +++ b/docs/how-to-guides/develop-a-flow/index.md @@ -7,5 +7,4 @@ We provide guides on how to develop a flow by writing a flow yaml from scratch i develop-standard-flow develop-chat-flow -flow-example-sharing-in-organization ``` \ No newline at end of file diff --git a/docs/media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png b/docs/media/cloud/azureml/org_examples_in_flow_gallery.png similarity index 100% rename from docs/media/how-to-guides/share-example-in-org-registry/org_examples_in_flow_gallery.png rename to docs/media/cloud/azureml/org_examples_in_flow_gallery.png From dec3c193253e02daeae3c9c52a8e71bae3a2abd3 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Thu, 19 Oct 2023 16:15:40 +0800 Subject: [PATCH 06/11] Refine --- .../flow-example-sharing-in-organization.md | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md index 4f5a72e90e4..87088ee95ee 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -4,25 +4,22 @@ This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). ::: -Flow developers may want to share their flows within their organization to enhance collaborative development. In this document, we will provide a detailed walkthrough on how to share a flow as a model in an organization registry. Additionally, we will demonstrate how to locate a flow in the Flow Gallery. +In this document, we will walk you through the steps to share your flow in an organization scope. This needs to register your flow as a model with some specific properties in an organization registry. Once completed, the model will be shown as a flow example in workspace portal. -## How to share flow as a model in an organization registry - -To share a flow, the flow needs to be registered as a model with some specific properties in an organization registry. +## Share flow as a model in an organization registry ### Prepare a `readme.md` file for the flow -To make the flow easily understand, it is better to include an `readme.md` file for the flow in the flow folder. Here we'll use [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as an example: -The readme file may include the following sections: +To make the flow easily understand, it is better to include an `readme.md` file for the flow in the flow folder. Here we'll use [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as an example, the readme file may include following sections: - The purpose of the flow. - The tools utilized in the flow. - The prerequisites required to execute the flow. -- What knowledge can be gained from this flow.. -Any other information you wish to share about your flow. +- What knowledge can be gained from this flow. +- Any other information you wish to share about your flow. ### Prepare a model yaml for the flow -In this section, we will focus on the model properties related to the user interface display of this flow. For details on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is the `model.yml` file for flow: +In this section, we will focus on the model properties related to the UI display of this flow. For details on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is a `model.yml` template for flow: ```yaml $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json @@ -39,14 +36,14 @@ properties: azureml.promptflow.description: ``` -Properties released to user interface display of this flow: -1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling us to filter it out. -2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in Flow Gallery. -3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under separate tabs accordingly. -4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in Flow Gallery. -5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in Flow Gallery. +Properties released to UI display of this flow: +1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling promptflow service to filter it out. +2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in the Flow Gallery. +3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under different tabs accordingly. +4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in the Flow Gallery. +5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in the Flow Gallery. -Take [this existing flow](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-wikipedia) as an example, the model yml for it will look like below: +Take [this existing flow](https://github.com/microsoft/promptflow/tree/main/examples/flows/chat/chat-with-wikipedia) as an example, the `model.yml` for it will look like below: ```yaml $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: chat-with-wikipedia-in-org @@ -62,21 +59,21 @@ properties: azureml.promptflow.description: ChatGPT-based chatbot that leverages Wikipedia data to ground the responses. ``` -### Register a model in an organization registry +### Register the model in an organization registry -Run the following command to register the previous model to an organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): +Run the command below to register the flow as a model to an organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): ``` az ml model create -f model.yml --registry-name ``` -## How to locate a flow in the Flow Gallery +## Locate the flow in the Flow Gallery -- Open a workspace in a region that is compatible with the organization registry. +- Open a workspace in a region supported by the organization registry. - Click the `Create` button to open the Flow Gallery, and you can find the flow registered before: ![organization examples in flow gallery](../../media/cloud/azureml/org_examples_in_flow_gallery.png) -1. `azureml.promptflow.type`: the `evaluate` will be displayed under the 'Evaluation' tab, while other values will appear under the 'Flow' tab. +1. `azureml.promptflow.type`: flows with `evaluate` value will be displayed under the 'Evaluation' tab, while flows with other values will appear under the 'Flow' tab. 2. `azureml.promptflow.name`: shown as flow name in the flow card. 3. `azureml.promptflow.description`: shown as flow description in the flow card. 4. `readme.md`: click the `View detail` button will show the content in the `readme.md`. \ No newline at end of file From 65bf8426f9f792213a67c1a27399ee8ea8ef6678 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Thu, 19 Oct 2023 16:24:07 +0800 Subject: [PATCH 07/11] Fix link --- docs/cloud/azureai/flow-example-sharing-in-organization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md index 87088ee95ee..a5c2ada3e9e 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -1,7 +1,7 @@ # Flow Example Sharing in Organization :::{admonition} Experimental feature -This is an experimental feature, and may change at any time. Learn [more](../faq.md#stable-vs-experimental). +This is an experimental feature, and may change at any time. Learn [more](../../how-to-guides/faq.md#stable-vs-experimental). ::: In this document, we will walk you through the steps to share your flow in an organization scope. This needs to register your flow as a model with some specific properties in an organization registry. Once completed, the model will be shown as a flow example in workspace portal. From 7828949018178d24d12bb29e595b1e0abb2c3a1f Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Fri, 20 Oct 2023 18:06:01 +0800 Subject: [PATCH 08/11] Resolve comments --- .../cloud/azureai/flow-example-sharing-in-organization.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md index a5c2ada3e9e..59cd566fbae 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -37,8 +37,8 @@ properties: ``` Properties released to UI display of this flow: -1. `is-promptflow`: value will always be `true`. This property distinguishes it from other models, enabling promptflow service to filter it out. -2. `azureml.promptflow.section`: value will always be `gallery`. This property indicates UI that this flow needs to be shown in the Flow Gallery. +1. `is-promptflow`: value should always be `true`. This property distinguishes it from other models, enabling promptflow service to filter it out. +2. `azureml.promptflow.section`: value should always be `gallery`. This property indicates UI that this flow needs to be shown in the Flow Gallery. 3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under different tabs accordingly. 4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in the Flow Gallery. 5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in the Flow Gallery. @@ -61,11 +61,13 @@ properties: ### Register the model in an organization registry -Run the command below to register the flow as a model to an organization registry. More details about [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): + Run the command below to register the flow as a model to an organization registry: ``` az ml model create -f model.yml --registry-name ``` +> [!Note] More details about [organization registry creation](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=studio#create-a-registry) and [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create) + ## Locate the flow in the Flow Gallery - Open a workspace in a region supported by the organization registry. From 2689a9012b3aebcbe2992640662070007540f4d7 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Fri, 20 Oct 2023 18:07:33 +0800 Subject: [PATCH 09/11] refine --- docs/cloud/azureai/flow-example-sharing-in-organization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md index 59cd566fbae..436727ebb77 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -66,7 +66,7 @@ properties: az ml model create -f model.yml --registry-name ``` -> [!Note] More details about [organization registry creation](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=studio#create-a-registry) and [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create) +> [!Note] More details about [registry creation](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=studio#create-a-registry) and [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create) ## Locate the flow in the Flow Gallery From 4b6441c6f04cd5493b10b9e1d4776c37dda3b005 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Wed, 25 Oct 2023 18:35:53 +0800 Subject: [PATCH 10/11] Resolve previous comments --- docs/cloud/azureai/flow-example-sharing-in-organization.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/flow-example-sharing-in-organization.md index 436727ebb77..2768b442dab 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/flow-example-sharing-in-organization.md @@ -39,7 +39,7 @@ properties: Properties released to UI display of this flow: 1. `is-promptflow`: value should always be `true`. This property distinguishes it from other models, enabling promptflow service to filter it out. 2. `azureml.promptflow.section`: value should always be `gallery`. This property indicates UI that this flow needs to be shown in the Flow Gallery. -3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and the UI will display different types of flows under different tabs accordingly. +3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and UI will display flows with `evaluate` value under the 'Evaluation' tab, and display flows with other values under the 'Flow' tab. 4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in the Flow Gallery. 5. `azureml.promptflow.description`: the description of the flow which will be shown as flow description in the Flow Gallery. @@ -61,13 +61,11 @@ properties: ### Register the model in an organization registry - Run the command below to register the flow as a model to an organization registry: + Run the command below to register the flow as a model to an organization registry. More details about [registry creation](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=studio#create-a-registry) and [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create): ``` az ml model create -f model.yml --registry-name ``` -> [!Note] More details about [registry creation](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-registries?view=azureml-api-2&tabs=studio#create-a-registry) and [model creation](https://learn.microsoft.com/en-us/cli/azure/ml/model?view=azure-cli-latest#az-ml-model-create) - ## Locate the flow in the Flow Gallery - Open a workspace in a region supported by the organization registry. From 09d99ea657213f758ea7228a921c18b1bd3b8cf0 Mon Sep 17 00:00:00 2001 From: Ge Gao Date: Fri, 27 Oct 2023 14:46:07 +0800 Subject: [PATCH 11/11] refine --- ...aring-your-flows-in-promt-flow-gallery.md} | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) rename docs/cloud/azureai/{flow-example-sharing-in-organization.md => sharing-your-flows-in-promt-flow-gallery.md} (66%) diff --git a/docs/cloud/azureai/flow-example-sharing-in-organization.md b/docs/cloud/azureai/sharing-your-flows-in-promt-flow-gallery.md similarity index 66% rename from docs/cloud/azureai/flow-example-sharing-in-organization.md rename to docs/cloud/azureai/sharing-your-flows-in-promt-flow-gallery.md index 2768b442dab..fd02354c6f2 100644 --- a/docs/cloud/azureai/flow-example-sharing-in-organization.md +++ b/docs/cloud/azureai/sharing-your-flows-in-promt-flow-gallery.md @@ -1,25 +1,28 @@ -# Flow Example Sharing in Organization +# Sharing Your Flows in Prompt Flow Gallery :::{admonition} Experimental feature This is an experimental feature, and may change at any time. Learn [more](../../how-to-guides/faq.md#stable-vs-experimental). ::: -In this document, we will walk you through the steps to share your flow in an organization scope. This needs to register your flow as a model with some specific properties in an organization registry. Once completed, the model will be shown as a flow example in workspace portal. +In this document, we will walk you through the steps to share your flows in Prompt Flow Gallery. This needs to register your flow as a model with specific flow metadata in an organization registry. Once completed, the model will be shown as a flow example in Prompt Flow Gallery on the workspace portal page. -## Share flow as a model in an organization registry +## Registering your flow in AzureML Registry -### Prepare a `readme.md` file for the flow +### Creating a `README.md` file for your flow -To make the flow easily understand, it is better to include an `readme.md` file for the flow in the flow folder. Here we'll use [this existing readme](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) as an example, the readme file may include following sections: -- The purpose of the flow. -- The tools utilized in the flow. -- The prerequisites required to execute the flow. -- What knowledge can be gained from this flow. -- Any other information you wish to share about your flow. +To make the flow easily understandable, include a `README.md` file in the flow folder explaining how to use it. The README may contain the following sections: +1. The purpose of the flow. +2. The tools utilized in the flow. +3. The prerequisites required to execute the flow. +4. The knowledge that can be acquired from this flow. +5. The execution process of the flow. +6. Any additional information about your flow. -### Prepare a model yaml for the flow +See this [example README](https://github.com/microsoft/promptflow/blob/main/examples/flows/chat/chat-with-wikipedia/README.md) with sections addressing points 1 to 5. A well-written README improves discoverability and enables collaboration. -In this section, we will focus on the model properties related to the UI display of this flow. For details on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is a `model.yml` template for flow: +### Preparing flow metadata for gallery display + +To registry the flow as a model in registry, we need to prepare a model yaml file with some flow metadata. Here, we will primarily focus on the properties related to the UI display of this flow. For more details on other model fields, please refer to [model yaml schema](https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-model?view=azureml-api-2). Below is a `model.yml` template for the flow: ```yaml $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json @@ -36,8 +39,8 @@ properties: azureml.promptflow.description: ``` -Properties released to UI display of this flow: -1. `is-promptflow`: value should always be `true`. This property distinguishes it from other models, enabling promptflow service to filter it out. +Properties related to the UI display of this flow include: +1. `is-promptflow`: value should always be `true`. This property differentiates it from other models, enabling promptflow service to filter it out. 2. `azureml.promptflow.section`: value should always be `gallery`. This property indicates UI that this flow needs to be shown in the Flow Gallery. 3. `azureml.promptflow.type`: value can be `chat`, `standard` or `evaluate`. This property identifies the type of your flow, and UI will display flows with `evaluate` value under the 'Evaluation' tab, and display flows with other values under the 'Flow' tab. 4. `azureml.promptflow.name`: the name of the flow which will be shown as the flow name in the Flow Gallery.