anthropics/prompt-eng-interactive-tutorial

⭐ 15,455 🍴 1,424 Jupyter Notebook📄 No license (Anthropic公式チュートリアル) GitHubで見る →

主な特徴

  • **完全なインタラクティブ形式**: Jupyter Notebookで実際にコードを実行しながら学習
  • **段階的なカリキュラム**: 初級・中級・上級の3レベルで構成
  • **実践的なエクササイズ**: 各章にハンズオン演習と自動採点機能
  • **ヒントシステム**: 詰まったときのための段階的なヒント提供
  • **マルチプラットフォーム対応**: Anthropic API直接、Amazon Bedrock、Google Sheets版
  • **産業別の応用例**: 法務、金融、プログラミング、カスタマーサービス
  • **最新のテクニック**: XMLタグ、プリフィル、ハルシネーション回避、ツール使用
  • **Claude 3モデル対応**: Haiku(高速・安価)を使用した一貫した学習体験

リポジトリ解析: anthropics/prompt-eng-interactive-tutorial

基本情報

  • リポジトリ名: anthropics/prompt-eng-interactive-tutorial
  • 主要言語: Jupyter Notebook
  • スター数: 15,455
  • フォーク数: 1,424
  • 最終更新: 継続的に更新中
  • ライセンス: No license (Anthropic公式チュートリアル)
  • トピックス: プロンプトエンジニアリング, Claude, LLM, AIチュートリアル, インタラクティブ学習

概要

一言で言うと

Anthropicが提供する包括的なプロンプトエンジニアリングのインタラクティブチュートリアルで、Claudeを最大限に活用するためのテクニックを実践的に学べるハンズオンコース。

詳細説明

このチュートリアルは、Claude(AnthropicのAIアシスタント)を効果的に使用するためのプロンプトエンジニアリング技術を体系的に学ぶためのコースです。初心者から上級者までを対象に、9章+4つの付録から成る段階的な学習プログラムを提供しています。

コースを完了することで、参加者は「上位0.1%のLLMウィスパラー」になることを目指し、基本的なプロンプト構造から複雑な産業応用まで、幅広いテクニックをマスターできます。特に実践的なエクササイズとヒントシステムによるインタラクティブな学習体験が特徴です。

主な特徴

  • 完全なインタラクティブ形式: Jupyter Notebookで実際にコードを実行しながら学習
  • 段階的なカリキュラム: 初級・中級・上級の3レベルで構成
  • 実践的なエクササイズ: 各章にハンズオン演習と自動採点機能
  • ヒントシステム: 詰まったときのための段階的なヒント提供
  • マルチプラットフォーム対応: Anthropic API直接、Amazon Bedrock、Google Sheets版
  • 産業別の応用例: 法務、金融、プログラミング、カスタマーサービス
  • 最新のテクニック: XMLタグ、プリフィル、ハルシネーション回避、ツール使用
  • Claude 3モデル対応: Haiku(高速・安価)を使用した一貫した学習体験

使用方法

インストール

前提条件

Anthropic API直接版:

  • Python 3.7以上
  • Anthropic APIキー(console.anthropic.comで取得)
  • Jupyter NotebookまたはJupyterLab

Amazon Bedrock版:

  • AWSアカウント(Bedrockアクセス権限付き)
  • AWS CLIの設定済み
  • Python 3.7以上

インストール手順

# 方法1: Anthropic API直接版
git clone https://github.com/anthropics/prompt-eng-interactive-tutorial.git
cd prompt-eng-interactive-tutorial/"Anthropic 1P"
pip install anthropic

# APIキーを環境変数に設定
export ANTHROPIC_API_KEY="your-api-key-here"

# Jupyter Notebookを起動
jupyter notebook

# 方法2: Amazon Bedrock版
git clone https://github.com/anthropics/prompt-eng-interactive-tutorial.git
cd prompt-eng-interactive-tutorial/AmazonBedrock
pip install -r requirements.txt

# AWS認証情報を設定
# aws configure または IAMロールを使用

# Jupyter Notebookを起動
jupyter notebook

基本的な使い方

Hello World相当の例

# シンプルなプロンプトの例
from anthropic import Anthropic

client = Anthropic()
response = client.messages.create(
    model="claude-3-haiku-20240307",
    max_tokens=100,
    messages=[{
        "role": "user",
        "content": "Hi Claude, how are you?"
    }]
)
print(response.content[0].text)

実践的な使用例

# ロールプロンプティングとXMLタグを使用した例
SYSTEM_PROMPT = "You are a helpful customer support assistant."

PROMPT = """Please classify this customer email:

<email>
My Mixmaster won't turn on anymore. I've tried everything!
</email>

<categories>
(A) Pre-sale question
(B) Broken or defective item
(C) Billing question
(D) Other
</categories>

Classification:"""

response = client.messages.create(
    model="claude-3-haiku-20240307",
    max_tokens=50,
    temperature=0,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": PROMPT}]
)
print(response.content[0].text)
# 出力: "The correct category is: B"

高度な使い方

# ハルシネーション回避と証拠ベースの回答
PROMPT = """
<question>
What was Matterport's subscriber base on May 31, 2020?
</question>

Please read the below document. Then, in <scratchpad> tags, 
pull the most relevant quote from the document and consider whether 
it answers the user's question or lacks sufficient detail.
Then write a brief numerical answer in <answer> tags.

<document>
{document_content}
</document>
"""

# プリフィルを使用して出力形式を制御
response = client.messages.create(
    model="claude-3-haiku-20240307",
    max_tokens=300,
    temperature=0,
    messages=[
        {"role": "user", "content": PROMPT},
        {"role": "assistant", "content": "<scratchpad>\nLet me search for information about Matterport's subscriber base..."}
    ]
)
print(response.content[0].text)

ドキュメント・リソース

公式ドキュメント

サンプル・デモ

  • 各章のNotebook: 実際に動作するプロンプト例とエクササイズ
  • Example Playground: 各レッスン末尾の実験エリア
  • hints.py: エクササイズ用のヒントシステム

チュートリアル・ガイド

コース構成:

  1. 初級 (Ch.1-3): 基本構造、明確な指示、ロール設定
  2. 中級 (Ch.4-7): データ分離、出力制御、段階的思考、Few-shot
  3. 上級 (Ch.8-9): ハルシネーション回避、産業応用
  4. 付録: プロンプトチェーン、ツール使用、検索拡張

関連リソース:

技術的詳細

アーキテクチャ

全体構造

インタラクティブなJupyter Notebookベースのチュートリアルシステム。各ノートブックは独立したレッスンとして機能し、学習者は順番に進めることで体系的に学習できる設計。

ディレクトリ構成

prompt-eng-interactive-tutorial/
├── Anthropic 1P/         # Anthropic API直接版
│   ├── 00_Tutorial_How-To.ipynb
│   ├── 01_Basic_Prompt_Structure.ipynb
│   ├── 02_Being_Clear_and_Direct.ipynb
│   ├── ...他9つの章と付録
│   └── hints.py          # ヒントシステム
├── AmazonBedrock/         # AWS Bedrock版
│   ├── anthropic/        # Anthropic SDK使用版
│   │   ├── 00_Tutorial_How-To.ipynb
│   │   └── ...同様の構成
│   ├── boto3/            # AWS SDK直接使用版
│   │   └── ...同様の構成
│   ├── cloudformation/   # AWSデプロイテンプレート
│   ├── requirements.txt
│   └── utils/            # ヒントシステム
└── README.md

主要コンポーネント

  • チュートリアルNotebook: 各章のインタラクティブな学習コンテンツ

    • 場所: 01_Basic_Prompt_Structure.ipynb
    • 機能: レッスン内容、エクササイズ、プレイグラウンド
    • インターフェース: Claude API呼び出し、自動採点
  • ヒントシステム: エクササイズで詰まった際の支援

    • 場所: hints.py / utils/hints.py
    • 機能: 段階的なヒント提供
    • 使用方法: from hints import exercise_1_1_hint; print(exercise_1_1_hint)
  • ユーティリティ関数: API呼び出しと結果表示

    • 機能: シンプルなAPIラッパー、フォーマット出力
    • 設定: temperature=0で一貫した結果

技術スタック

コア技術

  • 言語: Python 3.7+
  • フレームワーク: Jupyter Notebook
  • 主要ライブラリ:
    • anthropic (0.21.3+): Anthropic公式SDK
    • boto3 (1.34.74): AWS SDK for Python
    • botocore (1.34.74): AWS SDKコア
    • awscli (1.32.74): AWSコマンドラインツール

Claudeモデル

  • 使用モデル: Claude 3 Haiku (claude-3-haiku-20240307)
  • 選定理由: 最速、最安価、学習に最適
  • Temperature: 0(一貫した結果のため)
  • 他のモデル: Sonnet(中級)、Opus(最高性能)も利用可能

プラットフォーム対応

  • Anthropic API直接: console.anthropic.com経由
  • Amazon Bedrock: AWS統合サービス
  • Google Sheets: Claude for Sheets拡張機能

設計パターン・手法

主要なプロンプトエンジニアリングテクニック:

  1. 明確な指示: 曖昧さを排除した直接的なコミュニケーション
  2. ロールプロンプティング: 特定の専門性やペルソナを設定
  3. XMLタグの活用: データと指示の明確な分離
  4. プリフィリング: 出力形式の制御
  5. Few-shotプロンプティング: 例示による学習
  6. 段階的思考: "Think step by step"指示
  7. ハルシネーション回避: 「わからない」と言える選択肢の提供

データフロー・学習フロー

チュートリアルの進行フロー:

  1. レッスン内容の学習: 概念とテクニックの説明
  2. 例示の確認: 実際のプロンプトと出力の確認
  3. エクササイズの実施: ハンズオンでの実践
  4. ヒントの活用: 詰まった際の段階的支援
  5. プレイグラウンドでの実験: 自由な探索と学習
  6. 次のレッスンへ: 段階的な難易度上昇

API・インターフェース

プロンプト構造テンプレート

複雑なプロンプトの10要素フレームワーク

  1. ユーザーロール (API要件)
  2. タスクコンテキスト
  3. トーンコンテキスト
  4. 詳細なタスク説明とルール
  5. 例示 (Few-shot)
  6. 入力データ
  7. 即座のタスク説明
  8. 思考プロセス (Precognition)
  9. 出力フォーマット
  10. レスポンスプリフィル

主要なテクニック

XMLタグの使用例

<instructions>
ここに指示を記載
</instructions>

<data>
処理するデータ
</data>

<examples>
<example>
入力: XXX
出力: YYY
</example>
</examples>

プリフィリングの使用

messages = [
    {"role": "user", "content": prompt},
    {"role": "assistant", "content": "<analysis>\nLet me analyze..."}
]

パフォーマンス・スケーラビリティ

学習効果の特性

  • インタラクティブ学習: 即座にフィードバックを得られる点で高い学習効率
  • 段階的進行: 初級から上級までのスムーズな移行
  • 実践的スキル: すぐに実務に応用可能なテクニック

コスト効率

  • Claude 3 Haiku使用: 最も安価なモデルで学習コストを最小化
  • トークン消費: 各エクササイズは小規模なAPI呼び出しに限定
  • Temperature 0: 再現性のある結果で無駄な再試行を防止

制限事項

  • ライセンス: 明示的なライセンスがない(Anthropic公式コンテンツ)
  • APIキー必須: 実践にはAnthropicまたはAWSのアカウントが必要
  • 英語中心: コンテンツは主に英語で提供
  • Claude専用: 他のLLMへの直接的な応用は調整が必要

評価・所感

技術的評価

強み

  • 実践的なカリキュラム: 理論だけでなくハンズオンで学習
  • 段階的な難易度: 初心者から上級者まで対応
  • 即時フィードバック: エクササイズの自動採点
  • 実用的な例: 法務、金融、コーディングなど実務に即した内容
  • ヒントシステム: 学習者が詰まらないよう配慮
  • マルチプラットフォーム: 様々な環境で利用可能

改善の余地

  • ライセンスの明確化: 再利用性に関するガイドラインが不明確
  • 多言語対応: 現状は英語中心
  • オフライン対応: APIキーなしでの学習方法
  • 他LLMへの応用: GPT-4やGeminiなどへの転用ガイド

向いている用途

  • 開発者のLLM入門: プロンプトエンジニアリングの基礎を学ぶ
  • 企業のAI活用: 実務でClaudeを活用したいチーム
  • 教育機関: AIリテラシー教育の教材として
  • プロトタイピング: 新しいAIアプリケーションの検証
  • プロンプト最適化: 既存のプロンプトの改善

向いていない用途

  • 完全な初心者: プログラミング基礎知識が前提
  • オフライン学習: APIアクセスが必須
  • 非Claudeユーザー: 他のLLMへの直接応用は限定的
  • 理論研究: アカデミックな深い分析より実践重視

総評

Anthropicのプロンプトエンジニアリングチュートリアルは、LLMを効果的に活用したい開発者やビジネスユーザーにとって非常に価値の高いリソースです。特に、インタラクティブな学習方式と実践的な例が豊富な点が優れています。

15,000以上のスターを獲得していることからも、コミュニティからの高い評価が伺えます。初心者から上級者まで、段階的にスキルを習得できるよう設計されており、「上位0.1%のLLMウィスパラー」を目指すという目標は、実際に達成可能なものと言えるでしょう。