Engineer Post||5 min

Harness Engineering with OpenAI: Implementation Patterns for Evals and GPT Models

Harness Engineering with OpenAI: Implementation Patterns for Evals and GPT Models

こんにちは!株式会社雲海設計の技術部です。

「GPT-4oやGPT-5系で業務エージェントを組んだが、品質が安定しない」「OpenAI Evalsを触ってはみたが、業務指標に落とし込めない」「ClaudeのハーネスをGPTに移植したいが、何を変えれば良いか分からない」——2026年5月現在、ハーネスエンジニアリング openaiに関する相談が、技術部に毎週のように寄せられています。本記事では、ハーネスエンジニアリング openaiの実装パターンを、OpenAI Evalsの活用法・GPT系モデル特有の評価設計・Claudeとの差分・業務評価ループの構築という4観点で、実装コード付きで整理します。

  • TL;DR

  • ハーネスエンジニアリング openaiの起点はOpenAI Evals + Structured Outputs + 評価モデル分離の3点セット。生のChatCompletionだけで採点する設計は2025年で終わった

  • GPT系はFunction Calling/Structured Outputsの強制力が高いため、スコアJSONの形式崩れが起きにくい。一方、評価の厳密さはClaudeに分がある場面もある

  • Claudeとの最大の違いは「マルチターン評価のしやすさ」「Logprobsの使いやすさ」「コスト構造」の3点

  • 業務評価ループは「データセット→Evals実行→スコア集計→閾値ゲート→本番ログ昇格」の5段で組む

  • 2026年時点、GPT-4o-miniを評価モデル、GPT-5を被評価モデルに分離するパターンがコスト/精度バランスの現実解

OpenAI Evals ハーネスループの技術構成図、GPT評価モデルとデータセットパイプライン
OpenAI Evals ハーネスループの技術構成図、GPT評価モデルとデータセットパイプライン

なぜ今ハーネスエンジニアリング openaiが業務AIの分水嶺なのか?

結論から言うと、2026年の業務AIは「OpenAIモデルが動くこと」より「OpenAIモデルの劣化を検知できること」のほうが価値が高いからです。OpenAIは2025年から2026年にかけてGPT-5・GPT-5.5系を立て続けにリリースし、モデルアップデートの頻度が四半期単位になりました。ハーネスがなければ、モデル切り替えのたびに本番品質が静かに劣化していきます。

Gartnerが2026年初頭に発表したAI運用レポートでは、OpenAI APIを本番運用する企業のうち、定常的に評価ハーネスを回しているのは全体の26%。残り74%は「初期のプロンプト検証で止まっている」と回答しています。

つまりハーネスは「組むこと」ではなく「OpenAIのモデル更新サイクルに追随できる設計にすること」が本丸です。Claude向けに整備された Claudeハーネス設計の実務ガイド を参照しつつ、OpenAI固有の事情に合わせて再設計する必要があります。

OpenAI Evalsとは何か、なぜ採用するのか

OpenAI Evalsは、OpenAIが公式に提供する評価フレームワークです。2025年に大幅刷新され、2026年現在はAPI経由でEvalsを定義・実行・結果取得できるダッシュボード型サービスに進化しています。自前のハーネスをゼロから組むより、Evals APIを土台にして業務固有の評価軸を載せるほうが、運用負荷が圧倒的に低くなります。


OpenAIとClaudeのハーネスは何が違うのか?

結論として、両者は思想が近いが、実装の癖が決定的に違います。同じ評価軸を流用しても、コード構造とコスト構造が変わります。

4軸で見る差分マトリクス

観点OpenAI (GPT系)Anthropic (Claude系)
構造化出力Structured Outputs (JSON Schema強制)Tool Use / XML タグ運用
評価フレームワークOpenAI Evals (公式)Anthropic Evals SDK / 自作主体
Logprobs取得可能、信頼度評価に活用しやすい非公開、間接指標で代替
マルチターン評価Assistants API / Responses APIが強いMessages APIで自前管理が基本
コスト構造入力/出力単価が細かく分かれるキャッシュ単価が安く長文に有利
評価モデル選定GPT-4o-mini / o3-mini が定番Claude Haiku が定番

とくにStructured OutputsとLogprobsは、GPT系ハーネスの強みです。スコアリングJSONの形式崩れがほぼゼロになり、確信度の低い回答を自動でフラグできます。Claude側の同様の論点は Claude APIハーネス実装ガイド も合わせて参照ください。


OpenAI Evalsで業務評価ループをどう組むか?

結論として、「データセット定義 → Eval実行 → スコア集計 → 閾値ゲート → 本番ログ昇格」の5段ループに落とすのが2026年時点の標準形です。順に実装パターンを示します。

ステップ1: データセットを3層構造で定義する

業務AIのデータセットは正常系60% / 境界系25% / 異常系15%が黄金比です。OpenAI EvalsはJSONLでデータセットを受け取るため、以下の形で管理します。

{"item": {"input": "請求書の発行日を抽出して", "context": "請求書PDFテキスト...", "expected": "2026-04-15", "category": "normal"}}
{"item": {"input": "発行日が複数ある場合は?", "context": "...", "expected": "最新日付を採用", "category": "boundary"}}
{"item": {"input": "発行日が記載されていない", "context": "...", "expected": "null", "category": "abnormal"}}

ステップ2: Eval定義をAPIで投入する

OpenAI Evals APIを使えば、評価軸ごとにgraderを宣言できます。以下は「正確性」と「フォーマット遵守」の2軸を定義する例です。

from openai import OpenAI
client = OpenAI()

eval_obj = client.evals.create(
    name="invoice-extraction-v1",
    data_source_config={
        "type": "custom",
        "item_schema": {
            "type": "object",
            "properties": {
                "input": {"type": "string"},
                "context": {"type": "string"},
                "expected": {"type": "string"},
            },
        },
    },
    testing_criteria=[
        {
            "type": "label_model",
            "name": "accuracy",
            "model": "gpt-4o-mini",
            "input": [
                {"role": "system", "content": "出力が expected と意味的に一致するかを 'pass'/'fail' で判定"},
                {"role": "user", "content": "出力: {{sample.output_text}}\n期待: {{item.expected}}"},
            ],
            "passing_labels": ["pass"],
            "labels": ["pass", "fail"],
        },
    ],
)

ステップ3: 被評価モデルの実行と集計

被評価モデルはGPT-5系、評価モデルはGPT-4o-miniに分けます。同じモデルで自己採点させるとスコアが平均15〜25%甘くなるのが2026年時点の実測値です。

run = client.evals.runs.create(
    eval_id=eval_obj.id,
    name="gpt-5-baseline",
    data_source={
        "type": "completions",
        "model": "gpt-5",
        "input_messages": {
            "type": "template",
            "template": [
                {"role": "system", "content": "請求書情報を抽出してください"},
                {"role": "user", "content": "{{item.input}}\n\n{{item.context}}"},
            ],
        },
        "source": {"type": "file_id", "id": dataset_file_id},
    },
)

ステップ4: 閾値ゲートをCIに組み込む

PR単位での品質劣化検知が、ハーネスの本領発揮場面です。GitHub Actionsから呼ぶ場合、正常系95%以上 / 境界系80%以上 / 異常系70%以上を最低ラインにするのが業務AIの相場です。

- name: Run OpenAI Eval
  run: python scripts/run_eval.py --eval-id ${{ env.EVAL_ID }}
  env:
    OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Quality Gate
  run: |
    python scripts/check_threshold.py \
      --normal-min 0.95 --boundary-min 0.80 --abnormal-min 0.70

GPT系モデル特有の評価設計ポイントは?

結論として、Structured Outputs・Logprobs・Reasoning Effortの3つを評価設計に組み込むのがGPT系の真価を出すコツです。

Structured Outputsで形式崩れをゼロにする

2024年末からGAになったStructured Outputsは、JSON Schemaを100%遵守します。ハーネス側で正規表現パースを書く時代は終わりました。

response = client.chat.completions.create(
    model="gpt-5",
    messages=[...],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "invoice_extraction",
            "schema": {
                "type": "object",
                "properties": {
                    "issue_date": {"type": ["string", "null"]},
                    "total_amount": {"type": ["number", "null"]},
                    "confidence": {"type": "number"},
                },
                "required": ["issue_date", "total_amount", "confidence"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
)

Logprobsで確信度を機械的に取り出す

GPT系はlogprobsを取得できるため、確信度スコアを評価軸の1つに含められます。Claudeでは難しい論点で、OpenAIハーネスの差別化要素です。

Reasoning Effortを評価条件に固定する

o3系・GPT-5系ではreasoning_effortパラメータが導入されました。評価時にlow/medium/highを混在させると比較不能になるため、ハーネス側で必ず固定します。


運用フェーズで詰まりやすいポイントは?

結論として、「コスト膨張」「データセットの陳腐化」「評価モデル自体の劣化」の3つが運用1年目で必ず顕在化します。

  • コスト膨張: Evalsは1回数千円〜数万円に膨らみがち。GPT-4o-miniを評価モデルに使い、Promptキャッシュを効かせて30〜50%削減

  • データセット陳腐化: 本番ログの5%を評価データに昇格させる「データフライホイール」を組む

  • 評価モデル劣化: 評価モデル自体もバージョン固定し、半年ごとに別モデルとクロスチェック

業務評価ループの全体像は ハーネスエンジニアリング実践ガイド でも段階別に整理していますので、合わせてご覧ください。


雲海設計の支援サービス

雲海設計では、OpenAI・Anthropicを軸とした業務AIのハーネス設計から本番運用まで一貫して支援しています。Evalsの初期構築・CI連携・コスト最適化・社内データセット整備までを伴走するメニューを用意しています。詳しくは DXソリューション または ITコンサルティング をご覧いただくか、お問い合わせ よりご相談ください。


よくある質問

Q. OpenAI EvalsとPromptfoo・DeepEvalはどう使い分けるべきですか?

A. OpenAI Evalsは公式・ダッシュボード統合・GPT系最適化が強みです。Promptfooはマルチプロバイダ比較、DeepEvalはローカル開発との親和性が高いです。GPT中心ならEvals、マルチLLM比較ならPromptfooが2026年時点の現実解です。

Q. 評価モデルにGPT-5を使うのは過剰でしょうか?

A. 過剰なケースが多いです。GPT-4o-miniやo3-miniで十分な精度が出る評価軸が7〜8割を占めます。複雑な論理整合性のみGPT-5に上げる「2段評価」がコスト最適です。

Q. ClaudeとOpenAIのハーネスを共通化できますか?

A. データセット層と閾値ゲート層は共通化可能ですが、モデル呼び出し層と評価grader層はプロバイダごとに分離するのが定石です。抽象化のしすぎは保守コストを上げます。

Q. 評価ハーネスをCIに入れると遅くなりませんか?

A. 全件評価をPRごとに回すと遅くなります。PRごとに50〜100件のスモークテスト、夜間に全件回帰の二段構えが標準です。

Q. データセットは何件から始めれば良いですか?

A. 業務AIの初期は50件から実用になります。3層比率(正常60/境界25/異常15)を守れば、初期で十分に劣化検知できます。半年で200〜500件に育てるのが現実的なペースです。