25 ポイント 投稿者 GN⁺ 2023-12-17 | 2件のコメント | WhatsAppで共有
  • 大規模言語モデル(GPTモデルとも呼ばれる)でより良い結果を得るための戦略と技術を共有するガイド
  • ここで説明する方法は、組み合わせることでより大きな効果を発揮する場合があり、最適な方法を見つけるために実験が推奨される
  • サンプルプロンプトを試しながら、モデルにできることを学べる

より良い結果を得るための6つの戦略

明確な指示を書く

  • モデルは心を読めないため、望むことを明確に依頼する必要がある。
  • 詳細を含めてより関連性の高い回答を得る、モデルに特定の人物を演じるよう依頼する、入力の区別された部分を明確に示すために区切り文字を使う。
  • タスク完了に必要な手順を明示し、例を示し、出力の望ましい長さを指定する。

参照テキストを提供する

  • 言語モデルは、特に難解なテーマや引用文、URLを求められたときに、もっともらしい誤答を自信ありげに生成することがある。
  • モデルに参照テキストを使って回答するよう指示したり、参照テキストから引用して回答するよう指示する。

複雑なタスクを単純なサブタスクに分割する

  • 複雑なシステムをモジュール式の構成要素に分解することがソフトウェアエンジニアリングの良い実践であるのと同様に、言語モデルに与えるタスクでも同じことが言える。
  • 複雑なタスクはエラー率が高く、しばしば単純なタスクのワークフローとして再定義できる。
  • 意図分類を用いてユーザークエリに最も関連する指示を特定し、非常に長い会話が必要な対話型アプリケーションでは過去の会話を要約またはフィルタリングする。
  • 長い文書を部分ごとに要約し、再帰的に全体の要約を構成する。

モデルに「考える時間」を与える

  • モデルに回答を急がせるのではなく、回答を作成する前に「思考の連鎖」を促すことで、より信頼性の高い回答を引き出せる。
  • モデルにまず独自の解決策を用意するよう指示し、モデルの推論過程を隠すために内部独白や一連のクエリを使用する。
  • 前のパスで見落としたものがないかモデルに尋ねる。

外部ツールを使う

  • モデルの弱点を補うため、他のツールの出力をモデルに与える。
  • 埋め込みベースの検索を使って効率的な知識検索を実装し、コード実行でより正確な計算を行ったり、外部APIを呼び出したりする。
  • モデルに特定の関数へのアクセスを許可する。

変更点を体系的にテストする

  • パフォーマンス改善は、測定可能なときほど容易になる。
  • 変更が全体的な性能に良い影響を与えるか確認するために、包括的なテストスイート(または「eval」)を定義する必要がある。
  • モデル出力を模範解答と比較して評価する。

GN⁺の見解

  • 最も重要な点: プロンプトエンジニアリングは言語モデルの性能を最適化する中核的な方法であり、ユーザーの意図を正確に把握し、望む結果を得るための具体的な指針を与える。
  • 興味深い理由: これらの戦略はAI言語モデルの活用をより効果的にし、特にGPT-4のような最新モデルでさらに高い性能を発揮できるようにする。
  • 注目すべき点: このガイドは、初級ソフトウェアエンジニアが言語モデルを使う際に直面しがちな一般的問題を解決するのに役立つ具体例と戦略を示し、実務でモデルをより効果的に活用する方法を提示している。

2件のコメント

 
GN⁺ 2023-12-17
Hacker Newsの意見
  • ChatGPTのシステムプロンプトに関する議論

    • 複雑なルールを受け入れるうえで、ChatGPTの最新モデルは効果的である。
    • システムプロンプトを使うよりも、より厳格な命令を与えるほうが経験上うまくいく。
    • 関数呼び出しと構造化データのサポートはプロンプトエンジニアリングの一形態であり、システムプロンプトだけを使うよりはるかに強力である。
    • システムプロンプトと構造化データの結果を比較する興味深いデモ例がある。
  • スペイン語でチーズバーガーを注文した体験談

    • ChatGPTとGoogle翻訳が提案したスペイン語訳に対して、店員が妙な反応をした。
    • 翻訳の改善に関心があり、メキシコ系アメリカ人向けのスペイン語に合わせた翻訳を依頼した。
    • 翌日、"Cheeseburger sin pepinillos"というフレーズで注文したところ、店員はそのほうが良いと言った。
  • LLM(Large Language Models)の特徴に関する議論

    • 入力と指示の間にほとんど区別がなく、ユーザーの入力がプロンプトの一部と見なされる。
    • その結果、よく知られた「プロンプトインジェクション」の脆弱性が生じるが、これはモデルが指示と入力を区別しないという本質的な特性によるものである。
    • プロンプトと入力が結合されたものがプログラム全体の入力となるため、プログラムの動作を確信するのが難しい。
    • これが、LLMがまだ複雑な作業に対して信頼できるほどには使われていない理由である。
  • プロンプト作成の学習に対するためらい

    • 新しいバージョンや異なるLLMがそれぞれ違った反応をするため、プロンプト作成を完璧に学ぶことに多くの時間を費やすのをためらっている。
    • システムがより賢くなれば、複雑なプロンプトは不要になるかもしれない。
  • プロンプトエンジニアリングとGoogleの高度な検索クエリの比較

    • 基本的な質問にはチャットボットがうまく機能するが、求める情報が複雑になるほど正確な情報を得るのが難しくなる。
    • Google検索でも基本的な情報は簡単に得られるが、曖昧でない結果を求めるときには高度な検索演算子を使う。
  • Google検索プロンプトとLLMプロンプトの比較

    • 人々はインターネットで必要なものを得るために、Googleに簡単なキーワードを入力するやり方に慣れている。
    • いまや複雑な文章を書かなければならないのは時間がかかり、これは一時的な段階かもしれない。
  • 人間同士のコミュニケーション失敗とLLMの限界

    • 人間同士のコミュニケーションはしばしば失敗し、ほとんどの人は効果的なコミュニケーターではない。
    • 機械が人間の心や意図を読み取るのにより優れていると期待するのも難しい。
    • プロンプトエンジニアリングは、人間同士のコミュニケーション能力向上のためにこそ存在すべきである。
  • 「プロンプトエンジニアリング」という用語への批判

    • 「エンジニアリング」という言葉が乱用されているという意見が示された。
  • LLMが人間に明確なコミュニケーションを教える役割

    • LLMを通じて、人間はより明確にコミュニケーションする方法を学んでいる。
  • LLMベースのチャットアプリ実装の容易さ

    • 理論的進歩がなくても、LLMベースのチャットアプリを実装することには多くの利点がある。
    • 現在よりも良い結果を得るには、開発者の努力が必要である。