逐次変換チェーン
下書き → レビュー → 推敲のチェーンなど、複数段階で洗練する方法を学びます。
「逐次変換チェーン」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。
変換チェーン
変換チェーンとは、特化した一連のステップを通じて、コンテンツをある形式から別の形式へ段階的に変換するものです。各ステップが前のステップの出力を変換し、コンテンツを徐々に洗練または拡充していきます。
特に有用な変換チェーンのパターンは、次の3つです:
- 下書き → レビュー → 推敲: コンテンツの作成と改善
- ブレインストーミング → 絞り込み → 詳細化: アイデアの生成と発展
- 抽出 → 分類 → 振り分け: データ処理と意思決定
下書き → レビュー → 推敲
最も一般的なコンテンツ作成チェーンです。各ステップには明確に異なる役割があります:
- 下書き: 完成度よりも速さを優先し、素材となるコンテンツをすばやく生成します
- レビュー: 正確性、トーン、完全性など、具体的な基準に照らして下書きを批評します
- 推敲: レビュー結果を反映し、最終出力を作成します
これらを別々のステップに分けると、1回の指示でモデルに下書きと推敲をさせるよりも、良い結果が得られます。
下書き → レビュー → 推敲:Pythonでの実装
下書き → レビュー → 推敲チェーンの完全な実装は次のとおりです:
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def call(prompt):
r = client.messages.create(
model='claude-opus-4-5', max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
def draft_review_polish(topic, audience, tone):
# Step 1: Draft
draft = call(f'Write a 200-word article about: {topic}. Audience: {audience}.')
# Step 2: Review — produces critique, not final text
review = call(f'Review this article for tone ({tone}), accuracy, and clarity.\nList specific improvements needed.\n\nArticle:\n{draft}')
# Step 3: Polish — applies review findings
final = call(f'Rewrite this article applying all the review feedback.\n\nOriginal:\n{draft}\n\nReview feedback:\n{review}')
return {'draft': draft, 'review': review, 'final': final}
result = draft_review_polish('prompt engineering', 'software engineers', 'technical but approachable')
print(result['final'][:300])ブレインストーミング → 絞り込み → 詳細化
アイデアを発展させるチェーンです。まず幅広く生成し、次に賢く絞り込み、最後に深く発展させます。
- ブレインストーミング: 判断を加えず、質より量を重視して多くのアイデアを生成します
- 絞り込み: 選定基準を適用し、優れたアイデアを特定します
- 詳細化: 選んだアイデアを詳細な提案へと発展させます
このチェーンを使うと、少数のアイデアから始めて、それらに固定されてしまうアンカリングバイアスを避けられます。
ブレインストーミング → 絞り込み → 詳細化:Pythonでの実装
JSONの受け渡しを含む、ブレインストーミング → 絞り込み → 詳細化チェーンの完全な実装は次のとおりです:
import json
def brainstorm_filter_expand(challenge, criteria, n_final=3):
# Step 1: Brainstorm — generate many ideas
raw_ideas = call(
f'Generate 10 creative ideas for this challenge: {challenge}\n'
'Return JSON: {"ideas": ["string"]}'
)
ideas = json.loads(raw_ideas)['ideas']
# Step 2: Filter — apply criteria
ideas_formatted = '\n'.join(f'{i+1}. {idea}' for i, idea in enumerate(ideas))
filtered_raw = call(
f'Select the {n_final} best ideas based on these criteria: {criteria}\n'
f'Ideas:\n{ideas_formatted}\n'
f'Return JSON: {{"selected": ["string"]}}'
)
selected = json.loads(filtered_raw)['selected']
# Step 3: Expand — develop each selected idea
expansions = {}
for idea in selected:
expansions[idea] = call(f'Write a 100-word expansion of this idea, including implementation steps: {idea}')
return expansions
result = brainstorm_filter_expand('reduce app churn', 'feasible in 30 days, measurable impact', n_final=2)
print(list(result.keys()))抽出 → 分類 → 振り分け
データ処理チェーンです。構造化データを抽出し、分類してから、適切なハンドラーへ振り分けます。
- 抽出: 非構造化テキストから構造化された情報を取り出します
- 分類: カテゴリ、ラベル、または優先度を割り当てます
- 振り分け: 分類結果に基づいて異なる処理を実行します
このパターンは、インテリジェントなトリアージシステム、コンテンツモデレーション、自動化された顧客サポートの振り分けを支えています。
抽出 → 分類 → 振り分け:Pythonでの実装
抽出 → 分類 → 振り分けチェーンの完全な実装は次のとおりです:
import json
def extract_classify_route(ticket_text):
# Step 1: Extract structured data
extracted = json.loads(call(
f'Extract from this support ticket: {{"issue_summary": str, "product_area": str, "user_emotion": str}}\n\n{ticket_text}'
))
# Step 2: Classify priority and department
classified = json.loads(call(
f'Classify this ticket.\nIssue: {extracted["issue_summary"]}\nEmotion: {extracted["user_emotion"]}\n'
'Return JSON: {"priority": "urgent|high|medium|low", "department": "billing|technical|general"}'
))
# Step 3: Route — generate department-specific response
dept = classified['department']
priority = classified['priority']
route_prompts = {
'billing': f'You are a billing specialist. Priority: {priority}. Respond to: {extracted["issue_summary"]}',
'technical': f'You are a senior engineer. Priority: {priority}. Resolve: {extracted["issue_summary"]}',
'general': f'You are customer support. Priority: {priority}. Help with: {extracted["issue_summary"]}'
}
response = call(route_prompts[dept])
return {'extracted': extracted, 'classified': classified, 'response': response}
result = extract_classify_route('My payment was charged twice and I am furious!')
print(result['classified'])適切なチェーンパターンを選択する
用途に適した変換チェーンのパターンを選びます:
- 下書き → レビュー → 推敲: メール、記事、ドキュメント、コードなど、あらゆるコンテンツ作成
- ブレインストーミング → 絞り込み → 詳細化: 戦略立案、アイデア創出、製品計画、コンテンツカレンダー
- 抽出 → 分類 → 振り分け: サポートチケット、メール、コンテンツモデレーション、データ処理
これらのパターンは組み合わせることもできます。たとえば、抽出 → 分類 → 解決策をブレインストーミング → 絞り込み → 回答を下書き、のように構成できます。
パターンを組み合わせる
実際のパイプラインでは、複数のパターンを組み合わせて、より長いチェーンを構成することがよくあります:
def full_content_pipeline(raw_research):
# Pattern 1: Extract → Classify key insights
insights = json.loads(call(
f'Extract top 5 insights. Return JSON: {{"insights": [str]}}\n\n{raw_research}'
))
# Pattern 2: Brainstorm → Filter article angles
angles_raw = json.loads(call(
f'Brainstorm 8 article angles based on: {insights["insights"]}\nReturn JSON: {{"angles": [str]}}'
))
best_angle = json.loads(call(
f'Select the most compelling angle for a developer audience.\nReturn JSON: {{"angle": str}}\n\nAngles: {angles_raw["angles"]}'
))
# Pattern 3: Draft → Review → Polish
draft = call(f'Write a 300-word technical article on: {best_angle["angle"]}')
review = call(f'Review for technical accuracy and developer relevance:\n{draft}')
final = call(f'Polish the article applying this feedback:\n\nDraft:\n{draft}\n\nFeedback:\n{review}')
return final
print('Combined pipeline defined.')中間出力をログに記録する
変換チェーンでは、すべての中間出力をログに記録します。これはデバッグに不可欠です。最終出力が間違っていた場合、どのステップが不正な出力を生成したのかを把握する必要があるためです。
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('chain')
def logged_call(step_name, prompt, **kwargs):
logger.info(f'[{step_name}] INPUT: {prompt[:100]}...')
result = call(prompt)
logger.info(f'[{step_name}] OUTPUT: {result[:100]}...')
return result
def draft_review_polish_logged(topic):
draft = logged_call('DRAFT', f'Write 200 words about: {topic}')
review = logged_call('REVIEW', f'Review for clarity:\n{draft}')
final = logged_call('POLISH', f'Rewrite applying feedback.\nDraft:\n{draft}\nFeedback:\n{review}')
return final
print('Logging integrated into chain.')チェーンの品質を測定する
チェーンが価値を生み出していることを検証するため、各ステップによる改善効果を測定します:
def measure_chain_improvement(topic):
# Baseline: single prompt
baseline = call(f'Write and polish a 200-word article about {topic} in one step.')
# Chain: Draft -> Review -> Polish
draft = call(f'Write a 200-word draft about {topic}.')
review = call(f'List 3 specific improvements needed:\n{draft}')
chained = call(f'Rewrite applying these improvements:\nDraft:\n{draft}\nImprovements:\n{review}')
# Have the model compare quality
comparison = call(
f'Which version is higher quality? Rate each 1-10 for clarity and depth.\n'
f'Version A (single prompt):\n{baseline}\n\nVersion B (chain):\n{chained}\n'
'Return JSON: {"version_a_score": int, "version_b_score": int, "winner": "A|B", "reason": str}'
)
return comparison
print('Quality measurement pipeline defined.')クイックチェック
受信したサポートチケットを処理し、正しいチームへ振り分けるには、どの変換チェーンパターンが最も適していますか?
変換チェーン — 重要ポイント
逐次的な変換チェーンは、特化したステップを通じてコンテンツを段階的に洗練します:
- 下書き → レビュー → 推敲: コンテンツ作成に最適です。生成、批評、改善を行います
- ブレインストーミング → 絞り込み → 詳細化: アイデア創出に最適です。幅広く生成し、慎重に選び、深く発展させます
- 抽出 → 分類 → 振り分け: データ処理に最適です。構造を抽出し、ラベルを割り当て、ハンドラーへ振り分けます
- 複雑な用途では、パターンを組み合わせて長いパイプラインを構成できます
- 効果的にデバッグできるよう、すべてのステップで中間出力をログに記録します
- チェーンの価値を検証するため、各ステップによる改善効果を測定します
よくある質問
「逐次変換チェーン」レッスンは無料ですか?
はい。「逐次変換チェーン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。
「逐次変換チェーン」で何を学びますか?
下書き → レビュー → 推敲のチェーンなど、複数段階で洗練する方法を学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Prompt Engineeringを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「逐次変換チェーン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Prompt Engineeringレッスンでコードを書いて実行できますか?
はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。