0Pricing
Learn AI with Python · レッスン

本番向けLLMアプリのプロンプトエンジニアリング

システムプロンプトの設計、few-shot例、出力形式、リトライロジック、コスト最適化について学習します。

「本番向けLLMアプリのプロンプトエンジニアリング」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

本番環境でのプロンプト設計

実際のアプリでは、プロンプトはコードと同じです。構造化、テスト、信頼性が必要になります。優れたプロンプトエンジニアリングによって、ハルシネーションを減らし、出力形式を徹底し、コストを制御できます。このレッスンでは、本番環境で重要なテクニックを扱います。

System promptの設計

system promptは、モデルの役割、トーン、制約、ルールを定めます。具体的に記述してください。アシスタントが何であるか、何をしなければならないか、何をしてはいけないか、回答の形式を明示します。明確なsystem promptは、モデルの動作を導く最も強力な手段です。

system = (
    "You are a support agent for an e-commerce store. "
    "Answer only questions about orders and shipping. "
    "If asked anything else, politely decline. "
    "Keep replies under 3 sentences."
)

Few-shotの例

Few-shot promptingとは、入力と出力の例をモデルに示してパターンを学習させる方法です。実際のリクエストの前に、user/assistantメッセージを交互に配置します。

messages = [
    {"role": "system", "content": system},
    {"role": "user", "content": "Classify: I love this!"},
    {"role": "assistant", "content": "positive"},
    {"role": "user", "content": "Classify: This broke instantly."},
    {"role": "assistant", "content": "negative"},
    {"role": "user", "content": "Classify: It is okay I guess."}
]

Few-shotが機能する理由

例を示すと、指示だけの場合よりも意図を明確に伝えられます。1語、JSON、ラベルなど、正確な出力形式を固定できるため、分類、抽出、フォーマットのタスクで一貫性が大幅に向上します。

JSON出力の強制

機械で読み取る返信が必要な場合は、response_formatでJSONモードを要求します。{"type": "json_object"}を指定すると、モデルは有効なJSONだけを出力するよう制約されるため、安全に解析できます。

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    response_format={"type": "json_object"}
)
import json
data = json.loads(response.choices[0].message.content)

tiktokenによるトークン数のカウント

コストとコンテキストの上限は、トークン単位で測定されます。tiktokenライブラリを使うとローカルでトークン数をカウントできるため、送信前に予算を見積もれます。pip install tiktokenでインストールできます。

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4o")
tokens = enc.encode("Hello, how are you?")
print(len(tokens))

トークン数のカウントが重要な理由

各モデルにはコンテキストウィンドウ(トークン数の上限)があり、料金はトークン単位で発生します。あらかじめカウントしておけば、履歴を削減したり、大きすぎる入力を拒否したり、リクエストがサーバーを離れる前にコストを予測したりできます。

def cost_estimate(text, price_per_1k=0.005):
    enc = tiktoken.encoding_for_model("gpt-4o")
    n = len(enc.encode(text))
    return n, n / 1000 * price_per_1k

レート制限への対処

本番環境のトラフィックでは、レート制限(HTTP 429)や一時的なエラーが発生します。クラッシュさせるのではなく、指数バックオフを使って再試行してください。tenacityライブラリを使えば、1行のデコレーターで実装できます。

pip install tenacity

from tenacity import retry, wait_exponential, stop_after_attempt

tenacityによる再試行

API呼び出しに@retryを付けます。wait_exponentialで試行間の待機時間を徐々に増やし、stop_after_attemptで試行回数の合計に上限を設定します。これにより、一時的な障害から適切に回復できます。

@retry(wait=wait_exponential(min=1, max=30), stop=stop_after_attempt(5))
def ask(prompt):
    return client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}]
    )

出力用JSON Schemaの定義

JSONモードを強制する場合は、キーを予測可能にするため、プロンプト内で求める正確な構造を必ず説明してください。スキーマを通常のテキストで明記し、JSONモードを組み合わせることで、毎回解析・検証可能な有効な結果を得られます。

system = (
    "Return ONLY JSON with this shape: "
    "{\"sentiment\": \"positive|negative|neutral\", "
    "\"confidence\": number between 0 and 1}"
)

すべてを組み合わせる

本番環境でのプロンプトパイプラインは、厳格なsystem promptを設計し、few-shot examplesを追加し、必要に応じてJSON出力を強制し、コストとコンテキストを管理するためにトークン数をカウントし、呼び出しをretryロジックでラップします。これらを組み合わせることで、LLM機能の信頼性が高まります。

理解度チェック

本番環境でのプロンプト設計についての理解度を確認しましょう。

振り返り:本番環境向けプロンプト作成

厳密なシステムプロンプトの作成方法、Few-shot例による挙動の制御、そしてresponse_formatのJSONモードによる構造化された応答の保証について学びました。tiktokenでトークン数を数えてコンテキストとコストを管理し、レート制限に対するtenacityのリトライで堅牢性も高めました。

よくある質問

「本番向けLLMアプリのプロンプトエンジニアリング」レッスンは無料ですか?

はい。「本番向けLLMアプリのプロンプトエンジニアリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「本番向けLLMアプリのプロンプトエンジニアリング」で何を学びますか?

システムプロンプトの設計、few-shot例、出力形式、リトライロジック、コスト最適化について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「本番向けLLMアプリのプロンプトエンジニアリング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. OpenAI API:chat.completionsとストリーミング
  2. Pythonで使うAnthropic Claude API
  3. LLMでのFunction Callingとツール利用
  4. 本番向けLLMアプリのプロンプトエンジニアリング
← Learn AI with Pythonに戻る