Bob Shell 向けの効果的なプロンプトを書く
役割、コンテキスト、例を追加して Bob Shell 向けの効果的なプロンプトを作成し、曖昧なリクエストをエラー処理付きの文書化された Python コードに洗練させます。
IBM Bob Shell は、プロンプトでタスク、役割、コンテキスト、例を指定したときにより正確なコードを生成します。 このチュートリアルでは、曖昧なリクエストを構造化されたプロンプトに書き直し、 その結果を比較します。
前提条件
Bob Shell がインストールされていることを確認するには、ターミナルを開いてバージョンを確認します:
bob --versionプロンプトとは?
プロンプトとは、欲しいアウトプットを得るために Bob に与える質問、リクエスト、またはコマンドです。曖昧なプロンプトは曖昧な回答を生み出します。良いプロンプトは明確で具体的であり、Bob があなたの望むことを理解できるよう十分なコンテキストを提供します。
プロンプトの構成要素
効果的なプロンプトは以下の構成要素を組み合わせます:
| 構成要素 | 目的 | 例 |
|---|---|---|
| 指示 | Bob に実行するタスクを指示します。明確な指示は曖昧さを減らします。 | 「この API のソフトウェア部品表(SBOM)を生成してください。」 |
| 役割 | Bob がその視点に合わせて回答を調整できるようペルソナを割り当てます。 | 「あなたは Python の専門知識を持つシニアソフトウェアエンジニアです。」 |
| コンテキスト | 状況、対象者、トーン、制約などの背景情報を追加します。 | 「この関数は本番サービスで実行されるため、エラー処理を含める必要があります。」 |
| 例 | Bob に従ってほしいパターン、フォーマット、またはスタイルを示します。 | 「@src/api/users.py の構造に従ってください。」 |
| 手がかり | 望むレスポンスへと誘導します。通常はプロンプトの最後に配置します。 | 「def で始まる関数のみを返してください。」 |
プロンプトはカスタムスラッシュコマンドとして保存し、再利用したりチームと共有したりできます。
効果的なプロンプトを作成するには?
以下のベストプラクティスは、Bob 向けの効果的なプロンプトを書くのに役立ちます。
- 具体的にする: プロンプトが具体的であればあるほど、Bob はあなたの望むことをよりよく理解できます。「Python 関数の書き方は?」と聞く代わりに、「数値のリストを受け取って平均を返す Python 関数の書き方は?」と聞きましょう。
- コンテキストを提供する: プロンプトが特定のプロジェクトやコードベースに関するものであれば、それについてのコンテキストを提供してください。これにより、Bob はあなたの状況に関連した回答を生成できます。Bob に特定のファイルを指定するには、
@src/main.pyのように@参照を使用します。 - タスクを分割する: バックログのタスクを細分化するように、複雑なタスクをより小さく管理しやすいステップに分割します。これにより、Bob がより正確で焦点を絞った回答を生成できます。
- 例を含める: 新しい API を追加する場合は、コードベースの中のよく書かれた API を例として確認するよう Bob に指示します。プロンプトに例を含めて望むフォーマットやスタイルを Bob に示すこともできます。
曖昧なプロンプトを洗練させる
このセクションでは、Bob への曖昧なプロンプトを書いてアウトプットを確認します。次に、ベストプラクティスに基づいてプロンプトを洗練させ、回答の質を向上させます。
目標は、Bob に UTC フォーマットで現在の日付と時刻を出力する Python 関数を生成させることです。関数には適切なドキュメントとエラー処理が必要です。
ターミナルを開き、Agent モードで対話型セッションを開始します:
bob chat --mode 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 ではなくローカル時刻を出力します。
/clear と入力して会話履歴をリセットし、最初の回答が次の回答に影響しないようにします:
/clearプロンプトの構成要素を使ってプロンプトを洗練させます:
- 役割: "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 が自動的に適用できる再利用可能で反復可能なワークフローに変換しましょう。