opik-optimizer について
opik-optimizerは、Opik Optimizerのワークフローを設計、実行、解釈するスキルです。データセットとメトリクスの整合性確認、実行条件の指定、再現可能な比較を通じて、プロンプト、ツール、モデルパラメーターの最適化を支援します。
主な機能
- 01プロンプトとパラメーター向け最適化手法の選択
- 02データセット、メトリクス、プレースホルダーの設定
- 03ツールとプロンプトセグメントの最適化
- 04スレッド数、サンプル数、試行回数の指定
- 05結果スコアと履歴の比較
活用シーン
- 01評価指標に基づくプロンプト調整
- 02MCPまたは関数呼び出し用ツール定義の最適化
- 03モデル呼び出しパラメーターの調整
- 04結果の評価と次の実験計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vincentkoc/ dotskills --skill opik-optimizerインストール後、Claude Code で/opik-optimizerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/algorithms.mddatasets_and_setup.mdexample_patterns.mdprompt_agent_workflow.md詳細
Opik Optimizer
目的
プロンプト、ツール、モデルパラメーター向けの Opik Optimizer ワークフローを設計、実行、解釈します。データセットとメトリクスの一貫した連携により、再現可能な評価を実現します。
使用する場面
次のような依頼には、このスキルを使用します。
- プロンプト/エージェントの最適化に向けた Opik Optimizer アルゴリズムの選定と設定。
ChatPromptベースの最適化実行や、カスタムメトリクス関数の作成。- ツール(関数呼び出しまたは MCP)、選択したプロンプトのロール、またはプロンプトのセグメントを使った最適化。
optimize_parameterによる LLM 呼び出しパラメーターの調整。- オプティマイザーの出力比較と、
OptimizationResultの解釈。
ワークフロー
- 最適化の目標に応じて、最適化戦略(
MetaPromptOptimizer、FewShotBayesianOptimizer、HRPOなど)を選択します。 - プロンプト、データセット、メトリクスの連携を構築し、プレースホルダーとフィールドの対応を検証します。
- 明示的な制御値(
n_threads、n_samples、max_trials、seed)を指定して、プロンプト、ツール、またはパラメーターの最適化を実行します。 OptimizationResultを確認し、初期ベースラインとのスコア差を比較します。- 推奨事項、リスク、次に実施する実験をまとめます。
入力
- 最適化の対象(プロンプト/ツール/パラメーター)と成功指標。
- データセットのソースと想定されるスキーマフィールド。
- モデル/プロバイダーの制約と実行時の制限。
- 任意のスコープ制約(
optimize_promptsのセグメント、ツールのフィールド、プロジェクト名)。
出力
- オプティマイザーの実行設定とその根拠。
- 結果の解釈(
score、initial_score、履歴の推移)。 - 推奨する次の変更と、フォローアップ実験の計画。
コードを実装する前に、このスキルのリファレンスファイルを確認してください。
references/algorithms.mdreferences/prompt_agent_workflow.mdreferences/example_patterns.md
Opik Optimizer クイックスタート
- インストールしてインポートします。
pip install opik-optimizer
from opik_optimizer import ChatPrompt, MetaPromptOptimizer, HRPO, FewShotBayesianOptimizer
from opik_optimizer import datasets
- プロンプトとメトリクスを作成します。
from opik.evaluation.metrics import LevenshteinRatio
prompt = ChatPrompt(
system="You are a concise answerer.",
user="{question}",
)
def metric(dataset_item: dict, output: str) -> float:
return LevenshteinRatio().score(
reference=dataset_item["answer"],
output=output,
).value
- データセットを読み込み、実行します。
dataset = datasets.hotpot(count=30)
result = MetaPromptOptimizer(model="openai/gpt-5-nano").optimize_prompt(
prompt=prompt,
dataset=dataset,
metric=metric,
n_samples=20,
max_trials=10,
)
result.display()
従うべきコアワークフロー
- オプティマイザークラスを選択します。
- 少数ショット例とベイズ選択:
FewShotBayesianOptimizer - LLM によるメタ推論:
MetaPromptOptimizer - 遺伝的アルゴリズムと MOO/LLM による交叉:
EvolutionaryOptimizer - 階層的な内省診断:
HierarchicalReflectiveOptimizer(HRPO) - パレートベースの遺伝的戦略:
GepaOptimizer - パラメーター調整のみ:
ParameterOptimizer
- 少数ショット例とベイズ選択:
- 単一の
ChatPrompt(または複数プロンプトの場合はプロンプトの辞書)を定義します。 opik_optimizer.datasetsのデータセットを指定します。(dataset_item, llm_output) -> floatのシグネチャを持つメトリクスの呼び出し可能オブジェクト(またはScoreResult/ScoreResultのリスト)を指定します。- オプティマイザーの制御値(
n_threads、n_samples、max_trials、seed など)を設定します。 - 次のいずれかを実行します。
- プロンプトやシステムの動作を変更するには、
optimize_prompt(...)を使用します。 - モデル呼び出しのハイパーパラメーターを最適化するには、
optimize_parameter(...)を使用します。
- プロンプトやシステムの動作を変更するには、
OptimizationResult(score、initial_score、history、optimization_id、get_optimized_parameters)を確認します。
実行時に守るべき重要事項
- 組織レベルのオブザーバビリティを使用する場合は、Opik のトラッキングで
project_nameを明示的に指定してください。 - プロンプト内のプレースホルダーとデータセットのフィールド(例:
{question})を一致させてください。 - 対象範囲を限定する場合は、
optimize_prompts="system"または"user"から始めてください。 MetaPrompt/reasoning呼び出しのmodel名が、ご利用のアカウントで使用できるプロバイダーに対応していることを確認してください。- 空でないコンテンツセグメントのみを保持して、マルチモーダル入力のペイロードを検証してください。
- 小規模なデータセットでは、
n_samplesとn_samples_strategyを慎重に設定してください。割り当てが過剰な場合は、自動的に全データセットへフォールバックします。
ツールとセグメントベースの制御
- ツールは、プロンプトの表現を変更するだけでなく、MCP/関数スキーマのフィールドを使って最適化できます。
- テキストを細かく更新するには、
optimize_promptsの値とprompt_segmentsのヘルパー関数を使用します。extract_prompt_segments(ChatPrompt)を使って、安定したセグメント ID を確認します。apply_segment_updates(ChatPrompt, updates)を使って、決定的な編集を適用します。
- ツールの最適化は、プロンプトの最適化とは異なります。
実行可能な例は、上流の Opik リポジトリにあります。
ローカルで実行可能なスクリプトが必要な場合は、上流の例を scripts/ フォルダーにベンダーとして取り込み、参照先が 1 階層の深さに収まるようにしてください。
よくある間違い
- 空のデータセットや、プレースホルダー名が一致しないデータセットを渡す。
- 非推奨のコンストラクター引数
num_threadsとn_threadsを混在させる。 - ツールの最適化が、エージェントの関数呼び出し最適化と同じだと考える。
ParameterOptimizer.optimize_promptを実行する(例外が発生するため、使用しないでください)。
次のアクション
- 動作の詳細とクラスごとのパラメーター表については、
references/algorithms.mdを参照してください。 optimize_promptの正確なシグネチャ、プロンプト、ツールの制約、結果の使用方法については、references/prompt_agent_workflow.mdを参照してください。- パターンの例とソースに基づくワークフローについては、
references/example_patterns.mdを参照してください。
フロー
stateDiagram-v2
[*] --> SelectObjective
SelectObjective --> ConfigurePromptOrTools: prompt, agent, or tool objective
SelectObjective --> ConfigureParameters: parameter objective
ConfigurePromptOrTools --> ValidateDatasetAndControls
ConfigureParameters --> ValidateDatasetAndControls
ValidateDatasetAndControls --> ReportBlocked: fields, metric, or limits invalid
ValidateDatasetAndControls --> OptimizePrompt: prompt or tool strategy
ValidateDatasetAndControls --> OptimizeParameter: ParameterOptimizer
OptimizePrompt --> CompareBaseline
OptimizeParameter --> CompareBaseline
OptimizePrompt --> ReportBlocked: run fails
OptimizeParameter --> ReportBlocked: run fails
CompareBaseline --> ReportRecommendations
ReportRecommendations --> [*]
ReportBlocked --> [*]
コメント
Markdown 対応