1,618 測定値
1,618 測定値

LLM で最高の結果を得るには、JSON Prompt Outputs を使用します。

Andrew Prosikhin4m2025/04/22
Read on Terminal Reader

長すぎる; 読むには

構造化された出力(JSON モードのように)は、LLM で最も古い頭痛を解決しました:不一致な応答。
featured image - LLM で最高の結果を得るには、JSON Prompt Outputs を使用します。
Andrew Prosikhin HackerNoon profile picture
0-item

これは現在進行中のシリーズの第4部です. See Parts 1, 2, and 3.

これは現在進行中のシリーズの第4部です. See Parts 1, 2, and 3.

1位1位2位2位3位3位

AI Principle IV: Use Structured Prompt Outputs

AI 原則 IV: Structured Prompt Outputs

久しぶりに、LLM APIsが出たばかりで、誰も彼らと正しく対話する方法を確実に知らなかった時代がありました。 トップの問題の1つは、単一のプロンプト応答から複数の出力を抽出することでした。 LLMsが一貫してJSONを返さなかったとき(しばしば失敗しました)、あなたは最高のプロンプトエンジニアリングオラトリウムを使用してLLMを説得しようとしました。


これらは古代の時代でした。当時、我々は馬に乗り、電気はまだ発明されていなかったので、ろうそくの光でプロンプトを書きました。デバッグプロンプトは、モデルがハイクの代わりにリストを返すことを望んで、長い夜をピルクメントのスロールでくことに費やしたことを意味しました。そして、それが失敗した場合、あなたは深く息を吐き、あなたのキールをインクに浸し、再び試してみる以外の選択肢はありませんでした。


しかし、JSON応答を一貫して返すことができなかったLLM APIは本物であり、多くの問題を引き起こしました。構造化した出力2023年11月 - OpenAI API を使用して、フォーマットされた JSON を提供できるようになりました。2024年には、OpenAI も厳格な構造化された出力のサポートを追加し、JSON を完全に返すことを保証しました。アントロピーそしてGoogleの構造化されていないスピード出力の時代は過ぎ去り、私たちは決して戻ってこない。

構造化した出力アントロピーGoogleの

Benefits

利点

なぜ他のフォーマットよりもJSON構造のプロンプト出力を使用するか、またはカスタムフォーマットを発明する方が良いのでしょうか。

Reduced Error Rate

現代のLLMは、要求されたときに有効なJSONを出力するように精巧に調整されています - 非常に複雑な応答でさえ失敗することは稀です. さらに、多くのプラットフォームには、不正にフォーマットされた出力に対するソフトウェアレベルの保護があります. たとえば、OpenAI APIは、構造化された出力の厳格なモードで非JSONを返すときに例外を投げます。


複数の出力変数を返すためにカスタムフォーマットを使用する場合、この細かい調節から利益を得ることはなく、エラー率ははるかに高くなります。

Decoupled Prompts and Code

JSON 出力では、別の出力フィールドを追加することは微妙で、既存のコードを破るべきではありません。これは、コード処理の論理への変更からプロンプトにフィールドを追加することを解約します。原則II:Low LLM Prompts Safe (If You Really Have To)で。

原則II:Low LLM Prompts Safe (If You Really Have To)

Simplified System

組み込まれたプラットフォームサポートなしで出力フォーマットを使用する実用的な理由はありますか? JSON を使用して応答をフォーマットすることは、あなたとその後のコードの貢献者にとってより容易になります。

When NOT to Use Structured Output

構造化された出力を使用しないとき

Single Field Output

あなたのプロンプトが応答として単一のフィールドを出力する場合、JSONを出力する利点はありません。


今日の単一変数応答は明日複雑な応答になる可能性があります。 1 つのフィールド出力プロンプトを複数のフィールド出力プロンプトに変えるのに何時間も費やした後、単一フィールドのみが返される場合でも、既定で JSON を使用しています。


プログラムの論理が複数の出力を必要としない場合でも、追加フィールドを追加するには、迅速なエンジニアリングとデバッグの利点があります。1位) それはまた、モデルの決定の説明として記録されることもできます. 最初から回答が JSON であることによって、そのようなフィールドを追加することがはるかに容易になります。

1位


したがって、プロンプトに単一の出力変数がある場合でも、JSON形式をオプションとして検討してください。

Streaming Response

遅延が重要なアプリケーションでは、LLM ストリーミングエンドポイントが頻繁に使用されます これらは、回答の一部が完全な応答を受け取る前に動作することを可能にします このパターンは JSON でうまく機能しませんので、代わりにシンプルでストリームフレンドリーな形式を使用する必要があります。


たとえば、プロンプトがビデオゲームのキャラクターが行ったアクションとキャラクターが言った言葉を決定する場合、それを「ACTION ÁthaSPEECH_TO_READ」として暗号化して、ストリーミングAPIを使用して反応をストリーミングすることができます。OpenAI ストリーミング APIこれはあなたにより良いラテンシーを与えるでしょう。

OpenAI ストリーミング API


例の出力:

♪こんにちは! こんにちは! こんにちは! こんにちは!
こんにちは! こんにちは! こんにちは! こんにちは!こんにちは! こんにちは! こんにちは! こんにちは!♪

こんにちは! こんにちは! こんにちは! こんにちは!

WAVE_AT_HERO|Hello, Adventurer! Welcome to my shop.

アクションが受信されるとすぐに、キャラクターは振動し始め、テキストが流入するように出力されます。

JSON ライン他のストリームフレンドリーなフォーマットも効果的に使用できます。

JSON ライン

Conclusion

結論

文明の利点を拒否しないでください - JSON 構造のプロンプト出力を使用してください. 欠点はほとんどありませんが、LLM は有効な JSON 応答を返すために大幅に最適化されていますので、あなたの人生をより容易にします。


あなたがこの投稿を楽しんだ場合は、より多くのシリーズにサブスクリプトしてください。

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks