Bob向けの効果的なプロンプトを書く
効果的なプロンプトを書いてBobのアウトプットを最大化する。
IBM Bobはコーディングとテクノロジーのアシスタントですが、BobはあなたのことをESP(テレパシー)で読むことはできません。 Bobは良い結果を出すためにあなたの指示に頼っています。プロンプト作成の 基本を学ぶことで、Bobとの体験が向上し、時間の節約になり、 求めるものを得られるようになります。
プロンプトとは?
プロンプトとは、欲しいアウトプットを得るためにBobに与える一連の指示です。 プロンプトは質問、リクエスト、またはコマンドになります。「フランスの首都はどこですか?」のように シンプルなものから、「数値のリストを受け取って平均を返すPython関数を書いてください」のように 複雑なものまであります。
ソフトウェア開発の「garbage in, garbage out(ゴミを入れればゴミが出る)」という原則を考えてみてください。 Bobに曖昧または不完全なプロンプトを与えると、曖昧または不完全な 回答が返ってくるかもしれません。
より高品質なプロンプトを書くと、より高品質な回答が得られます。良い プロンプトは明確で具体的であり、Bobがあなたの望むことを理解できるよう 十分なコンテキストを提供します。
プロンプトの構成要素
効果的なプロンプトを書くためには、以下の構成要素を含める必要があります:
- 指示(Instruction): Bobに実行するタスクを指示します。指示は 「このPython関数を要約してください」や「このAPIのSBOMを生成してください」のような 明確なコマンドとして書きます。明確な指示は曖昧さを減らし、 より関連性の高い結果につながります。
- 役割(Role): 回答を生成する際に採用する特定の役割またはペルソナをBobに割り当てます。 例えば、「あなたはPythonの専門知識を持つシニアソフトウェアエンジニアです」と 言うかもしれません。これにより、Bobはその役割の視点に合わせて回答を調整できます。
- コンテキスト(Context): コンテキストは、Bobの回答を形成する追加の背景情報や詳細を提供します。 コンテキストには、状況の説明、トーン、対象者、または組み込みたい重要な情報が含まれる場合があります。 コンテキストはBobがタスクに沿った状態を保つのに役立ちます。
- 例(Example): 例には、望ましいパターン、フォーマット、またはトーンを示す1つ以上の例が含まれます。 例を提供することは、アウトプットが特定のスタイルや構造に従うことを望む場合に特に便利です。 例はBobが良い回答の意味を解釈するのに役立ちます。
- 手がかり(Cues): 手がかりとは、望むレスポンスの種類につながる短いテキストです。 手がかりはプロンプトの最後に配置されることが多く、Bobのアウトプット生成を 正しい方向に誘導します。
プロンプト作成スキルを磨くにつれて、プロンプトをファイルに保存して 再利用したり、チームと共有したりすることができます。
プロンプトのベストプラクティス
以下のベストプラクティスは、Bob向けの効果的なプロンプトを書くのに役立ちます。
- 具体的にする: プロンプトが具体的であればあるほど、Bobはあなたの望むことをより よく理解できます。「Python関数の書き方は?」と聞く代わりに、「数値のリストを 受け取って平均を返すPython関数の書き方は?」と聞きましょう。
- コンテキストを提供する: プロンプトが特定のプロジェクトやコードベースに関するものであれば、 それについてのコンテキストを提供してください。これにより、Bobはあなたの 状況に関連した回答を生成できます。特定のファイルを参照するには、Bobの @ コンテキストメンションを使用してください。
- タスクを分割する: バックログのタスクを細分化するように、 複雑なタスクをより小さく管理しやすいステップに分割します。これにより、 Bobがより正確で焦点を絞った回答を生成できます。
- 例を含める: 新しいAPIを追加する場合は、コードベースの中の よく書かれたAPIを例として確認するようBobに指示します。プロンプトに例を含めて 望むフォーマットやスタイルをBobに示すこともできます。
プロンプトを書く
このセクションでは、Bobへの曖昧なプロンプトを書いてアウトプットを確認します。 次に、ベストプラクティスに基づいてプロンプトを洗練させ、 回答の質を向上させます。
目標は、BobにUTCフォーマットで現在の日付と時刻を出力するPython関数を 生成させることです。関数には適切なドキュメントとエラーハンドリングが必要です。
チャットインターフェースが閉じている場合は、ナビゲーションバーの横にあるBobアイコンをクリックして開くか、 ショートカット Option + Command + B(Mac)または Ctrl + Alt + B(Windows)を使用します。

チャットインターフェースのモードセレクターから Ask を選択します。
以下のプロンプトを入力します:
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"))Bobは関数を生成しましたが、おそらくエラーハンドリングが含まれていないか、 UTCフォーマットになっていません。
新しいチャットを開始してコンテキストウィンドウをクリアします。
次に、プロンプトを洗練させてBobに役割を与え、より具体的な 指示、例、コンテキストを含めます。
-
役割を追加する: Bobが回答を生成する際に採用すべき視点を理解できるように 役割を与えます。例えば、「あなたはPythonの専門知識を持つシニアソフトウェアエンジニアです」。
-
具体的な指示を追加する: 望むことを明確にします。例えば、 「UTCフォーマットで現在の日付と時刻を出力するPython 3関数を書いてください」。
-
コンテキストを追加する: Bobがより良い回答を生成するのに役立つ追加情報を 提供します。例えば、「関数は適切にドキュメント化され、エラーハンドリングを含む必要があります」。
-
例: アウトプットがどのようなものかを示す例を含めます。コードベースに例がある場合は、 Bobの @ コンテキストメンションを使用して参照するか、Real Pythonのような ドキュメントや権威ある外部ソースにリンクすることもできます。
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()Bobの回答は今度はあなたの要件によりよく合致しており、効果的なプロンプトを書くことの 重要性を示しています。
IBM SkillsBuild
IBM SkillsBuildは、AIや機械学習を含む様々な技術分野でスキルを 開発するためのコースとリソースを提供する無料のオンライン学習プラットフォームです。 BobのようなAIアシスタントへの効果的なプロンプトの書き方に関するコースや、 ソフトウェア開発とテクノロジーに関連するその他のトピックを見つけることができます。
優れたプロンプト作成についてより詳しく学ぶには、Craft Precise Prompts for AI Modelsコースを受講してください。
次のステップ
このチュートリアルでは、効果的なプロンプトの構成要素を学び、曖昧なプロンプトを望むアウトプットを確実に生成できるものに洗練させました。
スキルを使用するに進んで、よく書かれたプロンプトをBobが自動的に適用できる再利用可能で反復可能なワークフローに変換しましょう。