チュートリアル

Bob向けの効果的なプロンプトを書く

役割、コンテキスト、例を追加してIBM Bob向けの効果的なプロンプトを作成し、曖昧なリクエストをエラー処理付きの文書化されたPythonコードに洗練させます。

IBM Bobは、プロンプトでタスク、役割、コンテキスト、例を指定したときにより正確なコードを生成します。 このチュートリアルでは、曖昧なリクエストを構造化されたプロンプトに書き直し、 その結果を比較します。

前提条件

このチュートリアルを完了するには、以下が必要です:

  • Bob IDEがインストールされ、サインインしていること。
  • 必須ではありませんが、Bobのインターフェースと機能に慣れるためにクイックスタートチュートリアルを一通り行うことを検討してください。

プロンプトとは?

プロンプトとは、欲しいアウトプットを得るためにBobに与える質問、リクエスト、またはコマンドです。曖昧なプロンプトは曖昧な回答を生み出します。良いプロンプトは明確で具体的であり、Bobがあなたの望むことを理解できるよう十分なコンテキストを提供します。

プロンプトの構成要素

効果的なプロンプトは以下の構成要素を組み合わせます:

構成要素目的例
指示Bobに実行するタスクを指示します。明確な指示は曖昧さを減らします。「このAPIのソフトウェア部品表(SBOM)を生成してください。」
役割Bobがその視点に合わせて回答を調整できるようペルソナを割り当てます。「あなたはPythonの専門知識を持つシニアソフトウェアエンジニアです。」
コンテキスト状況、対象者、トーン、制約などの背景情報を追加します。「この関数は本番サービスで実行されるため、エラー処理を含める必要があります。」
例Bobに従ってほしいパターン、フォーマット、またはスタイルを示します。「@src/api/users.pyの構造に従ってください。」
手がかり望むレスポンスへと誘導します。通常はプロンプトの最後に配置します。「defで始まる関数のみを返してください。」

プロンプトはカスタムスラッシュコマンドとして保存し、再利用したりチームと共有したりできます。

効果的なプロンプトを作成するには?

以下のベストプラクティスは、Bob向けの効果的なプロンプトを書くのに役立ちます。

  • 具体的にする: プロンプトが具体的であればあるほど、Bobはあなたの望むことをよりよく理解できます。「Python関数の書き方は?」と聞く代わりに、「数値のリストを受け取って平均を返すPython関数の書き方は?」と聞きましょう。
  • コンテキストを提供する: プロンプトが特定のプロジェクトやコードベースに関するものであれば、それについてのコンテキストを提供してください。これにより、Bobはあなたの状況に関連した回答を生成できます。特定のファイルを参照するには、Bobの@ コンテキストメンションを使用してください。
  • タスクを分割する: バックログのタスクを細分化するように、複雑なタスクをより小さく管理しやすいステップに分割します。これにより、Bobがより正確で焦点を絞った回答を生成できます。
  • 例を含める: 新しいAPIを追加する場合は、コードベースの中のよく書かれたAPIを例として確認するようBobに指示します。プロンプトに例を含めて望むフォーマットやスタイルをBobに示すこともできます。

曖昧なプロンプトを洗練させる

このセクションでは、Bobへの曖昧なプロンプトを書いてアウトプットを確認します。次に、ベストプラクティスに基づいてプロンプトを洗練させ、回答の質を向上させます。

目標は、BobにUTCフォーマットで現在の日付と時刻を出力するPython関数を生成させることです。関数には適切なドキュメントとエラー処理が必要です。

チャットインターフェースが閉じている場合は、ナビゲーションバーの横にあるBobアイコンをクリックして開くか、ショートカット Option + Command + B(Mac)または Ctrl + Alt + B(Windows)を使用します。

IBM Bob IDEで開いたBobチャットパネル

チャットインターフェースのモードセレクターから Agent を選択します。詳細については、Agent モードを参照してください。

以下のプロンプトを入力します:

Write a Python function that prints the date and time.

Bobは回答を生成しますが、すべての要件を満たしていない可能性があります。

from datetime import datetime

def print_datetime():
    now = datetime.now()
    print(now.strftime("%Y-%m-%d %H:%M:%S"))

この関数にはエラー処理が含まれておらず、UTCではなくローカル時刻を出力します。

新しいチャットを開始してコンテキストウィンドウをクリアします。

プロンプトの構成要素を使ってプロンプトを洗練させます:

  • 役割: "You are a senior software engineer with expertise in Python 3."
  • 指示: "Write a Python 3 function that prints the current date and time in UTC format."
  • コンテキスト: "The function should be well documented and include error handling."
  • 例: Real Pythonの例外処理のベストプラクティスなどの信頼できる情報源をBobに指定します。

洗練させたプロンプトを入力します:

You are a senior software engineer with expertise in Python 3. 
Write a Python 3 function that prints the current date and time in UTC format. 
The function should be well documented and include error handling, 
modeled after https://realpython.com/ref/best-practices/exception-handling/.
"""
utc_datetime.py — Utility for printing the current UTC date and time.
"""

from datetime import datetime, timezone

def print_utc_datetime() -> None:
    """Print the current date and time in UTC (ISO 8601 format).

    Retrieves the current moment from the system clock, attaches UTC timezone
    info, formats it as an ISO 8601 string, and writes it to stdout.

    Returns:
        None

    Raises:
        OSError: If the system clock cannot be read (e.g., hardware failure or
            OS-level permission restrictions).
        ValueError: If datetime formatting unexpectedly fails (e.g., year out
            of the supported range).

    Example:
        >>> print_utc_datetime()
        Current UTC date and time: 2025-07-15T13:42:00.123456+00:00
    """
    try:
        now_utc: datetime = datetime.now(tz=timezone.utc)
    except OSError as exc:
        # System clock is unavailable or inaccessible.
        raise OSError("Failed to read the system clock.") from exc

    try:
        formatted: str = now_utc.isoformat()
    except ValueError as exc:
        # Extremely unlikely, but guard against out-of-range datetime values.
        raise ValueError(
            f"Failed to format the datetime object: {now_utc!r}"
        ) from exc

    print(f"Current UTC date and time: {formatted}")


if __name__ == "__main__":
    print_utc_datetime()

洗練させたプロンプトにより、UTCを使用し、docstringを含み、例外を処理する関数が生成されます。

IBM SkillsBuild

IBM SkillsBuildは、BobのようなAIアシスタント向けの効果的なプロンプトの書き方に関するコースを提供する無料のオンライン学習プラットフォームです。

優れたプロンプト作成についてより詳しく学ぶには、Craft Precise Prompts for AI Modelsコースを受講してください。

次のステップ

このチュートリアルでは、効果的なプロンプトの構成要素を学び、曖昧なプロンプトを望むアウトプットを確実に生成できるものに洗練させました。

スキルを使用するに進んで、よく書かれたプロンプトをBobが自動的に適用できる再利用可能で反復可能なワークフローに変換しましょう。

このトピックはいかがですか?