Skip to content

Commit

Permalink
Copy Files From Source Repo (2024-02-16 17:45)
Browse files Browse the repository at this point in the history
  • Loading branch information
olprod committed Feb 17, 2024
1 parent 453a58e commit ec69a92
Show file tree
Hide file tree
Showing 4 changed files with 474 additions and 1 deletion.
91 changes: 91 additions & 0 deletions Instructions/Exercises/01-Explore-ai-studio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
lab:
title: Azure AI Studio を探索する
---

# Azure AI Studio を探索する

この演習では、Azure AI Studio を使用してプロジェクトを作成し、生成 AI モデルについて詳しく調べます。

> ****:Azure AI Studio は、執筆時点でプレビュー段階にあり、現在活発に開発されています。 このサービスの一部の要素は正確に説明されていない場合があり、一部の機能は期待どおりに動作しない場合があります。
> この演習を完了するには、Azure OpenAI サービスへのアクセスについて Azure サブスクリプションが承認されている必要があります。
この演習は約 **30** 分かかります。

## Azure AI Studio を開く

まず、Azure AI Studio を表示します。

1. Web ブラウザーで [https://ai.azure.com](https://ai.azure.com) を開き、Azure の資格情報を使ってサインインします。 Azure AI Studio のホーム ページは次の画像のようになります。

![Azure AI Studio のスクリーンショット。](./media/azure-ai-studio-home.png)

1. ホーム ページの情報を確認し、各タブを表示して、モデルと機能の探索、プロジェクトの作成、リソースの管理のオプションを確認します。

## Azure AI ハブを作成する

プロジェクトをホストするには、Azure サブスクリプションに Azure AI ハブが必要です。 このリソースは、プロジェクトの作成中に作成するか、事前にプロビジョニングすることができます (この演習ではこちらを行います)。

1. **[管理]** ページで、**[+ New Azure AI Hub]\(新しい Azure AI ハブ\)** を選びます。 次に、**[Create a new Azure AI Hub]\(新しい Azure AI ハブの作成\)** ウィザードで、次の設定で新しいリソースを作成します。
- **Azure AI Hub 名**:*一意の名前*
- **[サブスクリプション]**:"*ご自身の Azure サブスクリプション*"
- **[リソース グループ]**: "一意の名前で新しいリソース グループを作成するか、既存のものを選びます"**
- **[場所]**: "Azure OpenAI サービスでサポートされている場所を選びます"**
- **Azure OpenAI**:(新機能) ai-*hub_name*
- **AI 検索**:(なし)

Azure AI ハブが作成されると、次の画像のようになります。

![Azure AI Studio の Azure AI ハブの詳細のスクリーンショット。](./media/azure-ai-resource.png)

1. 新しいブラウザー タブを開き ([Azure AI Studio] タブは開いたままにします)、Azure portal ([https://portal.azure.com](https://portal.azure.com?azure-portal=true)) に移動します。プロンプトが表示されたら、Azure の資格情報を使ってサインインします。
1. Azure AI ハブを作成したリソース グループに移動し、作成された Azure リソースを表示します。

![Azure portal の Azure AI ハブと関連リソースのスクリーンショット。](./media/azure-portal.png)

1. Azure AI Studio ブラウザー タブに戻ります。
1. Azure AI ハブのページの左側のペインにある各ページを表示し、作成および管理できる成果物を確認します。 **[接続]** ページで、**Default_AzureOpenAI** という名前の Azure AI ハブを使用して作成した Azure OpenAI リソースへの接続が既に作成されていることを確認します。

## プロジェクトの作成

Azure AI ハブは、1 つ以上の "プロジェクト" を定義できる共同ワークスペースとして機能します。** Azure AI ハブにプロジェクトを作成してみましょう。

1. Azure AI Studio の **[ビルド]** ページで、**[+ 新しいプロジェクト]** を選びます。 次に、**[新しいプロジェクトの作成]** ウィザードで、次の設定でプロジェクトを作成します。
- **プロジェクト名**:"プロジェクトの一意の名前"**
- **AI Hub**:*AI ハブ*
1. プロジェクトが作成されるまで待ちます。 準備ができたら、次の画像のようになります。

![Azure AI Studio のプロジェクト詳細ページのスクリーンショット。](./media/azure-ai-project.png)

1. 左側のペインにあるページを表示して各セクションを展開し、プロジェクト内で実行できるタスクと管理できるリソースを確認します。

## モデルのデプロイとテスト

プロジェクトを使って、生成 AI モデルに基づいた複雑な AI ソリューションを作成できます。 Azure AI Studio で使用できるすべての開発オプションを詳しく説明することはこの演習の範囲を超えていますが、プロジェクト内でモデルを操作するための基本的な方法をいくつか説明します。

1. プロジェクトの左側のペインの **[コンポーネント]** セクションで、**[デプロイ]** ページを選択します。
1. **[デプロイ]** ページで、**[+ 作成]** を選択し、リアルタイム エンドポイントのデプロイを作成します。
1. **[モデルの選択]** リストで **gpt-35-turbo** モデルを選び、選択を確定します。 次に、以下の設定を使ってモデルをデプロイします。
- **デプロイ名**:"モデル デプロイの一意の名前"**
- **モデル**: gpt-35-turbo
- **モデルのバージョン**: *Select the default version (既定のバージョンの選択)*
- **詳細オプション**:
- **コンテンツ フィルター**: 既定
- **デプロイの種類**:Standard
- **1 分あたりのトークン数のレート制限 (1,000 単位)**:5,000

> ****:TPM を減らすと、ご利用のサブスクリプション内で使用可能なクォータが過剰に消費されるのを回避するのに役立ちます。 この演習で使用するデータは、5,000 TPM で十分です。
1. モデルがデプロイされたら、左側のペインにある **[ツール]** セクションで **[プレイグラウンド]** ページを選びます。
1. **[プレイグラウンド]** ページの **[構成]** セクションでモデル デプロイが選ばれていることを確認します。 次に、**[チャット セッション]** セクションに「AI とは何ですか?」などのクエリを入力し、応答を表示します。**

![Azure AI Studio のプレイグラウンドのスクリーンショット。](./media/playground.png)

## クリーンアップ

Azure AI Studio を確認し終わったら、不要な Azure コストが発生しないように、この演習で作成したリソースを削除する必要があります。

1. Azure portal が表示されているブラウザー タブに戻り (または、新しいブラウザー タブで [Azure portal](https://portal.azure.com?azure-portal=true) をもう一度開き)、この演習で使ったリソースがデプロイされているリソース グループの内容を表示します。
1. ツール バーの **[リソース グループの削除]** を選びます。
1. リソース グループ名を入力し、削除することを確認します。
171 changes: 171 additions & 0 deletions Instructions/Exercises/02-Use-prompt-flow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
---
lab:
title: Azure AI Studio でのプロンプト フローの概要
---

# Azure AI Studio でのプロンプト フローの概要

テキストから価値のある情報を抽出することは、固有表現認識 (NER) と呼ばれます。 エンティティとは、特定のテキスト内でユーザーの興味を引くキーワードです。

![エンティティ抽出](./media/get-started-prompt-flow-use-case.gif)

大規模言語モデル (LLM) を使って NER を実行できます。 入力としてテキストを受け取ってエンティティを出力するアプリケーションを作成するには、プロンプト フローで LLM ノードを使うフローを作成できます。

この演習では、Azure AI Studio のプロンプト フローを使って、エンティティの種類とテキストを入力として想定する LLM アプリケーションを作成します。 これは、LLM ノードから Azure OpenAI の GPT モデルを呼び出して、指定されたテキストから必要なエンティティを抽出し、結果をクリーンアップして抽出されたエンティティを出力します。

![演習の概要](./media/get-started-lab.png)

まず、Azure AI Studio でプロジェクトを作成して、必要な Azure リソースを作成する必要があります。 その後、Azure OpenAI サービスを使って GPT モデルをデプロイできます。 必要なリソースが揃ったら、フローを作成できます。 最後に、フローを実行してテストし、サンプル出力を確認します。

## Azure AI Studio でプロジェクトを作成する

最初に、Azure AI Studio プロジェクトと、それをサポートする Azure AI ハブを作成します。

1. Web ブラウザーで [https://ai.azure.com](https://ai.azure.com) を開き、Azure の資格情報を使ってサインインします。
1. **[ビルド]** ページを選んでから、**[+ 新しいプロジェクト]** を選びます。
1. **[新しいプロジェクトの作成]** ウィザードで、次の設定を使ってプロジェクトを作成します。
- **プロジェクト名**:"プロジェクトの一意の名前"**
- **[Azure Hub] (Azure ハブ)**: "次の設定で新しいリソースを作成します。"**
- **[AI Hub name] (AI ハブ名)**: *一意の名前*
- **[サブスクリプション]**:"*ご自身の Azure サブスクリプション*"
- **[リソース グループ]**: "新しいリソース グループ"**
- **[場所]**: "近くの場所を選びます"**
1. 構成を確認して、プロジェクトを作成します。
1. プロジェクトが作成されるまで 5 から 10 分待ちます。

## GPT モデルをデプロイする

プロンプト フローで LLM モデルを使うには、まずモデルをデプロイする必要があります。 Azure AI Studio を使うと、フローで使用できる OpenAI モデルをデプロイできます。

1. 左側のナビゲーション ウィンドウの **[コンポーネント]** で、**[デプロイ]** ページを選びます。
1. Azure OpenAI Studio で、**[デプロイ]** ページに移動します。
1. 次の設定で **gpt-35-turbo** モデルの新しいデプロイを作成します。
- **モデル**: `gpt-35-turbo`
- **モデルのバージョン**: *既定値のままにします*
- **[デプロイ名]**: `gpt-35-turbo`
- 既定のコンテンツ フィルターを使って、1 分あたりのトークン数 (TPM) を **5K** に制限するには、**[詳細設定]** オプションを設定します。

LLM モデルがデプロイされたので、デプロイされたモデルを呼び出すフローを Azure AI Studio で作成できます。

## Azure AI Studio でフローを作成して実行する

必要なリソースがすべてプロビジョニングされたので、フローを作成できます。

### 新しいフローの作成

テンプレートで新しいフローを作成するには、開発するフローの種類を 1 つ選択できます。

1. 左側のナビゲーション ウィンドウの **[ツール]** で、**[プロンプト フロー]** を選びます。
1. **[+ 作成]** を選んで、新しいフローを作成します。
1. 新しい**標準フロー**を作成し、フォルダー名として「`entity-recognition`」と入力します。

1 つの入力、2 つのノード、1 つの出力を含む標準フローが自動的に作成されます。 フローを更新して、2 つの入力を受け取り、エンティティを抽出し、LLM ノードからの出力をクリーンアップし、出力としてエンティティを返すようにします。

### 自動ランタイムを開始する

フローをテストするには、コンピューティングが必要です。 必要なコンピューティングは、ランタイムを通じて利用できるようになります。

1. `entity-recognition` という名前で新しいフローを作成すると、スタジオでそのフローが開きます。
1. 上部のバーで **[ランタイムの選択]** フィールドを選びます。
1. **[自動ランタイム]** ボックスの一覧で **[開始]** を選んで、自動ランタイムを開始します。
1. ランタイムが起動するまで待ちます。

### 入力を構成する

作成するフローは、テキストと、テキストから抽出するエンティティの種類という、2 つの入力を受け取ります。

1. **[入力]** には、名前が `topic` で型が `string` の 1 つの入力が構成されています。 既存の入力を変更し、次の設定で更新します。
- **名前**: `entity_type`
- ****: `string`
- ****: `job title`
1. **[入力の追加]** を選びます。
1. 2 番目の入力を構成して、次のように設定します。
- **名前**: `text`
- ****: `string`
- ****: `The software engineer is working on a new update for the application.`

### LLM ノードを構成する

標準フローには、LLM ツールを使うノードが既に含まれています。 フローの概要でノードを見つけることができます。 既定のプロンプトでは、ジョークを求められます。 前のセクションで指定した 2 つの入力に基づいてエンティティを抽出するように、LLM ノードを更新します。

1. `joke` という名前の **LLM ノード**に移動します。
1. 名前を `NER_LLM` に置き換えます
1. **[接続]** で、`Default_AzureOpenAI` 接続を選びます。
1. **deployment_name** では、デプロイした `gpt-35-turbo` モデルを選びます。
1. プロンプト フィールドを次のコードに置き換えます。

```yml
{% raw %}
system:

Your task is to find entities of a certain type from the given text content.
If there're multiple entities, please return them all with comma separated, e.g. "entity1, entity2, entity3".
You should only return the entity list, nothing else.
If there's no such entity, please return "None".

user:

Entity type: {{entity_type}}
Text content: {{text}}
Entities:
{% endraw %}
```

1. **[入力の検証と解析]** を選びます。
1. LLM ノードの **[入力]** セクションで、次のように構成します。
- `entity_type` では、値 `${inputs.entity_type}` を選びます。
- `text` では、値 `${inputs.text}` を選びます。

これで、この LLM ノードは、エンティティの種類とテキストを入力として受け取り、指定したプロンプトにそれを含めて、デプロイされたモデルに要求を送信するようになります。

### Python ノードを構成する

モデルの結果から重要な情報のみを抽出するには、Python ツールを使って LLM ノードの出力をクリーンアップできます。

1. `echo` という名前の Python ノードに移動します。
1. 名前を `cleansing` に置き換えます。
1. のコードを次のように置き換えます。

```python
from typing import List
from promptflow import tool


@tool
def cleansing(entities_str: str) -> List[str]:
# Split, remove leading and trailing spaces/tabs/dots
parts = entities_str.split(",")
cleaned_parts = [part.strip(" \t.\"") for part in parts]
entities = [part for part in cleaned_parts if len(part) > 0]
return entities

```

1. **[入力の検証と解析]** を選びます。
1. Python ノードの **[入力]** セクションで、`entities_str` の値を `${NER_LLM.output}` に設定します。

### 出力を構成する

最後に、フロー全体の出力を構成できます。 フローで必要な出力は 1 つだけで、それを抽出されたエンティティにする必要があります。

1. フローの **[出力]** に移動します。
1. **名前**には、`entities`を入力します。
1. **[]** で、`${cleansing.output}` を選びます。

### フローを実行する

フローの開発が済んだので、それを実行してテストできます。 入力に既定値を追加したので、スタジオでフローを簡単にテストできます。

1. **[実行]** を選んでフローをテストします。
1. 実行が完了するまで待ちます。
1. **[出力の表示]** を選びます。 既定の入力に対する出力を示すポップアップが表示されます。 必要に応じて、ログを調べることもできます。

## Azure リソースを削除する

Azure AI Studio を調べ終わったら、Azure の不要なコストを避けるため、作成したリソースを削除する必要があります。

- [Azure portal](https://portal.azure.com) (`https://portal.azure.com`) に移動します。
- Azure portal の **[ホーム]** ページで、**[リソース グループ]** を選択します。
- この演習のために作成したリソース グループを選びます。
- リソース グループの **[概要]** ページの上部で、**[リソース グループの削除]** を選択します。
- リソース グループ名を入力して、削除することを確認し、**[削除]** を選択します。
Loading

0 comments on commit ec69a92

Please sign in to comment.