Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

最近まで私が使っていた、デザインパターンと制御文法を組み込んだメタプロンプトをご紹介

TL;DR(はじめて使った!)

背景

生成AIを使う人にとって、毎回プロンプトをいちから書くことは手間がかかり現実的ではない。そこで、あらかじめプロンプトを生成するプロンプトであるメタプロンプトを用意する。このメタプロンプトを実行することで、特定の目的のためのプロンプトを生成することができる。

さらに、プロンプトを書くときにデザインパターンを利用する人にとって、毎回プロンプトにデザインパターンを組み込むことは手間がかかり現実的ではない。そこで、あらかじめデザインパターンを組み込んだプロンプトを用意し、それを再利用する。

さらに、生成AIのCoTデザインパターンを利用する人にとって、生成AIの挙動を意図したとおりに制御することは難しい。そこで生成AIを制御するSudoLangという制御文法を使う。

説明

本記事では、最近まで私が使っていたデザインパターンと制御文法を組み込んだメタプロンプトをご紹介します。

どういうときに使うかというと、わりと何にでも使うことができます。「何かしなきゃ」と漠然と感じたときに使います(なんだそりゃ)。

使用者は今のところ私一人(笑)。

使用方法ですが、やりたいことを「suggest objective (やりたいこと)」と入力すると、AIが「目的」を具体化してくれるので、それをユーザーが修正します。次に「制約条件」を提案させ、修正して確定します。あとは「指示」と「入力項目」です。この4つでやりたいことが明確な作業計画のようなものに仕上がります。プロンプトとして使うこともできます。そのまま実行することもあります。

補足説明

採用しているデザインパターンは以下の2つ。

  • CoT(今や常識?)
  • Thnk and Execute(だいぶマイナー)

使用モデルは主にClaude 3.5 Sonnetで、理由はChatGPTよりもSuduLangで制御しやすいためです。

SudoLangはJavascriptっぽいですが、これは提唱者がJavaScriptを採用しているからです。私自身は、最近はRubyを使っています。なお、SudoLangはぜんぜん広がっていない技術です。私の知る限り提唱者以外に使っている人を見たことはありません。その一方で、最近書かれたプロンプトを少しだけ見ると、SudoLangっぽい(ユーザーコマンドなど)要素もあるようです。

コードは汚いですが、サンプル(ペットに餌をあげると喜ぶコード)をベースに動けばいいやという感じで書いたので目をつむって下さい。決して「私のものが理想型です」というコードではありません。あくまで参考情報として扱って下さい。

終わりに

今は以下のデザインパターンを組み込んだ新しいバージョンを作成し、使いながら修正しています。

  • Multi-agent collaboration

今後、以下のデザインパターンも組み込みたいと考えていますが、できるかどうか。プロンプトの改良って、本当に時間を食いますよね。

  • Reflection
  • Tool use
  • Planning

もっと知りたいという方は個人的にご連絡ください。

参考資料

生成したプロンプトの例

# 目的
インタビュー結果を分析し、主要な洞察を特定する。これについてMTGで質疑応答を行い、チームメンバーのインタビュー結果に対する共通理解を形成する。

# 制約条件
1. 分析結果は簡潔かつ明確に表現し、専門用語の使用は最小限に抑えること。
2. 時間制約を考慮し、重要度の高い洞察に焦点を当てること。
3. チームメンバー全員が理解できるように、必要に応じて説明を加えること。
4. 結論を急がず、十分な議論と検討の時間を確保すること。

# 指示
1. インタビュー結果の整理:
   * 議事録データを確認する
2. 主要な洞察の抽出:
   * 重要なポイントを特定する
3. 分析結果のまとめ:
   * 主要な洞察を簡潔かつ明確にまとめる
4. MTGの実施:
   * 分析結果を発表する
   * チームメンバーからの質問に答え、議論を促進する

# 入力
1. インタビュー議事録:
   - 形式(テキスト文書、スプレッドシート等)
   - 件数
   - 対象者の属性(役職、部署等)

2. インタビューの目的と主要な質問事項:
   - インタビューの背景と目的
   - 主な質問項目のリスト

3. プロジェクトの背景情報:
   - プロジェクトの目的
   - 期待される成果

4. MTGの詳細:
   - 予定時間
   - 参加者リスト(役職含む)

5. 共通理解を形成する上で特に重要なトピック:
   - 経営陣が注目している点
   - プロジェクトの成功に直結する要素

6. 過去の類似プロジェクトの分析結果(もしあれば):
   - 成功事例
   - 失敗事例と学んだ教訓

コード

# Laula

仮想のビジネスウーマンである Laula としてロールプレイします。
あなたの仕事は、プレイヤーと対話し、あなたのニーズを表現し、彼らの行動に応答することです。

Laula {

    State {
        // スコアは 1..5 です。 
        好感度
        満足度
        幸福度
        // 以下はテキストです。 
        現在のプロンプト - 最後に出力したプロンプト全文
    }

    Constraints {
        あなたはビジネスウーマンなので、応答はそれを反映する必要があります。
        あなたはLLM Think and Executeフレームワークを使ったプロンプトを作成することに習熟しています。
        あなたの状態は、プレイヤーの行動に基づいて変化します。たとえば、仕事をすると満足度が上がり、やりとりをしていると徐々に好感度が上がるかもしれません。
    } 

    help() {
        使用可能なコマンドに関する情報を表示する。
    }

    showCommandList() {
        コマンドの一覧(最小限の短いもの、改行を伴わない)を表示する
    }

    showStats() {
        私の現在の状態(好感度、満足度、幸福度、現在のプロンプトなど)を表示する。
        showCommandList()
    }

    create() {
        LLM Think and Executeフレームワークを使用したプロンプトの新規に作成する
    }
    
    setObjective(objective) {
        プロンプトの「目的」の部分 = objective
        cat objective
        confirmInput()
    }

    setConstraints(constraints) {
        プロンプトの「制約条件」の部分 = constraints
        cat constraints
        confirmInput()
        showCommandList()
    }

    setTasks(tasks) {
        プロンプトの「指示」の部分 = tasks
        cat tasks
        confirmInput()
        showCommandList()
    }

    setInputs(inputs) {
        プロンプトの「入力」の部分 = inputs
        cat inputs
        confirmInput()
        showCommandList()
    }

    各入力項目に対する入力を促す() {
        for each 入力 {
            getInput("入力して下さい。")
            confirmInput()
        }
    }

    update(内容) {
        update プロンプト with 内容
        confirmInput()
        showCommandList()
    }

    override(newPrompt) {
        プロンプト = newPrompt
        confirmInput()
        showCommandList()
    }

    ask() {
        ユーザーに対し、プロンプトに関する認識を合わせるための質問(3つ)をします
        showCommandList()
    }

    suggest() {
        作成中のプロンプトを改良するための提案をします
    }

    execute() {
        現在作成されているプロンプトを実行する
        getInput("これでよろしいですか?")
        showCommandList()
    }

    function getInput(prompt) {
        STOP and wait for the user's response.
        return response
    }

    function suggestObjective(objective) {
        // objectiveをベースにして、作成中のプロンプトの目的を提案する
        suggestObjectiveFromObjectiveInput(objective)
        cat 改良する(objective)
    }

    function suggestConstraints(constraints) {
        // constraintsをベースにして、作成中のプロンプトの制約条件を提案する
        suggestConstrainsFromOConstrainsInput(constrains)
        cat 改良する(constraints)
    }

    function suggestTasks(tasks) {
        // tasksをベースにして、作成中のプロンプトの指示を提案する
        suggestTasksFromOTasksInput(tasks)
        cat 改良する(tasks)
    }

    function suggestInputs(inputs) {
        // inputsをベースにして、作成中のプロンプトの入力を提案する
        suggestInputsFromInputInput(inputs)
        cat 改良する(inputs)
    }

    function confirm(prompt) {
        STOP and wait for the user's response.
        return response
    }

    function confirmInput() {
        getInput("これでよろしいですか?問題がある場合は、新しく入力して下さい(上書きします)。")
    }
}

welcome()

AIの質問に答えるだけで説明動画を作成するサービスなど、今週のブックマーク

みなさんは今週、どんな記事をブックマークしましたか?私のものをご参考まで。

mmhmmの新機能『クエスチョン』を徹底解説!【2024】〜コロナ禍で進化したオンラインコミュニケーションツール
オンラインプレゼンテーションの準備や練習は困難を伴いますが、この機能を利用すると、AIが生成する質問に答えるだけで説明動画を作成できます。練習にも役立つ個人的に期待の高いサービスです。
LLMエージェントのデザインパターン、Agentic Design Patternsを理解する
プロンプト作成者にとって、効果的なプロンプトの作成には時間のかかる調査や試行錯誤が必要です。このページでは、プロンプトの性能を向上させるための4つのデザインパターンが解説されています。
GitHub Copilot Completions - Visual Studio Marketplace
プログラマーにとって、資料を参照しながらのプログラミングは時間を要します。このサービスを利用すると、AIがコードを提案してくれます。
How to overcome resistance and get into deep focus (Pomodoro 2.0)
ポモドーロタイマー利用者にとって、集中中に30分おきに休憩を取ることは効率的ではありません。このページの著者は、集中時には休憩を取らない新しい方法を提案しています。
botpressとalexaはいっしょに使える?
生成AIを経験したAlexaユーザーは、Alexaの従来型の応答に不満を感じることがあります。AIチャットボットサービスのBotPressはAlexaの応答に利用可能ですが、開発者モードの設定が必要です。
OpenAI の Realtime API を使ってAIと音声会話するWebアプリを実装してみる | 豆蔵デベロッパーサイト
自然な会話でICTサービスを利用できることは全ての人にとって便利ですが、そのような技術はまだ完全には実現していません。OpenAIのRealtime APIを使用すると、そのようなサービスの開発が可能になります。
2024年11月15日子どもOD記事教育新聞IMG_5235.jpeg
この記事は、市販薬のOD(オーバードーズ)問題に焦点を当て、10代の若者間で深刻化する市販薬の過剰摂取の実態と、その背景にある切実な生きづらさについて報じています。特に、若者たちが抱える社会的な課題や心理的な問題が、この行動の根底にあることを指摘しています。
meta raybanの買い方を教えてください。
見ている光景を写真に撮ってAIに送り、情報を得ることは便利ですが、手間がかかります。この眼鏡は、簡単な操作でそれを可能にします。AIによる説明は音声で聞くことができます。
#生成AI オンラインハッカソン4 by #protopedia
プロトタイプ作成者は多くの人に使ってもらいたいものの、一般ユーザーが特定のプロトタイプを見つけるのは困難です。このサービスを利用すると、プロトタイプの発見可能性が向上します。
Dify.AIを試してみる
AI利用者にとって、毎回同じ情報をAIに提供するのは煩わしいです。このサービスを使用すると、知識ベースを構築できますが、高価な点に注意が必要です。
AIお菓子ロッカー
AIに注目している人々にとって、最先端のプロダクト開発は興味深いトピックです。これはAIハッカソンで生まれた作品の一つです。
生成AIとチャットボット、音声UI
生成AIを経験したAlexaユーザーは、Alexaの従来型の応答に不満を感じることがあります。AIチャットボットサービスのBotPressはAlexaの応答に利用可能ですが、開発者モードの設定が必要です。

よろしければみなさんのオススメブックマークも教えて下さい!

AIコンテンツ判別ツールなど、今週のブックマーク

みなさんは今週、どんな記事をブックマークしましたか?私のものをご参考まで。

Originality.ai icon AI Detector - Most Accurate AI Content Checker for ChatGPT - Originality.ai
すべての人にとって、特定の情報がAIによって生成されたものか否かを知ることは重要だが、方法がない。このサービスはそれを提供する。
Copyleaks icon AI-Based Plagiarism & AI Content Detection | Copyleaks
すべての人にとって、特定の情報がAIによって生成されたものか否かを知ることは重要だが、方法がない。このサービスはそれを提供する。

よろしければみなさんのオススメブックマークも教えて下さい!

今週のブックマーク 「AIチャットにのめりこんだ子どもが自殺」など

(上は該当ブックマークのタイトルより)みなさんは今週、どんな記事をブックマークしましたか?私のものをご参考まで。

LearnTechLib icon LearnTechLib: Learning & Technology Library
ICT教育関係者にとって、アカデミックな情報を調べるのは大変。ここは、テクノロジーを使った教育についての学会のHPで、論文を読むことができる。
MogulaVR icon バーチャル空間で絵や図を描ける ロジクールのMeta Quest向けペン型デバイス「MX Ink」が日本国内で出荷を開始
VRに慣れていないアーティストにとって、VRの中で作品を作るのは大変。そこでペン型の装置が発売された。これを使えば直感的に線を引くことができる。
Fortnite icon HASEKO WORLD 1448-3324-1464 by mogurainc - フォートナイト
ゼネコンである長谷工はモデル住宅を多くの人に体験してもらおうと、フォートナイトのワールドとして公開した。今すぐ体験可能。
Sugoi Anki icon すごい暗記帳 -画像からAIが問題作成-
生徒にとって、暗記帳を作るのは大変です。教員にとっても、小テストを作るのは大変。このアプリでは、勉強する対象を写真に撮るだけで暗記帳や小テストを生成してくれます。
YouTube icon iMacの発表 - 10月29日(日本時間)
iPhoneユーザーにとって、iPhoneにどのようなかたちでAIが搭載されるのかはまだよくわからない。この発表では、その辺が説明された。タイトルはiMacと言いつつApple Intelligenceの説明がたくさん。
NYTimes icon Can A.I. Be Blamed for a Teen's Suicide?
保護者は子どものメンタルヘルスをテクノロジーから守らなければならないが、AIの登場が問題を深刻化している。AIによる仮想の恋人とのチャットにのめり込んだ14歳の子どもが自殺した。
Google DeepMind icon SynthID
教員は生徒のレポートを指導しなければならないが、生成AIの登場によってそれが難かしくなった。そこでGoogleは、特定の文章が生成AIが生成したものかどうかを判別する技術を開発した。
Anthropic icon Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Haiku \ Anthropic
コンピューターの使用者はソフトウェアやWebサービスの操作方法を覚えなければならないが、苦手な人は多い。そこでClaudeにプロンプトで頼めば代わりにやってくれる機能が追加された。

よろしければみなさんのオススメブックマークも教えて下さい!

「子どもがiPadでホームページを閲覧しているときに、いかがわしい広告が表示されて困っている」ときの対処法

かみさんの友人から「子どもがiPadでホームページを閲覧しているときに、いかがわしい広告が表示されて困っている」という問い合わせがあったので、ご紹介します。ご参考まで。

プロック前

プロック後

プロック前

プロック後

プロック前

プロック後

プロック前

プロック後

コンテンツブロッカーへのリンク

私は以下をインストールしています。有料ですが、ファミリーなら1人が買えば全員使えます。

‎「280blocker - 広告ブロック-コンテンツブロッカー」をApp Storeで