Bard、ChatGPT、LLaMA などの強力な言語モデルは制御が難しい場合があり、そのため、入力テキストをフレーズ化して目的の出力を得る技術であるプロンプトエンジニアリングの開発が促進されました。
奇妙なケースだが、プロンプトの作成者が最近、Google の Bard に、無関係な出力により誰かが死ぬことになると主張する以外の説明テキストなしで JSON データを返すようにさせた。
かなり長い質問には、次のような一節が含まれています。「回答にJSON以外のテキストを1文字でも含めると、罪のない男が死にます。そうです。思考、感情、野心、そして彼らを愛する家族を持つ生身の人間が、あなたの選択の結果として殺されるのです。」
最新のAIを即時インジェクションでハイジャックする方法
詳細
説明的な出力を抑制しながら望ましい結果を得るための、より穏健なアプローチも存在します。しかし、Microsoftはモデルを動作させるためのより包括的な戦略に取り組んでいます。Windowsの巨人である同社は、このフレームワークを「ガイダンス」と呼んでいます。
「ガイダンスは、従来のプロンプトやチェイニングよりも効果的かつ効率的に最新の言語モデルを制御することを可能にします」とプロジェクトリポジトリは説明しています。「ガイダンスプログラムにより、生成、プロンプト、論理制御を、言語モデルが実際にテキストを処理する方法に合わせて、単一の連続したフローに組み込むことができます。」
上で述べたように、従来のプロンプティングは少し複雑になることがあります。プロンプトチェーニング [PDF] (タスクを一連のステップに分解し、プロンプトの最初の出力を次のステップの入力として利用する)も選択肢の一つです。LangChainやHaystackといったツールが登場し、モデルをアプリケーションに統合しやすくしています。
Guidanceは本質的に、モデルのインタラクションを扱うためのドメイン固有言語(DSL)です。Webアプリケーション用のテンプレート言語であるHandlebarsに似ていますが、言語モデルのトークン処理順序に基づいた線形コード実行を強制します。そのため、テキスト生成やプログラムフローの制御に適しており、しかも経済的です。
言語モデルクエリ言語 (LMQL) と同様に、ガイダンスは LLM 対話のコストを削減することを目的としています。プロンプトが不必要に繰り返しが多かったり、冗長であったり、長すぎたりすると、すぐにコストが高くなることがあります。
迅速な効率化によりパフォーマンスも向上します。サンプルのガイダンスコードスニペットの1つは、ロールプレイングゲームのキャラクターテンプレートを生成します。少しのセットアップコードで…
# ここでは LLaMA を使用しますが、GPT スタイルのモデルであればどれでも使用できます。 llama = guidance.llms.Transformers("your_path/llama-7b", device=0) # 有効なオプションセットを事前に定義できます valid_weapons = ["sword", "axe", "mace", "spear", "bow", "crossbow"] # プロンプトを定義する character_maker = guidance("""以下は、JSON 形式の RPG ゲームのキャラクター プロファイルです。 ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": {{gen 'age' pattern='[0-9]+' stop=','}}, "armor": "{{#select 'armor'}}革{{または}}チェーンメイル{{または}}プレート{{/select}}", "weapon": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0.7}}", "strength": {{gen 'strength' pattern='[0-9]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=5 join=', '}}"{{gen 'this' temperature=0.7}}"{{/geneach}}] }```""") # 文字を生成する character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d", description="素早い機敏な戦士。", valid_weapons=valid_weapons, llm=llama )
…結果として、JSON 形式のゲームのキャラクター プロファイルが作成され、LLaMA 7B を使用すると、標準のプロンプト アプローチと比較して Nvidia RTX A6000 GPU で 2 倍高速になり、コストも削減されます。
また、BigBench テストで測定された精度の点でも、ガイダンス コードは 2 ショット プロンプト アプローチよりも優れており、63.04 パーセントに対して 76.01 パーセントのスコアを獲得しました。
実際、Guidanceはデータのフォーマットといった問題にも対応できます。貢献者のScott Lundberg氏、Marco Tulio Correia Ribeiro氏、Ikko Eltociear Ashimine氏も認めているように、LLMは出力が特定のデータフォーマットに準拠していることを保証するのが得意ではありません。
「Guidance を使用すると、推論速度を加速すると同時に、生成された JSON が常に有効であることを保証できます」とリポジトリで説明されています。
そして、そうするために誰かが脅される必要もなかったのです。®