満足度100%を達成したプロンプトエンジニアリング社内ハンズオンの内容を公開

満足度100%を達成したプロンプトエンジニアリング社内ハンズオンの内容を公開

はじめに

検索基盤部 検索基盤ブロックの佐藤(@satto_sann)です。普段はZOZOTOWNの検索システムの開発や、社内エンジニア向けAI活用推進に取り組んでいます。

AI活用推進の一環として、エンジニアを対象としたプロンプトエンジニアリングのハンズオンを実施しました。本記事では、そのハンズオンの内容や、実施を通じて得られた学びについて紹介します。

具体的には、以下の内容をまとめています。

  • 代表的な8つのプロンプトエンジニアリング手法と、実務で使える具体的なプロンプト例(良い例・悪い例)
  • ハンズオン実施後に実施した参加者アンケートの結果
  • 企画・運営を通じて見えてきた学びや改善ポイント

社内で生成AIの活用を推進している方や、「プロンプトエンジニアリングという言葉は知っているものの、実務ではうまく使いこなせていない」と感じている方にとって、少しでも参考になれば幸いです。

目次

プロンプトエンジニアリングとは

プロンプトエンジニアリングとは、LLM(大規模言語モデル)から期待通りの出力を得るために、LLMへの指示文(プロンプト)を設計する技術のことです。

プロンプトエンジニアリングの有効性

どんなに強力なAIツールを使っていても、適切なプロンプトでなければ本来の能力を十分に発揮できません。適切なプロンプトエンジニアリングにより、求めている情報や形式に沿った的確な出力を引き出すことができるようになります。つまり、プロンプトエンジニアリングは、AIという強力なツールを「使いこなす」ための必須スキルです。

ハンズオン実施の背景と目的

背景

生成AIを業務に取り入れる企業が増える中、「プロンプトエンジニアリング」という言葉を耳にする機会も多くなっているのではないでしょうか。しかし、体系的な学習機会がないまま、なんとなくの理解で終わっている方も少なくないと感じています。

社内の課題と施策

社内でもChatGPTをはじめとする生成AIツールの活用が進んでいましたが、プロンプトエンジニアリングを体系的に学べる資料や機会は提供できていませんでした。そのため、各手法をどこまで知っているかは個人によってばらつきがある状態だったと考えています。

また、プロンプトエンジニアリングの手法についてまとめた記事は世の中にたくさんありますが、実務で応用しやすい形式になっているものは意外と少ないと感じていました。そこで、社内のエンジニア向けに体系的な学習ができるハンズオンを企画・実施しました。

なぜハンズオン形式を選んだのか

社内でプロンプトエンジニアリングに関する知識を共有する方法として、ドキュメント配布や動画共有も検討しました。しかし、プロンプトエンジニアリングは実際に手を動かして試行錯誤することで身につく部分が大きいと考え、ハンズオン形式を採用しました。

参加者が自分の手でプロンプトを入力し、出力の違いを体感することで、より実践的な理解が得られると期待していました。

ハンズオンの目的

参加者が以下を持ち帰れることを目指しました。

  • 「なんとなく使っていた」状態から「意図を持って使い分けられる」状態への変化
  • 明日から業務で試せる具体的なプロンプトパターン

ハンズオンの内容

ハンズオンでは、まずプロンプトを書く上での基本原則を確認した後、実務で活用しやすい8つの手法を実際に試してもらいました。最後に、生成AIを使う上で避けて通れないハルシネーションについても注意喚起を行いました。

以降では、それぞれの内容を具体的なプロンプト例とともに紹介します。

基本原則:AIとの対話の基本

基本原則

プロンプトを書く上での基本原則は以下の4つです。

  • 簡潔:過不足なく簡潔に伝える
  • 明確:タスクは具体的かつ明確に定義する
  • 一問一答:質問は1つずつ絞る
  • 察して禁止:AIはあなたの意図を理解しません。例や背景、課題を添えて理解を助ける

特に「察して禁止」については、人間同士のコミュニケーションとの違いとして強調しました。AIは文脈を察する能力が限定的なため、必要な情報は明示的に伝える必要があります。

紹介した8つの手法

1. ロールプロンプト(役割の付与)

項目 説明
使いどころ ・ 特定の専門知識や視点を持つ人物として回答してほしいとき
・ 複数の立場からの意見を得たいとき
メリット ・ 回答の深さ・具体性が増す
・ トーンや表現が一貫する
注意点 ・ 役割設定が曖昧だと効果が薄れる
・ ターゲット(誰向けか)も併せて指定すると効果的

AIに特定の役割やペルソナを与える手法です。「あなたは熟練したPythonエンジニアです」のように役割を指定することで、その専門性を持った視点からの回答を得られます。

ハンズオンでは、コードレビューのシーンを例に、役割を指定した場合としない場合の出力の違いを確認しました。

❌ 悪い例

以下コードをレビューしてください

### コード ###
import csv
# CSVファイルを読み込む
with open('data.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:

この例では、相手(ペルソナ)の属性が不明で、誰の立場でフィードバックするかが不明確です。

✅ 良い例

あなたは熟練したPythonの知識があり、チーム開発を行う優しい先輩エンジニアです。
Pythonに不慣れな後輩エンジニアから以下コードのレビュー依頼があったので
フィードバックしてください。

### コード ###
import csv
# CSVファイルを読み込む
with open('data.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:

ロールが明確になることで、指摘の深度や伝え方が調整され、より実務的で具体的なフィードバックが得られることを体感してもらえたと思います。

2. Zero-Shot・One-Shot・Few-Shot

項目 説明
使いどころ ・ Zero-Shot:シンプルなタスク
・ One-Shot:フォーマット指定
・ Few-Shot:複雑なルールの理解
メリット ・ 例を増やすほど精度と一貫性が向上
・ 微妙なニュアンスにも対応可能
注意点 ・ 例が多すぎるとコストが増加
・ タスクの複雑さに応じて適切な例数を選択する

AIに示す例の数を調整する手法です。

  • Zero-Shot:例を示さずにタスクだけを渡す
  • One-Shot:1つの例を示して参考にさせる
  • Few-Shot:複数の例を示して複雑なパターンを理解させる

実務では、例なしで十分な場合はZero-Shot、精度を上げたい場合はFew-Shotを使うケースが多いです。ハンズオンでは、商品属性の抽出を例に、Zero-ShotとFew-Shotの違いがより顕著に現れることを体感してもらいました。

❌ 悪い例(Zero-Shot)

商品説明から属性を抽出して

「柔らかなカシミヤ100%のタートルネックニット。上品なベージュカラー。」

✅ 良い例(One-Shot)

商品説明文から、以下の属性を抽出してください。

入力: 「軽量で撥水加工を施したナイロンジャケット。ブラックとネイビーの2色展開。」
出力:
- 素材: ナイロン
- 機能: 撥水加工, 軽量
- カラー: ブラック, ネイビー
- アイテム: ジャケット

【抽出対象】
入力:「柔らかなカシミヤ100%のタートルネックニット。上品なベージュカラー」
出力:

1つの例を示すことで、例と同じ形式で出力されます。形式が決まっているようなタスクにはOne-Shotが有効です。

加えて、例を増やす(Few-Shot)ことでより多様なパターンへ対応できます。

✅ 良い例(Few-Shot)

商品説明文から、以下の属性を抽出してください。

【例1】
入力: 「軽量で撥水加工を施したナイロンジャケット。ブラックとネイビーの2色展開。」
出力:
- 素材: ナイロン
- 機能: 撥水加工, 軽量
- カラー: ブラック, ネイビー
- アイテム: ジャケット

【例2】
入力: 「ストレッチ性に優れたコットンデニム。スリムフィット。ダメージ加工。」
出力:
- 素材: コットンデニム
- 機能: ストレッチ
- フィット: スリム
- デザイン: ダメージ加工
- アイテム: デニム

【抽出対象】
入力: 「柔らかなカシミヤ100%のタートルネックニット。上品なベージュカラー。」
出力:

複数の例で抽出パターンを示すことで精度が上がり、一貫した出力が得られます。

3. CoT(Chain-of-Thought)

項目 説明
使いどころ ・ 複雑な判断や計算が必要なとき
・ AIの判断根拠を知りたいとき
メリット ・ 思考プロセスが可視化される
・ 各ステップのチューニングが容易になる
注意点 ・ シンプルなタスクには過剰
・ ステップ設計に手間がかかる場合はZero-Shot CoTを検討

複雑な問題を小さなステップに分解し、AIに段階的に考えさせる手法です。

❌ 悪い例

この商品の適正価格を教えて

商品: レザージャケット
原価: ¥15,000

この例では判断基準が不明で、思考プロセスが見えません。

✅ 良い例

以下の商品の販売価格を提案してください。
段階的に考えて、最終的な推奨価格を提示してください。

【商品情報】
- 商品: レザージャケット
- 原価: ¥15,000
- ブランド: URBAN LEATHER (中価格帯、若年層向け)
- ターゲット: 20-30代男性
- 季節: 秋冬
- カテゴリ平均価格: ¥25,000〜¥35,000

【価格設定の考え方ステップ】
ステップ1: 原価率から基本価格を算出
- 原価の2.5〜3.5倍が一般的な小売価格
- 計算してください

ステップ2: 競合分析を考慮
- 同カテゴリの平均価格帯を考慮
- ブランドポジショニング(中価格帯)を反映

ステップ3: ターゲット顧客の支払い意欲
- 20-30代の価格感度を考慮
- 購入しやすい価格設定

ステップ4: 最終的な推奨価格
- 上記を総合して、推奨価格を提示
- 理由も簡潔に説明

【出力形式】
各ステップの考察と、最終推奨価格を記載してください。

ステップごとに判断根拠が可視化され、最終的な出力結果が意図しない場合もステップごとの出力を見て修正・変更ができるようになります。

4. Zero-Shot CoT

項目 説明
使いどころ ・ 日常的なタスクで手軽に精度を上げたいとき
・ CoTのステップ設計が面倒なとき
メリット ・ 一文追加するだけで精度向上
・ 導入コストが極めて低い
注意点 高度に専門的なタスクでは、明示的なステップ設計(CoT)の方が効果的な場合もある

プロンプトに「ステップバイステップで考えて」の一文を追加するだけで、AIが自動で段階的な思考をするようになる手法です。

カフェテリアには23個のリンゴがありました。
彼らは20個を昼食に使い、さらに6個のリンゴを購入した場合、現在何個のリンゴがありますか?
ステップバイステップで考えてください。

日常的なタスクで手軽に使える点が好評でした。思考プロセスをAIに指示するのはカロリーが高いですが、この一文を追加するだけで精度が高くなる傾向にあります。

5. プロンプトチェーン

項目 説明
使いどころ ・ 大規模タスクを段階的に進めたいとき
・ 各ステップで異なる視点や出力形式を求めたいとき
メリット ・ 途中段階で確認・修正が可能
・ ロールを段階的に変化させて精度を高められる
注意点 ・ 複数回のAI呼び出しが必要
・ シンプルなタスクには過剰な場合がある

複雑なタスクを複数の小さなタスクに分割し、各タスクの出力を次のタスクの入力として使用する手法です。資料作成を例に、4つのステップに分けて実演しました。

ステップ1:要件整理

あなたは社内向けのプレゼン資料作成の専門家です。
ChatGPTをチーム内で正式導入するため、上司(AIツールに詳しくないが、
業務効率化に関心がある)へ提案する資料を作成してください。

### ステップ1の指示 ###
次の提案資料を作る前に、以下の項目を整理してください。
- 提案の目的(何を実現したいか)
- 想定読者(上司の立場や関心)
- 伝えたいメッセージ(この資料で最も訴えたい点)
テーマ:「ChatGPTをチーム内に正式導入する提案」
出力は箇条書きで、簡潔にまとめてください。

ステップ2:構成設計

あなたはビジネスプレゼンの構成設計者です。

### ステップ2の指示 ###
ステップ1で整理した内容をもとに、上司向けの提案資料構成を設計してください。
各スライドのタイトルと要点(2~3行)を提示してください。

ステップ3:本文作成

あなたはプレゼン資料作成の編集者です。

### ステップ3の指示 ###
ステップ1で整理した内容とステップ2構成案をもとに、
各スライド内容をMarkdown形式で作成してください。
出力形式:
- 各スライドを「# スライドタイトル」「- 要点」で表記
- ビジネスプレゼンに適した簡潔な文章
- 上司が3分以内に理解できる情報量

ステップ4:添削・リライト

あなたはIT企業で働くチームマネージャー
(AIツールに詳しくないが、業務効率化に関心がある)です。

### ステップ4の指示 ###
メンバーが作成したプレゼン資料について、伝わりやすいトーンにリライトしてください。
修正ポイント:
- 専門用語を避け、平易な表現に言い換える
- 「なぜ導入すべきか」を強調する
- 文のリズムを整え、読みやすくする

「一度で完璧を目指す」よりも「段階的に精度を積み上げる」という考え方がプロンプトチェーンの本質です。途中段階で確認と修正を挟めるため、最終出力が意図と大きくずれるリスクを軽減できます。

プロンプトの構造化

ここまで、役割付与や思考プロセスの設計など、プロンプトの「内容」に関する手法を紹介してきました。ここからは、プロンプトの「構造」を整理することで、AIの解釈精度を高める3つの手法を紹介します。

プロンプトの構造化手法

これらの手法は、指示・データ・制約条件を明確に区別することで、AIの誤解釈を防ぎ、より正確な出力を得ることができます。

6. 区切り記号を使った構造化

項目 説明
使いどころ ・ 常に利用をオススメ
・ 特に長文や複雑な構造を持つプロンプトで効果的
メリット ・ 指示・データ・制約の境界が明確になる
・ AIの解釈ミスを防止できる
注意点 ・ 区切り記号の種類は統一する
・ 過度に複雑な構造はXML形式を検討

###"""---などの区切り記号を使って、プロンプトを指示・入力データ・制約条件などに明確に分離する手法です。情報の境界を視覚的に示すことで、AIの解釈ミスを防ぎます。

商品説明の翻訳を例に確認しました。

❌ 悪い例

以下の日本語商品説明を英語に翻訳してください。
- 対象読者: 海外の30代女性顧客
- トーン: 商品説明として自然で魅力的な英語
- 専門用語は一般的な表現に
- ECサイトの商品ページに掲載される文章
このニットは柔らかいカシミヤ100%で作られています。
肌触りが良く、保温性に優れているため、秋冬シーズンに最適です。
上品なデザインで、カジュアルからオフィススタイルまで幅広く対応します。
お手入れは手洗いを推奨しております。
翻訳された英語テキストのみを出力してください。

この例では、どこまでが翻訳対象か不明確で、指示と内容が混在しています。

✅ 良い例

以下の日本語商品説明を英語に翻訳してください。

### 指示 ###
- 対象読者: 海外の30代女性顧客
- トーン: 商品説明として自然で魅力的な英語
- 専門用語は一般的な表現に
- ECサイトの商品ページに掲載される文章

### 翻訳対象 ###
"""
このニットは柔らかいカシミヤ100%で作られています。
肌触りが良く、保温性に優れているため、秋冬シーズンに最適です。
上品なデザインで、カジュアルからオフィススタイルまで幅広く対応します。
お手入れは手洗いを推奨しております。
"""

### 出力形式 ###
翻訳された英語テキストのみを出力してください。

この手法は常に利用することをオススメしており、参加者からも「すぐに使える」という声が多く聞かれました。

7. XML形式を使った高度な構造化

項目 説明
使いどころ ・ プロンプトが複雑かつ長文のとき
・ データを変数として埋め込みたいとき
メリット ・ 開始・終了が明確でAIの誤認を防止
・ ネスト構造で複雑なデータも表現可能
注意点 ・ シンプルなタスクには過剰
・ 区切り記号で十分な場合はそちらを優先

<data>xxx</data>のようなXMLタグを使い、指示や情報を明確に区別する手法です。プロンプトの構造が複雑な場合や、データを変数として埋め込む際に特に有効です。

顧客レビュー分析を例に確認しました。

❌ 悪い例

あなたはデータアナリストです。
A社とB社の顧客レビューを分析し、経営チーム向けにレポートを作成してください。
A社の配送が早くて助かりました。品質も良いです。なお、今後もこのスピードを維持してほしいです。
B社の商品はデザインが良いが、到着が遅かったです。なお、配送体制の見直しが必要だと思います。
A社のカスタマーサポートが親切でした。なお、対応スピードも安定しています。
なお、成功した施策と改善が必要な領域を明確にしてください。

この例では、レビュー内容と指示が混在しており、AIがどこまでがデータでどこからが指示かを判断しづらくなっています。

✅ 良い例

あなたはデータアナリストです。
A社やB社のレビューを分析し、<report_target name='A社'>経営チーム</report_target>
向けのレポートを作成してください。

### レビュー
<review>
  <good_reviews>
    - A社の配送が早くて助かりました。品質も良いです。なお、今後もこのスピードを維持してほしいです。
    - A社のカスタマーサポートが親切でした。なお、対応スピードも安定しています。
  </good_reviews>
  <bad_reviews>
    - A社のサイトは少し使いにくいと感じました。商品検索がもう少し改善されると嬉しいです。
    - B社の商品はデザインが良いが、到着が遅かったです。なお、配送体制の見直しが必要だと思います。
  </bad_reviews>
</review>

### 命令
成功した施策と改善が必要な領域を明確にしてください。

<good_reviews><bad_reviews>タグ内にレビューをまとめることで、以下メリットが受けられます。

  • データと命令の境界が明確になる
  • タグのネストも可能で、自然言語を複雑な構造で表現できる
  • タグを利用することでデータの変更・追加がしやすくなり、再利用性も向上

その他タグを使った例やベストプラクティスについては以下ドキュメントが参考になります。

8. 出力形式の指定

項目 説明
使いどころ ・ システム連携やデータ処理に使うとき
・ 複数項目を一貫した形式で取得したいとき
メリット ・ 出力の一貫性が保証される
・ 後続処理やデータベース登録が容易になる
注意点 形式だけでなく、各項目の定義や欠損時の扱いも明示すると精度が向上

JSON、Markdown、CSV、表など、出力形式を明示的に指定する手法です。システム連携やデータ処理を見据えた構造化データを取得したい場合に活用します。

商品データの構造化抽出を例に確認しました。

❌ 悪い例

商品情報を抽出して
「このシルクブラウスは高級感のある光沢が特徴。
サイズはS、M、Lの3展開。ホワイト、ブラック、ネイビーの3色。
価格は¥9,800です。」

この例ではフォーマットが不明で、出力結果の一貫性が保証されません。

✅ 良い例

以下の商品説明から情報を抽出し、JSON形式のみ出力してください。

### 商品説明 ###
「このシルクブラウスは高級感のある光沢が特徴。
サイズはS、M、Lの3展開。ホワイト、ブラック、ネイビーの3色。
価格は¥9,800です。」

### 出力形式 ###
以下のJSON形式で出力してください:
{
  "item_name": "商品名",
  "material": "素材",
  "sizes": ["サイズ1", "サイズ2", ...],
  "colors": ["カラー1", "カラー2", ...],
  "price": 数値(円),
  "features": ["特徴1", "特徴2", ...]
}

### 注意事項 ###
- 記載のない項目はnullとする
- 価格は数値のみ(円記号不要)
- サイズとカラーは配列で返す

明確なデータ構造を指定することで、システム連携が容易になり、一貫した出力が得られます。

より厳格な出力を求める場合は、各社モデルで提供している構造化出力(Structured Output)をAPI経由で利用するのがオススメですが、ここでは詳細は省きます。気になる方は以下ドキュメントを参考にしてください。

ハルシネーションへの注意

ハンズオンでは、手法の紹介だけでなく、ハルシネーション(幻覚)への注意喚起も行いました。LLMが実際には存在しない情報をあたかも正しいように生成してしまう現象であり、これを理解しておくことは非常に重要だと考えています。

ハルシネーションへの注意

回避方法として、以下を紹介しました。

  • 情報源を明示的に尋ねる
  • 事実確認が必要な場合は公式サイトや一次情報で裏付けを取る
  • 曖昧な質問を避け、具体的かつ検証可能な指示を出す
  • わからない場合は「わかりません」と答えるように促す

ハンズオンの成果

ハンズオン実施後、参加者にアンケートを実施しました。76名の方にご回答いただき、以下のような結果が得られました。

ハンズオンの内容満足度

「ハンズオンの内容には満足いただけましたか?」という質問(5段階評価)に対して、上位2段階(「満足」及び「大変満足」)と回答した方が100%でした。

ハンズオンの内容満足度グラフ

  • 大変満足:68.4%
  • 満足:31.6%

業務活用イメージ

業務活用イメージについても同様に5段階評価で質問したところ、上位2段階(「ある程度湧いた」及び「とても湧いた」)と回答した方が100%でした。

業務活用イメージグラフ

  • とても湧いた:68.4%
  • ある程度湧いた:31.6%

感想

参加者からいただいた感想の中から、いくつかの声をご紹介します。

  • 学習効果について:「良い例・悪い例を比較できたことが、プロンプトの理解に効果的だった」
  • 構成について:「内容が整理されており、初心者でも理解しやすかった。業務への応用イメージも湧いた」
  • 今後の活用について:「様々な手法やテクニックを知れた。目的や状況に応じた使い分けを実践していきたい」

実施してみての学び

今回のハンズオンを実施して、アンケート結果や参加者の声からいくつかの学びを得ることができました。

体系的な学習機会の重要性

プロンプトエンジニアリングは、日々の業務の中で自然と身につく部分もあります。しかし、参加者の感想にあった「様々な手法やテクニックがあることを知れた」という声からも分かるように、体系的な学習機会の提供が効果的です。基本原則や代表的な手法を学ぶことで、より効率的にスキルを習得できることを実感しました。

業務活用イメージの設問で100%の方が「湧いた」と回答してくださったことは、「なんとなく使っていた」状態から「意図を持って使い分けられる」状態への変化を示唆していると考えています。

実務に即した例の効果

ハンズオンでは、コードレビューや資料作成、商品データの抽出など、参加者の実務に近い例を多く取り入れました。「業務への応用イメージも湧いた」「初心者でも理解しやすい構成だった」といった感想をいただけたことから、抽象的な説明よりも具体的なユースケースを通じて学ぶアプローチが効果的だったと感じています。

また、「良い例・悪い例の形式が理解に効果的だった」という声もあり、比較を通じて違いを体感できる構成が学習効果を高めたと考えています。

継続的な学習のサポート

ハンズオンは一度きりの機会ですが、参加者が日常業務の中で思い出せるよう、資料を「チートシート」として活用できる形式で提供しました。学んだ内容を定着させるためには、継続的に振り返れる仕組みが重要だと考えています。

こうしたハンズオンの実施も、ZOZOが開発組織の全体で進めているAI活用推進の一環です。現在、開発者の約77%がAI活用に満足しているという調査結果も出ています。詳細は以下のスライドをご確認ください。

speakerdeck.com

AIワーキンググループの設置や知見の組織的な展開など、継続的な取り組みを進めています。今後は新しい手法やツールの登場に合わせた追加セッションの開催や、実践事例の共有会なども検討しており、組織全体でAI活用スキルを高めていく取り組みを継続していく予定です。

まとめ

本記事では、社内で実施したプロンプトエンジニアリングのハンズオンの取り組みについて紹介しました。

プロンプトエンジニアリングは、生成AIの業務活用で欠かせないスキルになりつつあります。しかし、体系的に学ぶ機会がないまま、なんとなくの理解で終わっている方も多いのではないでしょうか。

同様の課題を抱えている方や、社内でのAI活用推進を検討されている方にとって、本記事が何かしらの参考になれば幸いです。

おわりに

ZOZOでは、AIを活用した業務効率化やプロダクト開発に積極的に取り組んでいます。一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご覧ください。

corp.zozo.com

カテゴリー