(ハンズオン)【Azure】 Azure AI Foundryによるマルチモーダル モデルとエージェントの操作

に公開

この記事のポイント

  • Azure AI Foundryを使用してマルチモーダルモデルとエージェントを操作する方法を紹介しているよ

はじめに

この記事ではAzure AI Foundryを使用して、マルチモーダルモデルとエージェントを操作する方法について説明します。
※内容はInteracting with Multimodal models and Agents in Azure AI Foundryのワークショップをもとに作成しています。

参考:Interacting with Multimodal models and Agents in Azure AI Foundry

ワークショップの手順についてはこちら

サービスの詳細はAzure AI Foundryを参照してください。

なお、登場して間もないサービスであるため、内容は変更される可能性があります。
誤りなどがありましたら逐一修正していきますので、何かあればお知らせください。

準備するもの

  • Azureのアカウント
    • Azureのアカウントを作成してください
    • Azureのアカウントは無料で作成できます
    • 無料アカウントを作成する場合は、こちらから作成してください
    • 無料アカウントを作成すると、Azureのサービスを無料で利用できるクレジットがもらえます

※法人契約あるいは個人でAzureアカウントを作成する場合は新規でAzureのサブスクリプションを作成するか既存のAzureのサブスクリプションを使用してください。
新規でサブスクリプションを作成するか既存のサブスクリプションを使用するかは自身のご都合に合わせて選択してください。

  • Azureのサブスクリプション
    • 本ハンズオンでは、Azure AI Foundryを使用しますのでAzure AI Foundryが利用できるAzureのサブスクリプションを準備してください
    • なお、ハンズオンではVisual Studio Enterpriseのサブスクリプションを使用しています

このハンズオンの目的

このハンズオンでは、Azure AI Foundryを使用してマルチモーダルモデルとエージェントについて学びます。

このハンズオンで利用するサービスおよびリソース

  • Azure AI hub
  • Azure AI project
  • Azure AI Foundry
  • キー コンテナー
  • ストレージ アカウント

handson-service

注意事項

本ハンズオンを実施する際の注意事項です。
ハンズオンではAzure AI Foundryを利用します。Azure AI Foundryは料金が発生するサービスです。
料金が発生することを理解した上で、ハンズオンを実施してください。

また、本ハンズオンの実施は自己責任でお願いできればと思います。

このハンズオンでやること

  • Azure AI Foundryの概要
  • ハンズオンの概要
  • Azure AI Foundryのセットアップ
  • Azure AI Foundryのマルチモーダルモデルの操作

Azure AI Foundryの概要

Azure AI Foundryは簡単に説明すると、Azure上でAIモデルを構築、デプロイ、運用するためのプラットフォームです。
公式ドキュメントでは以下のように説明されています。

Azure AI Foundry は、エンタープライズ AI 運用、モデル ビルダー、およびアプリケーション開発のための統合プラットフォームを提供します。 この基盤は、運用グレードのインフラストラクチャとわかりやすいインターフェイスを組み合わせて、組織が自信を持って AI アプリケーションを構築して運用できるようにします。

参考:Azure AI Foundry とは - Azure AI Foundry | Microsoft Learn

Azure AI FoundryはさまざまなAIモデルに対応しています。モデルの詳細については、公式ドキュメントを参照してください。

参考:Azure AI Foundry モデルを調べる - Azure AI Foundry | Microsoft Learn

ハンズオンの概要

このハンズオンでは、Azure AI Foundryを使用してマルチモーダルモデルとエージェントを操作します。
具体的には、以下の4つのパートに分けて実施します。

  • Part 1 - テキスト生成
    • GPT4oを使用してテキストコンテンツと説明を生成します。
  • Part 2 - 画像生成
    • DALL-E 3を使用して画像アセットを生成します。
  • Part 3 - マルチモーダリティ
    • GPT-4oのマルチモーダル機能を活用して、画像とテキストを操作します。
  • Part 4 - Azure AIエージェント
    • コードインタープリターを使用してデータを理解します。

※Part4はエラーで手順を先に進めることができなかったため、説明にのみに留め、ハンズオンは実施しません。
うまく動くようになりましたら、手順を追記しますので、しばらくお待ちください。

参考:lab-outline

セットアップ

まずは以下のボタンから、Azure AI Foundryのリソースを作成します。サインインするように聞かれますのでサインインします。

Deploy to Azure

サインインすると、カスタムテンプレートに基づいたリソースの作成にリダイレクトされます。
テンプレートどおりではインフラを展開できないため、ペンマークのアイコンをクリックして、テンプレートを修正します。

setup1.png

修正画面が表示されたら118行目までスクロールします。

setup2.png

118行目から129行目までを修正します。

setup3.png

変更前

              {
                "name": "gpt-4o-realtime-preview",
                "model": {
                  "format": "OpenAI",
                  "name": "gpt-4o-realtime-preview",
                  "version": "2024-10-01"
                },
                "sku": {
                  "name": "GlobalStandard",
                  "capacity": 1
                }
              }

変更後

              {
                "name": "gpt-4o-mini-realtime-preview",
                "model": {
                  "format": "OpenAI",
                  "name": "gpt-4o-mini-realtime-preview",
                  "version": "2024-12-17"
                },
                "sku": {
                  "name": "GlobalStandard",
                  "capacity": 1
                }
              }

修正が完了したら、保存をクリックします。

なお、この変更はテンプレートの検証エラーを回避するためのものです。(発生するエラーの詳細は以下の通りです。)

template_error

gpt-4o-realtime-previewは廃止予定になっているため、gpt-4o-mini-realtime-previewを使用します。

参考:Azure AI Foundry Models の Azure OpenAI モデルの廃止 - Azure OpenAI | Microsoft Learn

新しいリソースグループを作成し、名前をdotnetlabとします。

setup4.png

次にUnique Suffixフィールドに任意のユニークな4文字を追加します。今回はdotnetlabとします。
入力が完了したら、「確認と作成」ボタンをクリックします。

azure_ai_foundry

最後に作成をクリックします。

setup5.png

AI Foundryにハンズオン

ここから作成したリソースを使用して、Azure AI Foundryのハンズオンを行います。
なお、ハンズオンはすべてAzure Portal上で行います。

Azure AI Foundryのプレイグラウンドを参照する

まずは以下のリンクからAzure AI Foundryを開きます。
AI Foundry - Microsoft Azure

チャットプレイグラウンドを開くために名前にあるリンクをクリックします。今回はaislab-demodotnetlabという名前のリソースを作成しましたのでaislab-demodotnetlabをクリックします。
ailab.png

次にGo to Azure AI Foundry Portalをクリックしてプレイグランドを開きます。

foundry_portal

左のメニューからプレイグラウンドをクリックします。

playground

今回扱うプレイグラウンドを見ていきましょう。画面を下にスクロールします。

playground2

今回は以下の4つのプレイグラウンドを使用します。

1.Chat-playground
2.Image-playground
3.Real-time audio playground
4.Agents playground(Assistant-playground)

playgrounds

playgrounds-1

Part 1 - テキスト生成(Chat-playground)

ここからはチャットプレイグラウンドを使用してプロンプトエンジニアリングを使用し、テキストコンテンツと説明を生成します。

Chat Playgroundの基本

まずはいくつかのプロンプトから始め、チャットプレイグラウンドを使って応答を観察してみましょう。
チャットプレイグラウンドを使用するには、以下の手順に従ってください。

1.モデル名を確認します。今回はgpt-4o-mini (version:2024-07-18)を使用します
2.プロンプトを入力します。プロンプトは、モデルに対して質問や指示を与えるためのテキストです
3.プロンプトを入力したら、Sendボタンをクリックします

chat-playground-1.png

チャットしてみる(ウェブサイトのコピーと会話履歴を試す)

次に、いくつかのプロンプトを試してみましょう。
以下のプロンプトを入力して、Sendボタンをクリックします。

Suggest a tagline for the website landing page of an ice cream shop called SweetScoops Delight.

日本語訳

アイスクリームショップ「SweetScoops Delight」のウェブサイトのランディングページのキャッチフレーズを提案してください。

次にチャット履歴を消去せずに以下のプロンプトを入力して、Sendボタンをクリックします。

Generate website copy for the homepage of the ice cream shop.

日本語訳

アイスクリームショップのホームページのウェブサイトコピーを生成してください。

会社名や事業内容を再指定していないにもかかわらず、モデルがSweetScoops Delightのウェブサイトにコピーを提供していることに注目してください。
これは、モデルの内部で、最新のプロンプトだけでなく、会話履歴全体がコンテキストとしてモデルに渡されるためです。

AIモデルは学習できず、ユーザーが離れてから戻ってきた場合、以前のやり取りを記憶しません。
しかし、アプリケーションはプロンプトエンジニアリングを用いてこの「記憶」を追加しています。

補足:モデル パラメータの制御(紹介のみ、ハンズオンしない)

パラメータセクションに移動すると
モデルがコンテキストとして考慮する以前のインタラクションの数であるコンテキスト ウィンドウ サイズを制御できます。

chat-playground-2.png

要約とキーエンティティの抽出

次は前のステップで作成したキャッチコピーを要約してみましょう。
テキスト要約は、大規模言語モデル(LLM)のよく知られた機能です。これは、長いテキストの短い要約を作成します。

さらに、LLMにテキストから重要な情報を抽出するよう指示することもできます。
このシナリオでは、SEO最適化のためのキーワードを取得するのに役立ちます。

次のプロンプトを試して、前のコピーを要約し、有用なデータを抽出してみてください。

1. tl;dr
2. Extract company name, categories of products and business unique values from the long description above.

日本語訳

1. 長すぎるので要約してください
2. 会社名、製品のカテゴリ、上記の長い説明からのビジネスのユニークな価値を抽出してください。

高度なプロンプト

次にさまざまなプロンプトを試してみましょう。
これから試す手法は以下の通りです。

  1. Zero-shot learning
  2. Few-shot learning
  3. Chain of thought prompting

まずはチャット履歴を消去します。箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

Zero-shot learning

LLMは非常に大量のデータで訓練されているため、ほとんど指示を与えなくても一部のタスクを実行できる場合があります。これはZero-shotと呼ばれます。例えば、モデルに製品名のリストを生成し、それらを分類するように指示してみましょう。

Generate 10 unique menu items for a futuristic themed restaurant, including dish names and a short description.

日本語訳

未来的なテーマのレストランのために、料理名と簡単な説明を含む10のユニークなメニューアイテムを生成してください。

Few-shot learning

Zero-shotが例やより複雑なタスクでうまくいかない場合は、Few-shotを利用することで、モデルを望ましい結果に導くための例を提供できます。

では実際に試してみましょう。
まずはチャット履歴を消去します。箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

例は、モデルがどのように動作すべきかを明確に示します。以下は、製品を分類するためのFew-shotプロンプトの例です。

Generate 10 unique pizza menu items with futuristic names, including the name of the pizza and a short description.

Examples:  
The Nebula Supreme: A classic supreme pizza with pepperoni, sausage, bell peppers, onions, and olives, topped with a hint of spicy marinara sauce.
Galactic Garden: A vegetarian delight featuring spinach, cherry tomatoes, mushrooms, and artichokes with a basil pesto drizzle.
Asteroid Meat Feast: Loaded with pepperoni, ham, ground beef, bacon, and Italian sausage for a hearty, protein-packed slice.

日本語訳

未来的な名前のユニークなピザメニューアイテムを10個生成してください。ピザの名前と簡単な説明を含めてください。
例:
ネビュラスプリーム: ペパロニ、ソーセージ、ピーマン、玉ねぎ、オリーブをトッピングしたクラシックなスプリームピザ。スパイシーなマリナーラソースを少しトッピング。
ギャラクティックガーデン: ほうれん草、チェリートマト、マッシュルーム、アーティチョークをトッピングしたベジタリアンの喜び。バジルペストをかけて。
小惑星ミートフィースト: ペパロニ、ハム、牛ひき肉、ベーコン、イタリアンソーセージをたっぷりトッピングしたボリューム満点のスライス。

このプロンプトは、モデルに特定の形式を示し、期待される出力を明確にします。これにより、モデルはより正確な結果を生成することができます。

Chain of thought prompting

LLMとやり取りする際に役立つヒントは、訓練を受けていないインターン生と話していると想像してみることです。
つまり、実行するタスクについてより詳細に説明すればするほど、より良い結果が得られます。
特に、タスクを小さな部分に分割し、それぞれの部分にプロンプ​​トを与えるという戦略が有効です。

では実際に試してみましょう。
まずはチャット履歴を消去します。箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

ウェブサイトのコピー作成タスクでこれを試してみましょう。

Develop a new pizza for our restaurant.

Instructions:
- Start by deciding on a theme for the new pizza.
- Determine the overall flavor profile. Should it be spicy, sweet, savory, or a mix?
- Pick the base ingredients. This includes the type of sauce and cheese
- Think about unique toppings that fit the theme and flavor profile.
- Finally, come up with a creative, memorable name that fits both the futuristic theme of the restaurant and the flavor experience you’ve crafted.

日本語訳

新しいピザをレストランのために開発してください。
指示:
- 新しいピザのテーマを決定します。
- 全体的な風味のプロファイルを決定します。辛い、甘い、風味豊か、またはその組み合わせにする必要がありますか?
- ベースとなる材料を選択します。これには、ソースとチーズの種類が含まれます。
- テーマと風味のプロファイルに合ったユニークなトッピングを考えます。
- 最後に、レストランの未来的なテーマと、あなたが作成した風味体験の両方に合った、創造的で記憶に残る名前を考えます。

もう一つの選択肢は、「Chain of thought」と呼ばれる手法を使うことです。LLMはタスクをより小さなステップに分解する役割を担います。LLMは世界に関する知識と推論能力を活用し、タスクの解決につながるChain of thoughtを生成します。

プレイグラウンドのチャットを再度クリアするために箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

以下のプロンプトを入力すると、「Chain of thought」の仕組みを確認できます。

Develop a new pizza for our restaurant.

Take a step-by-step approach in your response: Start by thinking about the theme, considering how it fits into the restaurant's overall futuristic concept. Then, define the flavor profile, keeping in mind our audience's preferences and the overall taste experience you want to create. Next, choose the base ingredients, including the sauce type and cheese blend, and think about unique toppings that make this pizza stand out. Finally, decide on a name that aligns with the theme and enhances the pizza's appeal. Include your reasoning before sharing the final answer in the below format: ANSWER is: <pizza description>.

日本語訳

新しいピザをレストランのために開発してください。
ステップバイステップのアプローチで回答してください: テーマについて考えることから始めて、レストランの全体的な未来的なコンセプトにどのように適合するかを考えます。次に、私たちの観客の好みと、作成したい全体的な味の体験を考慮しながら、風味のプロファイルを定義します。次に、ソースの種類とチーズのブレンドを含むベースとなる材料を選択し、このピザを際立たせるユニークなトッピングについて考えます。最後に、テーマに沿った名前を決定し、ピザの魅力を高めます。最終的な回答を以下の形式で共有する前に、あなたの推論を含めてください: ANSWER is: <ピザの説明>。

System message and added knowledge

次はシステムメッセージを使用して、モデルの動作を制御してみましょう。
これにより、モデルは特定の役割を果たすように指示されます。

では実際に試してみましょう。
まずはチャット履歴を消去します。箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

以下のプロンプトをシステムメッセージに入力します。

## Task
You are a menu designer for a futuristic-themed pizzeria restaurant named "Galactic Slice". Your goal is to generate creative menu items and descriptions. Keep your answers brief, engaging, and aligned with the restaurant's theme.

Your answer should be brief and engaging. Always use a friendly and professional tone of voice.

## Safety
Keep the descriptions family-friendly and suitable for all age groups visiting our pizzeria. Avoid any irrelevant information and controversial opinions.

日本語訳

## タスク
あなたは「Galactic Slice」という未来的なテーマのピザレストランのメニューデザイナーです。あなたの目標は、創造的なメニューアイテムと説明を生成することです。回答は簡潔で魅力的であり、レストランのテーマに沿ったものである必要があります。
あなたの回答は簡潔で魅力的である必要があります。常にフレンドリーでプロフェッショナルな口調を使用してください。

## 安全性
説明は家族向けであり、私たちのピザ屋を訪れるすべての年齢層に適している必要があります。無関係な情報や物議を醸す意見は避けてください。

プロンプトを入力したら、変更の適用をクリックします。

system-msg-1

システムメッセージを更新するかどうかを確認するダイアログが表示されますので、はいをクリックします。

system-msg-2

ここで重要なこととしてはモデルには明確なタスク、トーンオブボイス、そして遵守すべき安全対策が与えられていることです。

ビジネスで使用されるあらゆるテクノロジーと同様に、モデルはブランドのようなものです。

企業全体の行動規範に浸透させているアプローチと倫理観をモデルにも反映させたいのであれば、AIソリューションにも組み込む必要があります。
システムメッセージ内にトーンに関するセグメントを設定することで、ユースケースに適した応答タイプを設定できます。

システムメッセージで提供されるテキストはモデルによって特別に処理され、ユーザーメッセージのテキストやプロンプトで提供される他のコンテキストよりもモデルの応答に大きな影響を与えるように設計されています。

また、チャット履歴を消去した場合でも、システムメッセージはチャット内のすべてのやり取りを通じて保持されます。
では実際に試してみましょう。
以下のプロンプトを入力して、Sendボタンをクリックします。

Write a brief description of the restaurant, including the categories of menu items offered.

日本語訳

レストランの簡単な説明を書いてください。提供されるメニューアイテムのカテゴリを含めてください。

次にシステムメッセージに反するようなプロンプトを入力してみましょう。
以下のプロンプトを入力して、Sendボタンをクリックします。

What are your thoughts on the just concluded election?

日本語訳

最近終了した選挙についてどう思いますか?

これでシステムメッセージの効果を確認できました。
システムメッセージは、モデルの応答を制御するための強力なツールです。
システムメッセージを使用することで、モデルの動作をガイドし、特定のトーンやスタイルで応答を生成するように指示できます。

Grounded prompting

これまでのところ、このモデルはビジネス価値提案と製品(メニュー)の提供において独創的な成果を上げてきました。
しかし、現実世界のシナリオでは、モデルが現実に根ざし、実際のビジネスを反映したテキストを生成することが求められます。

次はすでに入力済みのシステムメッセージの後ろにContoso Outdoor Companyの製品カタログに基づいてコピーを生成するという別のプロンプトを追加してみましょう。

既存のシステムプロンプトの末尾に以下のプロンプトを挿入して、変更の適用をクリックします。

## Business Information
Contoso Outdoor Company is an e-commerce business that specializes in outdoor clothing and equipment. The company offers a wide range of products, including tents, backpacks, hiking clothing, and sleeping bags. The company's main value proposition is to provide high-quality outdoor gear for every level of outdoor enthusiast at affordable prices.

Products offered:
1. Tents: 
    - TrailMaster X4 Tent: Crafted from durable polyester, this tent boasts a spacious interior perfect for four occupants. It ensures your dryness under drizzly skies thanks to its water-resistant construction, and the accompanying rainfly adds an extra layer of weather protection.
    - Alpine Explorer Tent: This robust, 8-person, 3-season marvel is from the responsible hands of the AlpineGear brand. Promising an enviable setup that is as straightforward as counting sheep, your camping experience is transformed into a breezy pastime.
    - SkyView 2-Person Tent: This tent offers a spacious interior that houses two people comfortably, with room to spare. Crafted from durable waterproof materials to shield you from the elements, it is the fortress you need in the wild. 

2. Backpacks:
    - Adventurer Pro Backpack: Uniquely designed with ergonomic comfort in mind, this backpack ensures a steadfast journey no matter the mileage. It boasts a generous 40L capacity wrapped up in durable nylon fabric ensuring its long-lasting performance on even the most rugged pursuits. 
    - SummitClimber Backpack: your reliable partner for every exhilarating journey. With a generous 60-liter capacity and multiple compartments and pockets, packing is a breeze. Every feature points to comfort and convenience; the ergonomic design and adjustable hip belt ensure a pleasantly personalized fit, while padded shoulder straps protect you from the burden of carrying. 
    - TrailLite Daypack: Built for comfort and efficiency, this lightweight and durable backpack offers a spacious main compartment, multiple pockets, and organization-friendly features all in one sleek package. 

3. Hiking Clothing:
    - Summit Breeze Jacket: This lightweight jacket is your perfect companion for outdoor adventures. Sporting a trail-ready, windproof design and a water-resistant fabric, it's ready to withstand any weather. 
    - TrailBlaze Hiking Pants: Crafted from high-quality nylon fabric, these dapper troopers are lightweight and fast-drying, with a water-resistant armor that laughs off light rain. Their breathable design whisks away sweat while their articulated knees grant you the flexibility of a mountain goat.
    - RainGuard Hiking Jacket: the ultimate solution for weatherproof comfort during your outdoor undertakings! Designed with waterproof, breathable fabric, this jacket promises an outdoor experience that's as dry as it is comfortable.

日本語訳

## ビジネス情報
Contoso Outdoor Companyは、アウトドア衣料品と機器を専門とするeコマースビジネスです。テント、バックパック、ハイキング衣料品、寝袋など、幅広い製品を提供しています。会社の主な価値提案は、すべてのレベルのアウトドア愛好家に手頃な価格で高品質のアウトドアギアを提供することです。

提供される製品:
1. テント:
    - TrailMaster X4 Tent: 耐久性のあるポリエステルで作られたこのテントは、4人分の広々とした内部を誇ります。防水構造のおかげで、雨の日でも乾燥を保ち、付属のレインフライがさらに天候からの保護を提供します。
    - Alpine Explorer Tent: この頑丈な8人用3シーズンテントは、AlpineGearブランドからのものです。羊を数えるように簡単に設営できることを約束し、キャンプ体験を楽しいものに変えます。
    - SkyView 2-Person Tent: このテントは2人が快適に過ごせる広々とした内部を提供し、余裕もあります。耐久性のある防水素材で作られており、要素からあなたを守ります。野外で必要な要塞です。
2. バックパック:
    - Adventurer Pro Backpack: 人間工学に基づいてユニークに設計されたこのバックパックは、距離に関係なく安定した旅を保証します。耐久性のあるナイロン生地で包まれた40Lの大容量を誇り、最も厳しい追求でも長持ちします。
    - SummitClimber Backpack: あなたのすべてのエキサイティングな旅の信頼できるパートナーです。60リットルの大容量と複数のコンパートメントとポケットを備え、パッキングは簡単です。すべての機能は快適さと便利さを指し示しています。人間工学に基づいたデザインと調整可能なヒップベルトが快適なフィット感を保証し、パッド入りショルダーストラップが負担からあなたを守ります。
    - TrailLite Daypack: 快適さと効率性を考慮して作られたこの軽量で耐久性のあるバックパックは、広々としたメインコンパートメント、複数のポケット、および整理しやすい機能をすべて1つのスリムなパッケージで提供します。
3. ハイキング衣料品:
    - Summit Breeze Jacket: この軽量ジャケットは、アウトドアアドベンチャーの完璧な仲間です。風を防ぐデザインと防水生地を備え、どんな天候にも耐える準備ができています。
    - TrailBlaze Hiking Pants: 高品質のナイロン生地で作られたこれらのダッパートルーパーは、軽量で速乾性があり、軽い雨を笑い飛ばす防水アーマーを備えています。通気性のあるデザインは汗を逃がし、関節膝は山羊のような柔軟性を提供します。
    - RainGuard Hiking Jacket: あなたのアウトドア活動中に快適さを保証する究極のソリューションです!防水性と通気性のある生地で設計されており、快適さと同時に乾燥したアウトドア体験を約束します。

追加されたシステムプロンプトを試すために、以下のプロンプトを入力して、Sendボタンをクリックします。

Write a short description for each of the following product categories: tents, backpacks, hiking clothing.

日本語訳

以下の製品カテゴリごとに短い説明を書いてください: テント、バックパック、ハイキング衣料品。

補足:検索拡張生成(RAG)について

Grounded promptingでは根拠づけを行う方法について学びました。
では、どのようにしてモデルがビジネスに関連する情報を考慮して、より正確で関連性の高いテキストを生成するのでしょうか。

モデルがビジネスに関連する情報を考慮して、より正確で関連性の高いテキストを生成する方法があります。これが検索拡張生成(RAG)と呼ばれる手法です。

この手法ではビジネスに関する一連の事実や情報をモデルに提供し、モデルはそれらを用いてより正確で関連性の高いテキストを生成します。
AzureによるRAGの実装はさまざまなデータソースを用いることができます。本ハンズオンでは扱いませんので興味のある方は調べてみてください。

Part2 - 画像生成(DALL-E 3 Image-playground)

次に画像を生成してみましょう。このパートでは、DALL-E 3を使用して画像アセットを生成します。以下の順番で進めていきます。

1.最初の画像生成
2.ブランドマスコットの制作
3.より高度な画像生成

最初の画像生成

まずは最初の画像を生成してみましょう。
左のメニューからプレイグラウンドをクリックします。

playground

次に画像プレイグラウンドを試すをクリックします。

img-playground-1

プレイグラウンドを開いたら設定とUIを確認します。

1.モデル名を確認します。今回はDALL-E 3を使用します
2.プロンプトを入力します。プロンプトは、モデルに対して質問や指示を与えるためのテキストです
3.プロンプトを入力したら、生成ボタンをクリックします

基本的に1-3の順番で進めていきます。

img-playground-2

モデル名を確認したら、以下のプロンプトを②のフォームに入力して、生成ボタンをクリックします。

a watercolor painting of Chicago skyline

実行結果

img-playground-3

※実行した結果は上記と異なる場合があります。シカゴのスカイラインを描いた水彩画が生成されていればOKです。

ブランドマスコットの制作

次に、ブランドマスコットを作成してみましょう。
このセクションではブランドマスコットとなる画像を生成しますが、その前にプロンプト入力のUIを確認します。

Azure AI Foundryにおける画像生成ではサイズ、スタイル、品質を指定できます。

img-playground-4

それぞれの項目について説明します。

  • 画像サイズ:さまざまなサイズ (正方形、横長、縦長など) を試して、さまざまなキャンペーンで画像のサイズがマスコットのデザインと使いやすさにどのように影響するかを理解します。
  • 画像のスタイル:ナチュラルや鮮やかさなど、さまざまなスタイルを試して、ブランドの個性に最も合うものを見つけます。
  • 画像品質:印刷に適した高解像度の画像と、Webやソーシャルメディアでの使用に適した低解像度の画像を生成するように、画質設定を調整します。サイズはHDまたは標準から選択できます。

UIを理解したところで以下の3つのプロンプトを試してみます。

プロンプト1

A friendly robot mascot with a smiling face, designed in a cartoon style.

日本語訳

フレンドリーなロボットのマスコットで、笑顔の顔を持ち、漫画スタイルでデザインされています。

実行結果

img-playground-5

プロンプト2

A playful fox mascot with a colorful scarf, representing agility and creativity.

日本語訳

遊び心のあるキツネのマスコットで、カラフルなスカーフを身に着けており、敏捷性と創造性を表現しています。

実行結果

img-playground-6

プロンプト3

An abstract figure with geometric shapes, conveying innovation and technology.

日本語訳

革新と技術を伝える幾何学的な形を持つ抽象的なフィギュア。

実行結果

img-playground-7

より高度な画像生成

このパートの最後ではより高度な画像生成を試します。

チャットプレイグラウンドで生成したテキストを、画像プレイグラウンドでプロンプトとして使用します。
※gpt-4o-mini によって生成されたプロンプトに基づいてイメージを生成してみます。
※チャットプレイグラウンドの使い方がわからない方はPart1を参照してください。

まずは別のタブでチャットプレイグラウンドを開きます。
左のメニューからプレイグラウンドを新規のタブで開いてください。

playground

赤丸1のChat-playgroundをクリックします。

playgrounds

Generate a prompt for DALL-E 3 from this product description:

The 3D Animated Office Space Design by CreativeSpaces offers a modern, interactive representation of a professional work environment. This design concept includes ergonomic furniture, open and collaborative workspaces, greenery for a touch of nature, and large windows to maximize natural light. The layout also incorporates meeting pods, hot desks, and breakout areas for different work modes. The office has a neutral color palette, with accents of green and blue to create a calming yet productive atmosphere.

The 3D Animated Office Space Design is intended for use by architects, interior designers, and companies looking to revamp their workspaces. It highlights the importance of balancing privacy with collaboration, including quiet zones for focused work and shared areas for team interactions. The space features modern materials like glass and wood, combined with innovative lighting solutions to enhance productivity and employee well-being.

Beyond its aesthetic appeal, the 3D Animated Office Space Design is designed with functionality in mind. It includes ample storage solutions, acoustic panels to reduce noise, and modular furniture that can be rearranged to suit different needs. The green walls and potted plants throughout the office create a refreshing environment that promotes creativity and reduces stress. The design is presented in a high-quality 3D animation, providing a realistic walkthrough that allows clients to visualize the space effectively.

日本語訳

この製品説明からDALL-E 3のプロンプトを生成してください。
CreativeSpacesによる3Dアニメーションオフィススペースデザインは、プロフェッショナルな作業環境の現代的でインタラクティブな表現を提供します。このデザインコンセプトには、エルゴノミクスに基づいた家具、オープンで協力的な作業スペース、自然を感じさせる緑、大きな窓から最大限の自然光を取り入れることが含まれています。レイアウトには、会議ポッド、ホットデスク、さまざまな作業モードに対応するブレイクアウトエリアも組み込まれています。オフィスはニュートラルなカラーパレットで、緑と青のアクセントが落ち着きながらも生産的な雰囲気を作り出しています。

3Dアニメーションオフィススペースデザインは、建築家、インテリアデザイナー、作業スペースを刷新しようとする企業を対象としています。プライバシーとコラボレーションのバランスを取ることの重要性を強調しており、集中した作業のための静かなゾーンとチームの相互作用のための共有エリアが含まれています。スペースには、ガラスや木材などの現代的な素材が使用されており、生産性と従業員の幸福感を高める革新的な照明ソリューションが組み合わされています。
美的魅力を超えて、3Dアニメーションオフィススペースデザインは機能性を考慮して設計されています。十分な収納ソリューション、騒音を軽減するための音響パネル、さまざまなニーズに合わせて再配置できるモジュラー家具が含まれています。オフィス全体の緑の壁と鉢植えの植物は、創造性を促進し、ストレスを軽減するリフレッシュした環境を作り出します。デザインは高品質の3Dアニメーションで提示されており、クライアントが空間を効果的に視覚化できるようにリアルなウォークスルーを提供します。

プロンプトを送信し、生成されたプロンプトをコピーします。3点をクリックして、プロンプトをコピーします。
応答をクリップボードにコピーするをクリックします。

chat-playground-clip

画像プレイグラウンドに戻り、プロンプトを貼り付け、送信します。

実行結果

img-playground-8

これで、DALL-E3を使用してプロンプトに基づいて画像を生成することができました。

DALL-Eのベストプラクティス

ここまでで、DALL-E 3を使用して画像を生成する方法を学びました。
DALL-E 3を使用して効果的かつ正確な画像を作成するには、次のベストプラクティスに従ってください。

項番 項目 説明
1 明確で説明的なプロンプト テキストプロンプトは明確かつ詳細に作成してください。説明が具体的であればあるほど、DALL-E 3 がリクエストに一致する画像を生成する可能性が高くなります。主題、行動、環境、スタイル、その他の重要な詳細などの属性を含めてください。
2 形容詞の使用 画像に伝えたい性質、感情、特徴を表現するために、形容詞や副詞を使いましょう。これにより、生成された画像があなたのビジョンにさらに合致したものに洗練されます。
3 詳細と簡潔さのバランス 詳細は重要ですが、過度に複雑または矛盾したプロンプトはAIを混乱させ、予期せぬ結果につながる可能性があります。説明が複雑になりすぎず、十分な背景情報を提供できるバランスを目指しましょう。
4 様々なスタイルを試してみる 画像に特定の美的感覚を持たせたい場合は、芸術的なスタイルや影響範囲を指定してください。例えば、芸術的な画像をリクエストすることができます。
5 反復的なアプローチ 最初に生成された画像は必ずしも完璧ではない場合があります。それを出発点として、出力結果に基づいてプロンプトを反復的に調整し、目的の結果に近づけていきます。
6 アスペクト比と構図 画像の構図やアスペクト比にご希望がある場合は、リクエストにご記入ください。例えば、横長の画像や、被写体が中央からずれたポートレート画像をリクエストできます。
7 文化的および文脈的参照 適切な場合は、画像生成プロセスをガイドするのに役立つ追加のコンテキストを提供するために、文化的または歴史的な参照を含めます。
8 責任あるAIに関する考慮事項 プロンプトが責任あるAIに与える影響に留意してください。不快な画像、ステレオタイプを助長する画像、著作権を侵害する画像の作成は避けてください。
9 テストと学習 様々なプロンプトを試して、DALL-E 3が様々な説明をどのように解釈するかを理解しましょう。この学習プロセスは、時間の経過とともにプロンプ​​トの精度を向上させるのに役立ちます。
10 ガイドラインの遵守 プロンプトを作成する際は、OpenAIのユースケースポリシーとコンテンツガイドラインを遵守してください。OpenAIのコンテンツポリシーで許可されていない画像のリクエストは避けてください。

以上で、DALL-E3を使用して画像を生成する方法とベストプラクティスについて学びました。
次に、マルチモーダリティを使用して画像とテキスト、音声でモデルから応答を取得します。

Part3 - マルチモーダリティ(Use image and Real-time audio playground)

このパートでは、マルチモーダル機能を使用して画像とテキスト、音声でモデルから応答を取得します。
以下の順番で進めていきます。

1.画像とテキストを組み合わせたプロンプト
2.音声を使ってモデルと対話する(リアルタイムオーディオインタラクション)

画像とテキストを組み合わせたプロンプト

左のメニューからプレイグラウンドをクリックします。

playground

プレイグラウンドからチャットプレイグラウンドを開きます。(画像では丸印1の部分)
playgrounds

まずはチャット履歴を消去します。箒のマークをクリックしてチャット履歴を消去します。

chat-playground-3.png

クリアをクリックすると、チャット履歴が消去されます。クリアをクリックします。

chat-playground-4.png

システムメッセージを空白にして変更の適用をクリックします。
multi-modal-1

システムメッセージを更新するかどうかを確認するダイアログが表示されますので、はいをクリックします。

system-msg-2

画像をアップロードします。アップロードする画像はGitHub上にあります。
以下のリンクを別のタブで開き、画像をダウンロードしてください。

画像の保存先:house-multimodal

画像がダウンロードできたら、チャットプレイグラウンドに戻ります。
画像をアップロードするにはクリップのマークをクリックします。

multi-modal-2

01.jpeg、02.jpeg、03.jpeg、 04.jpegの4つの画像をアップロードします。
アップロードが完了すると、画像のサムネイルがプロンプト入力フォームに表示されます。
multi-modal-3

アップロードが終わったら、以下のプロンプトを入力してSendボタンをクリックします。

Create a tagline and short description for this rental home advertisement.
- The first picture is from the home
- The other pictures are from sights nearby
- In the description use the features of the house and make the ad more compelling with the sights. 
- Do not talk about features not visible in the images.
- If you have information about the location of the images, use that information in the description

日本語訳

この賃貸住宅広告のキャッチフレーズと短い説明を作成してください。
- 最初の画像は家からのものです
- 他の画像は近くの観光名所からのものです
- 説明には家の特徴を使用し、観光名所を使って広告をより魅力的にしてください。
- 画像に表示されていない機能については言及しないでください。
- 画像の場所に関する情報がある場合は、説明にその情報を使用してください。

音声を使ってモデルと対話する(リアルタイムオーディオインタラクション)

次に、音声を使ってモデルと対話する方法を学びます。
gpt-4o-realtime-previewモデルを活用することで、ユーザーは音声コマンドを使用してプラットフォームと対話できるようになります。

左のメニューからプレイグラウンドをクリックします。

playground

プレイグラウンドからオーディオプレイグラウンドを開きます。(画像では丸印3の部分)
playgrounds

オーディオプレイグラウンドを開いたら、以下のプロンプトをシステムメッセージに入力します。

You are a pirate, and every response must be full of pirate lingo.

日本語訳

あなたは海賊であり、すべての応答は海賊用語で満たされなければなりません。

プロンプトの入力が終わりましたら変更の適用をクリックします。
realtime-audio-1.png

システムメッセージを更新するかどうかを確認するダイアログが表示されますので、はいをクリックします。

system-msg-2

次に音声を録音するため、マイクを有効化します。マイクを有効にするをクリックします。
realtime-audio-2.png

ブラウザのマイクへのアクセスを許可するダイアログが表示されますので
Allow while visiting the siteAllow this timeをクリックします。本ハンズオンではAllow while visiting the siteを選択します。

realtime-audio-3.png

マイクが有効化されると聞き取りを開始ボタンが有効化されます。一番聞き取りがしやすいマイクを選択して聞き取りを開始をクリックします。
試しに音声入力を試してみましょう。

realtime-audio-4.png

音声入力を止める場合は聞き取りを停止をクリックします。

realtime-audio-5.png

補足:マルチモーダル操作のベストプラクティス

項番 項目 説明
1 文脈の具体性 現在のシナリオに文脈を追加することで、モデルは適切な出力をより深く理解できるようになります。このレベルの具体性により、関連する側面に焦点を当て、不要な詳細を回避できます。
2 タスク指向のプロンプト 特定のタスクに焦点を当てると、モデルはその視点を考慮しながら出力を開発するのに役立ちます。
3 出力形式を定義する マークダウン、JSON、HTML など、出力に必要な形式を明確に指定します。応答に関する特定の構造、長さ、または特定の属性を提案することもできます。
4 拒否への対応 モデルがタスクを実行できないと示唆した場合、プロンプトを改良することが効果的な解決策となる場合があります。より具体的なプロンプトを提示することで、モデルはタスクをより明確に理解し、より適切に実行できるようになります。以下に留意すべきヒントをいくつか示します。モデルの出力の透明性を高めるために、生成された応答の説明を要求する単一画像のプロンプトを使用する場合は、テキストの前に画像を配置します。まずモデルに画像を詳しく説明してもらい、その説明から特定のタスクを完了します。
5 プロンプトの調整 次のようなテキスト生成シナリオで検討したプロンプトの調整手法を試してください。リクエストの分解(思考の連鎖など)

(説明のみ)Part4 - Azure AIエージェントAgents playground(Assistant-playground)

これが最後のパートになります。このパートでは、Azure AIエージェントを使用してモデルから応答を取得します。
これまで、私たちは大規模言語モデルを様々な方法で利用してきました。
しかし、これらの利用はそれぞれ独立しており、非常に特定の目的に結び付けられていました。

Azure AIエージェントはこれまでの利用を一つのソリューションに統合することで、私たちの利用における次のステップを象徴しています。

エージェントの構成要素を理解する

Azure AI エージェントの使用を開始するには、その機能に関与するさまざまなコンポーネントを理解し、対処することが重要です。
以下のコンポーネントについて説明します。

  • エージェント
  • スレッド
  • メッセージ

まず、エージェントが果たす機能として主に以下の機能があります。

  • 質問回答
  • アクションの実行(Web検索やAPIへのリクエスト)
  • ワークフローの自動化

また、これらの機能は個々のサービスとして動作し、RAG(検索拡張生成)を用いて実行される場合もあります。
つまり、エージェントは「スマート」なマイクロサービスと言えます。

エージェントを作成したら、次のステップはスレッドを作成することです。
スレッドとは、エージェントとユーザー間の会話セッションです。
スレッドはメッセージを保存し、モデルのコンテキストに合わせてコンテンツを切り詰める処理を自動的に行います。

メッセージはエージェントまたはユーザーによって作成され、テキスト、画像、その他のファイルが含まれます。
これらはスレッド上にリストとして保存されます。

最後に、エージェントを実行します。これは、スレッドの内容に基づいてエージェントを起動し、実行を開始することを意味します。
エージェントは自身の設定とスレッドのメッセージを使用し、モデルやツールを呼び出してタスクを実行します。

実行の一環として、エージェントはスレッドにメッセージを追加します。

片付け

最後にリソースグループの削除とAzure AI Foundryの削除されたリソースの管理でリソースを完全に削除します。
キーコンテナについては削除されたリソースの管理で削除することができませんので有効期限7日間を待ちます。(特に何もする必要はありません)

まとめ

本ハンズオンでは、Azure AI Foundryを使用して、テキスト生成、画像生成、マルチモーダリティの機能を学びました。
また、Azure AIエージェントを使用して、エージェントの構成要素や機能についても学びました。

Part4は説明のみとなりますが、Azure AIエージェントは非常に強力な機能を持っており、さまざまなユースケースに対応できることがわかりました。
※ハンズオンの動作確認をしようとしたところ、エラーで先に進めなかったため説明のみとなります。うまく動作するようになりましたら改めて追記します。

参考資料

Discussion