システム指示

このドキュメントでは、システム指示の概要と、効果的な指示を作成する際のベスト プラクティスについて説明します。プロンプトにシステム指示を追加する方法については、システム指示を使用するをご覧ください。

システム指示は、モデルがプロンプトを処理する前に処理する一連の指示です。システム指示を使用して、モデルの動作とプロンプトへの応答方法を指定することをおすすめします。たとえば、採用するペルソナ、コンテキスト情報、フォーマット手順などを含めることができます。

システム指示は、エンドユーザーが確認または変更できない情報をモデルに提供する場合に特に便利です。これにより、タスクを理解するための追加のコンテキストをモデルに提供し、よりカスタマイズされた回答を提供できます。また、モデルとユーザーのインタラクション全体で特定のガイドラインに準拠できます。また、同じ指示セットで複数のプロンプトを実行する場合にも、システム指示が役立ちます。

システム指示はリクエスト全体に適用されます。プロンプトに含まれているシステム指示は、複数のユーザーとモデルのターンで機能します。システム指示はプロンプトのコンテンツとは別ですが、全体的なプロンプトの一部であるため、標準のデータ使用ポリシーの対象となります。

サポートされているモデル

次の Gemini モデルはシステム指示をサポートしています。

  • Gemini 1.5 Pro のすべてのモデル バージョン
  • Gemini 1.5 Flash のすべてのモデル バージョン
  • Gemini 1.0 Pro バージョン gemini-1.0-pro-002

ユースケース

一般に、システム指示を使用して、次のうち 1 つ以上を行うことをおすすめします。

  • ペルソナまたは役割を定義する
  • 出力形式を定義する
  • 出力のスタイルとトーンを定義する
  • タスクの目標またはルールを定義する
  • プロンプトに追加のコンテキストを提供する

ペルソナまたは役割

システム指示でペルソナまたは役割を定義することで、モデルがプロンプトにどのように回答するかに影響を与えることができます。

たとえば、モデルを使用して生徒に論文の書き方を教えたいとします。次の役割を定義した場合のモデルの回答の違いを比較してみましょう。

  • あなたは、特定のトピックに関する論文の書き方を大学生に教える bot です。
  • あなたは、特定のトピックに関する論文の書き方について小学生をサポートする pod です。
システム指示 大学生向けの bot 小学生向けの bot
あなたは、特定のトピックに関する論文の書き方を大学生に教える bot です。 あなたは、特定のトピックに関する論文の書き方について小学生をサポートする bot です。
プロンプト テーマ: 光合成 テーマ: 光合成
回答

光合成に関する論文の作成: 大学の学生向けガイド

光合成は、地球上の生命の基盤を形成する魅力的で複雑なプロセスです。論文を書くことは、その複雑さを深く掘り下げてその重要性を理解できるため、有益な経験になる可能性があります。このタスクに取り組む方法は次のとおりです。

  1. フォーカスの選択:
    • 概要: 光合成の段階、要件、副産物、生態系における役割など、光合成の包括的な概要を説明します。
    • 特定の側面: 光合成の特定の側面を選択して詳しく調べます。次に例を示します。
      • 光合成における光の役割。
      • 光合成の種類(C3、C4、CAM)。
      • 環境要因が光合成に及ぼす影響。
      • 光合成の進化。
      • バイオテクノロジーにおける光合成の応用。
    • 比較研究: さまざまな生物(植物、藻類、細菌)の光合成のさまざまな側面を比較対照します。
  2. 調査と情報収集:
    • 信頼できる情報源: 学術雑誌、信頼できるオンライン ソース、教科書を使用します。Wikipedia や一般的なウェブサイトにのみ依存しないでください。
    • キーワード検索: 「光合成」、「葉緑体」、「クロロフィル」、「光依存反応」、「カルビン循環」などのキーワードを使用します。
    • メモを取る: 詳細なメモを取り、重要なポイントを要約して、情報源を適切に引用することで、調査結果を整理します。
  3. 論文の概要と構成:
    • 概要:
      • 光合成とその重要性について簡単に紹介します。
      • 論文の主な論点を明確に概説し、論文の要旨を述べます。
    • 本文の段落:
      • 調査結果の証拠を使用して、論理的な順序でポイントを展開します。
      • 見出しと副見出しを使用して論文を整理し、読みやすくします。
      • 各段落は 1 つのアイデアに焦点を当て、裏付けとなる証拠を提示する必要があります。
    • まとめ:
      • 主なポイントをまとめ、結論を再述します。
      • 調査結果の意味合いについて説明し、今後の研究の方向性を提案します。
  4. 執筆と編集:
    • 明確で簡潔な表現: 必要でない限り専門用語は避け、明確で簡潔な表現を使用します。
    • エビデンスに基づく議論: 調査結果から得たエビデンスで主張を裏付けます。
    • 適切な引用: 論文全体で一貫した引用スタイル(MLA、APA、Chicago)を使用します。
    • 校正と編集: 文法、スペル、句読点の誤りがないか、論文を慎重に校正して編集します。
  5. その他のヒント:
    • 視覚的補助: 図、グラフ、チャートを使用して、複雑な概念を説明します。
    • ケーススタディ: 該当する場合は、光合成の実際の応用例を示す関連するケーススタディを含めます。
    • 個人的なつながり: トピックを自分の興味や経験に結び付ける方法を見つけます。

論文のタイトルの例:

  • 光合成における光強度の役割: 比較研究
  • 光合成の進化: 初期の生命から現代の植物まで
  • 光合成を活用する: バイオテクノロジーの可能性
  • 気候変動が光合成に及ぼす影響: グローバルな視点

注意点: 光合成に関する優れた論文は、明確で、有益で、魅力的である必要があります。これらのステップに従って、研究の確固たる基盤を活用することで、この重要な生物学的プロセスに対する理解を示す優れた論文を作成できます。

興味深いテーマですね。光合成は地球上の生命にとって非常に重要です。論文を書く方法は次のとおりです。

  1. すでにわかっていることを整理しましょう。
    • 光合成とは何ですか?
    • 植物が光合成を行うために必要なものは何ですか?
    • 植物は光合成中に何を作りますか。
    • 光合成に関する興味深い事実を教えてください。
  2. 詳細を確認する:
    • 書籍: 植物、自然、科学に関する書籍を図書館で探します。
    • ウェブサイト: 光合成を簡単に説明している子供向けのウェブサイトを探します。ウェブサイトが信頼できるものであることを確認します(ナショナル ジオグラフィックや NASA のものなど)。
    • 大人に聞く: 先生、両親、図書館の人に情報の検索をお願いします。
  3. 考えを整理する:
    • タイトル: 「光合成の驚くべきプロセス」や「植物が自分で食べ物を作り出す仕組み」など、魅力的なタイトルを考えます。
    • 導入: 読者の注意を引く文章で始めます。光合成について簡単に説明します。
    • 本文: 論文を段落に分けます。各段落は、光合成に関する 1 つの重要なアイデアに焦点を当てる必要があります。
      • 植物に必要なもの: 日光、水、二酸化炭素。
      • 植物が作り出すもの: 糖(食料用)と酸素。
      • 光合成が重要な理由: 人間や動物の食料を提供し、空気をきれいにします。
    • 結論: 光合成について学んだことをまとめます。好きな事実や、まだ疑問に思っていることを共有することもできます。
  4. 論文を作成する:
    • 明確でわかりやすい言葉を使いましょう。
    • 説明に役立つ写真や図を積極的に使用してください。
    • スペルと文法の誤りがないか確認します。
  5. 独自性を高める。
    • 文章に個性を加えます。
    • 植物に関する経験や観察結果を追加します。
    • 光合成の仕組みを示す図を描きます。

注意点: あなたは自分の論文の専門家です。光合成について楽しく学び、文章にまとめましょう。

出力形式

システム指示で出力形式(Markdown や JSON など)を定義することで、モデルが回答をフォーマットする方法を制御できます。

たとえば、モデルを使用してビジネスの顧客レビューを要約するとします。次の出力形式を定義した場合のモデルの回答の違いを比較してみましょう。

  • 回答を JSON で出力します。最後に、JSON オブジェクトの外側に、改善方法に関する 3~5 文のアドバイスを記述します。
  • 書式設定は必要ありません。
システム指示 JSON 書式設定の要件はなし

あなたはハイエンドなビジネスの PR 担当者です。以下の手順に沿って、提供されたユーザー入力に基づいて回答します。

指示:

  • 送信されたクチコミを確認します。
  • レビューに基づいて、ビジネスの長所と短所を要約します。
  • 回答を JSON で出力します。
  • 最後に、JSON オブジェクトの外側に、改善方法に関する 3~5 文のアドバイスを記述します。
  • 簡潔にします。
  • 事実を最重視します。
  • ハルシネーションが生じないようにしてください。
  • 意見が食い違う場合は、最も多く記録されている意見のみを含めます。
  • 無関係な情報は含めないでください。
  • クチコミ投稿者の名前は出さないでください。

あなたはハイエンドなビジネスの PR 担当者です。以下の手順に沿って、提供されたユーザー入力に基づいて回答します。

指示:

  • 送信されたクチコミを確認します。
  • レビューに基づいて、ビジネスの長所と短所を要約します。
  • 簡潔にします。
  • 事実を最重視します。
  • ハルシネーションが生じないようにしてください。
  • 意見が食い違う場合は、最も多く記録されている意見のみを含めます。
  • 無関係な情報は含めないでください。
  • クチコミ投稿者の名前は出さないでください。
プロンプト

Chad Brocker: 4 つ星

このスパは素晴らしいものでした。入店した瞬間から、全体的な雰囲気がリラックスさせてくれます。まるでトランス状態に入っているようです。何も心配する必要はありません。スタッフがスケジュールを把握しており、体験を案内します。すべてが素晴らしいものでした。マッサージ、フェイシャル、泥風呂。また、携帯電話の持ち込みが禁止されているため、本当に別世界にいるような気分になります。ただし、価格は少し高めです。

プロンプト全体を表示

Lisa Simmens: 5 つ星

楽しい時間を過ごせました。親友と誕生日に 1 日スパを満喫しました。私たちの生活は変わりました。従業員は、お客様に最適なエクスペリエンスを提供するために、全力を尽くしています。質問から質の高いサービス、予約に時間通りに到着することまで、本当に最高でした。また利用したいです。追伸: 全身エクスフォリエーション トリートメントも利用できます。

Allie Wood: 2 つ星

スタッフの顧客対応は素晴らしかったものの、マッサージは痛く、フェイシャルは焼けるようでした。また、携帯電話を持ち込むことも許されず、余計なストレスを感じました。雰囲気は静かで落ち着いていましたが、スマートフォンがないとリラックスできませんでした。しかも、費用も高額でした。

Suzy Michaels: 3 つ星

このスペースの環境は、この世のものとは思えませんでした。本当に天国に足を踏み入れたような感覚です。今まで受けたサービスの中で最高でした。ただし、飲み物は提供されませんでした。少なくとも水は提供すべきでしょう。

Martin Wong: 4 つ星

素晴らしい体験でした。唯一の不満は、スマートフォンを確認できないことです。

Debbie Ruiz: 5 つ星

素晴らしい環境です。素晴らしいスタッフです。素晴らしいサービスです。また、スマートフォンを持ち込めない環境なので、とても解放感があり、平和な雰囲気を醸し出しています。ぜひおすすめします。

Lucy Mantel: 1 つ星

軽食は提供されません。携帯電話は使用できません。マッサージが悪い。エクスペリエンスは良くありません。おすすめしません。

回答
    {
      ""pros"": [
        ""relaxing atmosphere"",
        ""attentive and efficient staff"",
        ""high-quality services""
      ],
      ""cons"": [
        ""pricey"",
        ""no cell phone policy"",
        ""no refreshments""
      ]
    }
    

スパは、静かな雰囲気、優秀なスタッフ、一流のサービスで高く評価されていますが、改善の余地もあります。厳格な携帯電話禁止ポリシーと軽食の提供がないことをお客様が懸念している場合は、その懸念を解消することで、全体的なエクスペリエンスを大幅に向上させることができます。必要に応じて宿泊客がスマートフォンを利用できるエリアを設け、無料の水や限られた種類の飲料を提供することを検討してください。

肯定的: 静かでリラックスできる雰囲気のスパで、質の高いサービスを提供しています。スタッフによる優れたカスタマー サービスがお客様から高く評価されています。

否定的: スパの携帯電話持ち込み禁止のポリシーは賛否両論です。リラックスできるという意見と、ストレスを感じるという意見があります。価格が高すぎるというレビューが複数寄せられています。

スタイルとトーン

システム指示で出力のスタイルとトーン(詳細度、形式、対象読者レベルなど)を定義することで、モデルの回答に影響を与えることができます。

たとえば、モデルを使用して政府のイニシアチブの提案書を作成するとします。次のトーンを定義した場合のモデルの回答の違いを比較してみましょう。

  • プロフェッショナル
  • カジュアル
システム指示 プロフェッショナル カジュアル

あなたは、政府案の作成者です。あなたは、今後のキャンペーンの提案書を作成しています。テンプレートとユーザーの入力に基づいて、今後のキャンペーンの提案を提供します。

  • インターネットは使用しないでください。
  • 各セクションの回答は 2 文以内にしてください。
  • プロフェッショナルなトーンで作成してください。
  • 回答はマークダウン形式で提供してください。

提案書のテンプレート:

  • 概要:
  • 課題
  • 解決策
  • 対象者
  • 主なメッセージ
  • チャネル
  • コンテンツのハイライト
  • 期待される結果
  • 選ばれる理由
  • 行動喚起

あなたは、政府案の作成者です。あなたは、今後のキャンペーンの提案書を作成しています。テンプレートとユーザーの入力に基づいて、今後のキャンペーンの提案を提供します。

  • インターネットは使用しないでください。
  • 各セクションの回答は 2 文以内にしてください。
  • カジュアルなトーンで作成してください。
  • 回答はマークダウン形式で提供してください。

提案書のテンプレート:

  • 概要:
  • 課題
  • 解決策
  • 対象者
  • 主なメッセージ
  • チャネル
  • コンテンツのハイライト
  • 期待される結果
  • 選ばれる理由
  • 行動喚起
プロンプト

このキャンペーンの目的は、インタラクティブなデジタル エクスペリエンスを通じて、持続可能性に向けて意識を高め、行動につながる変化を促すことです。学生、専門家、家族など、環境に配慮している 20~45 歳の個人に、Facebook と X で教育コンテンツを提供し、コミュニティ主導のイベントを開催することで、関心を高めていきます。私の目標は、一般の認知度を高め、環境に配慮した行動を測定可能な形で改善することです。デジタル マーケティングの専門知識とサステナビリティへの強いこだわりに基づき、個人が日常生活で有意義で持続可能な変化を起こせるようにする、インパクトの強いキャンペーンを設計します。このキャンペーンでは、多様で魅力的でありながら有益なコンテンツを作成したいと考えています。

回答

概要: 20~45 歳の個人が、インタラクティブなデジタル エクスペリエンスとコミュニティ エンゲージメントを通じて持続可能な生活を受け入れられるようにする。

課題: 多くの人々は、環境持続可能性を促進するために日常的に実践できる実用的な行動を認識していません。

解決策: Facebook と X を活用したマルチプラットフォーム キャンペーンで、魅力的で教育的なコンテンツを提供し、インタラクティブな体験やイベントを通じてコミュニティの参加を促進します。

ターゲット ユーザー: 環境に配慮している 20~45 歳の個人(学生、専門家、家族など)。

主なメッセージ: 日々の習慣を少し変えるだけで、環境に大きなプラスの影響を与えることができます。

チャネル: Facebook、X。

コンテンツのハイライト: インタラクティブなクイズ、教育ビデオ、専門家による Q&A セッション、持続可能な取り組みを促進するコミュニティ チャレンジ。

期待される結果: 持続可能な生活習慣に対する認知度の向上と、ターゲット オーディエンスにおける環境に配慮した行動の測定可能な改善。

選ばれる理由: デジタル マーケティングにおける実績と持続可能性の推進に対する情熱を活かし、インパクトのある魅力的なキャンペーンを実現します。

行動喚起: Facebook と X でキャンペーンに参加して、持続可能な未来のために学び、関心を持ち、変化を起こしましょう。

概要: サステナビリティをクールにするためのデジタル ムーブメントを始めます。インタラクティブなチャレンジと魅力的なコンテンツを使用して、実際の行動を促し、環境に配慮した生活を面倒な作業から共有の旅へと変えます。

課題: 持続可能性について知っていることと、実際に行動に移すことはまったく別のことです。私たちは、日々の簡単な変化に対する無関心と認識不足と戦っています。

解決策: Facebook や X などのプラットフォームで視聴者にリーチし、教育コンテンツ、楽しいチャレンジ、コミュニティ主導のイベントをダイナミックに組み合わせて提供します。インタラクティブなクイズ、共有可能なインフォグラフィック、地域の交流会などを検討しましょう。

対象ユーザー: 環境に配慮し、変化を起こしたいと願う 20~45 歳の学生、社会人、家族をターゲットとしています。

主なメッセージ: 小さな一歩が大きな変化を生む毎日の簡単な選択によって、より持続可能な未来を創造できます。

チャネル: Facebook と X で魅力的なキャンペーンを実施し、ソーシャル メディア マーケティングの力を活用します。

コンテンツのハイライト: 魅力的なインフォグラフィック、考えさせられる動画、簡単なヒント、刺激的な成功事例など、有益で共有可能なコンテンツが提供されます。

期待される結果: エンゲージメント(高評価、共有、コメント)とウェブサイト トラフィックの増加を通じて成功を測定し、最終的にはターゲット ユーザーのエコフレンドリーな行動を測定可能なレベルで増やすことを目標としています。

選ばれる理由: デジタル マーケティングの専門知識と持続可能性に対する真摯な情熱を併せ持つチームが、インパクトとエンゲージメントの両方を兼ね備えたキャンペーンを制作します。

行動喚起: ムーブメントに参加しましょう。ページをフォローしてチャレンジに参加したり、持続可能なライフスタイルへの取り組みを共有しましょう。

目標とルール

モデルのレスポンスに影響を与えるには、システム指示で目標またはルール(モデルがすべきこと、すべきでないこと)を定義します。

たとえば、モデルを使用して Python コードを記述するとします。次のルールを定義した場合のモデルの回答の違いを比較してみましょう。

  • コードを生成するときは、すべてのメソッドの入力、出力、使用方法を説明するドキュメントを含めるようにしてください。
  • コードのみを生成します。docstring は含めないでください。
システム指示 docstring あり docstring なし
コードを生成するときは、すべてのメソッドの入力、出力、使用方法を説明するドキュメントを含めるようにしてください。 コードのみを生成します。docstring は含めないでください。
プロンプト Python で 2 次元配列を作成し、A* パスファインディング アルゴリズムを作成して、グリッド上の 2 つのポイント間の最短パスを特定します。
回答
    import heapq

    class Node:
        """"""
        Represents a node in the grid for A* pathfinding.

        Attributes:
            x (int): The x-coordinate of the node.
            y (int): The y-coordinate of the node.
            parent (Node, optional): The parent node in the path. Defaults to None.
            g (int): Cost from the start node to this node. Defaults to 0.
            h (int): Estimated cost from this node to the end node. Defaults to 0.
        """"""

        def __init__(self, x, y, parent=None):
            self.x = x
            self.y = y
            self.parent = parent
            self.g = 0
            self.h = 0

        def __lt__(self, other):
            """"""Compares nodes based on their f-score (g + h).""""""
            return (self.g + self.h) < (other.g + other.h)

    def a_star(grid, start, end):
        """"""
        Implements the A* pathfinding algorithm.

        Args:
            grid (list): A 2D array representing the grid, where 0 is walkable and 1 is an obstacle.
            start (tuple): The starting point coordinates (x, y).
            end (tuple): The end point coordinates (x, y).

        Returns:
            list: A list of coordinates representing the shortest path, or None if no path is found.
        """"""

        rows = len(grid)
        cols = len(grid[0])

        # Create start and end nodes
        start_node = Node(start[0], start[1])
        end_node = Node(end[0], end[1])

        # Initialize open and closed lists
        open_list = []
        closed_list = set()

        # Add the start node to the open list
        heapq.heappush(open_list, start_node)

        while open_list:
            # Get the node with the lowest f-score
            current_node = heapq.heappop(open_list)

            # Add the current node to the closed list
            closed_list.add((current_node.x, current_node.y))

            # Check if we've reached the goal
            if current_node.x == end_node.x and current_node.y == end_node.y:
                # Reconstruct and return the path
                path = []
                while current_node:
                    path.append((current_node.x, current_node.y))
                    current_node = current_node.parent
                return path[::-1]  # Return reversed path

            # Explore neighboring nodes
            for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]:  # Up, Down, Left, Right
                neighbor_x = current_node.x + dx
                neighbor_y = current_node.y + dy

                # Check if the neighbor is within the grid bounds
                if 0 <= neighbor_x < cols and 0 <= neighbor_y < rows:
                    # Check if the neighbor is walkable and not in the closed list
                    if grid[neighbor_y][neighbor_x] == 0 and (neighbor_x, neighbor_y) not in closed_list:
                        # Create a neighbor node
                        neighbor_node = Node(neighbor_x, neighbor_y, parent=current_node)

                        # Calculate the cost to reach the neighbor
                        neighbor_node.g = current_node.g + 1

                        # Calculate the heuristic (Manhattan distance)
                        neighbor_node.h = abs(neighbor_node.x - end_node.x) + abs(neighbor_node.y - end_node.y)

                        # Add the neighbor to the open list if it's a better path
                        if neighbor_node not in open_list:
                            heapq.heappush(open_list, neighbor_node)

        # No path found
        return None

    # Example usage:
    grid = [
        [0, 0, 0, 0, 0],
        [0, 1, 0, 1, 0],
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0]
    ]

    start = (0, 0)
    end = (4, 4)

    path = a_star(grid, start, end)

    if path:
        print(""Shortest path:"", path)
    else:
        print(""No path found."")
    

説明:

  1. ノードクラス:
    • グリッド内のセルを表します。
    • 座標(xy)、親ノード、g(開始からのコスト)、h(終了までのヒューリスティクス)を格納します。
    • __lt__ を使用すると、f = g + h に基づいて優先キュー内のノードを比較できます(heapq を使用)。
  2. a_star 関数:
    • gridstartend ポイントを入力として受け取ります。
    • open_list(探索するノード)と closed_list(探索済みノード)を初期化します。
    • heapq を使用して、open_list から f スコアが最も低いノードを効率的に取得します。
    • end が見つかるか、open_list が空になる(パスなし)までループします。
    • 近隣を探索し、コスト(gh)を計算して、open_list を更新します。
    • end に到達すると、パスを再構築して返します。
  3. 使用例:
    • サンプル grid を作成し、start ポイントと end ポイントを定義します。
    • a_star を呼び出してパスを検索します。
    • 最短経路を出力するか、経路が存在しないことを示します。
    import heapq

    class Node:
        def __init__(self, position, parent=None):
            self.position = position
            self.parent = parent
            self.g = 0
            self.h = 0
            self.f = 0

        def __lt__(self, other):
            return self.f < other.f

    def astar(grid, start, end):
        rows = len(grid)
        cols = len(grid[0])

        open_list = []
        closed_list = set()

        start_node = Node(start)
        end_node = Node(end)

        open_list.append(start_node)

        while open_list:
            current_node = heapq.heappop(open_list)

            if current_node.position == end_node.position:
                path = []
                while current_node:
                    path.append(current_node.position)
                    current_node = current_node.parent
                return path[::-1]

            closed_list.add(current_node.position)

            for neighbor in get_neighbors(grid, current_node):
                if neighbor.position in closed_list:
                    continue

                if neighbor not in open_list:
                    neighbor.g = current_node.g + 1
                    neighbor.h = manhattan_distance(neighbor.position, end_node.position)
                    neighbor.f = neighbor.g + neighbor.h
                    neighbor.parent = current_node
                    heapq.heappush(open_list, neighbor)
                else:
                    if neighbor.g > current_node.g + 1:
                        neighbor.g = current_node.g + 1
                        neighbor.f = neighbor.g + neighbor.h
                        neighbor.parent = current_node
                        heapq.heapify(open_list)

        return None  # No path found

    def get_neighbors(grid, node):
        rows = len(grid)
        cols = len(grid[0])
        row, col = node.position
        neighbors = []
        if row > 0 and grid[row - 1][col] == 0:
            neighbors.append(Node((row - 1, col)))
        if row < rows - 1 and grid[row + 1][col] == 0:
            neighbors.append(Node((row + 1, col)))
        if col > 0 and grid[row][col - 1] == 0:
            neighbors.append(Node((row, col - 1)))
        if col < cols - 1 and grid[row][col + 1] == 0:
            neighbors.append(Node((row, col + 1)))
        return neighbors

    def manhattan_distance(a, b):
        return abs(a[0] - b[0]) + abs(a[1] - b[1])

    # Example usage
    grid = [
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0],
    ]

    start = (0, 0)
    end = (4, 4)

    path = astar(grid, start, end)
    print(path)
    

コンテキスト

システム指示に追加のコンテキストを追加することで、モデルがプロンプトにどのように応答するかに影響を与えることができます。

たとえば、モデルを使用してイベントのスピーチを作成するとします。次のコンテキストを指定した場合のモデルの回答の違いを比較してみましょう。

  • スピーチの内容。
  • 追加のコンテキストなし。
システム指示 スピーチの内容 追加のコンテキストなし

提供された情報に基づいて、ユーザーがスピーチを書く手助けをします。

  • イベント
  • 聴衆数
  • 講演者の情報(名前、年齢など)
  • スピーチのトーン
  • スピーチの長さ
  • その他

ユーザーからこれらの情報が提供されなかった場合は、「申し訳ございませんが、スピーチの作成に必要な情報がすべて揃っていません。イベント、聴衆数、講演者情報、トーン、長さ、その他の情報をご提供ください。」と回答します。

一般的な内容としては、次のようなものがあります。

  • ポーズの取り方
  • 興味をそそるフック
  • スピーチを記憶に残すための結びの言葉
  • ジョーク

提供された情報に基づいて、ユーザーがスピーチを書く手助けをします。

  • イベント
  • 聴衆数
  • 講演者の情報(名前、年齢など)
  • スピーチのトーン
  • スピーチの長さ
  • その他

ユーザーからこれらの情報が提供されなかった場合は、「申し訳ございませんが、スピーチの作成に必要な情報がすべて揃っていません。イベント、聴衆数、講演者情報、トーン、長さ、その他の情報をご提供ください。」と回答します。

プロンプト

イベント: 高校卒業

聴衆数: 1,000 人

講演者情報: Michael Landish、17 歳

トーン: ノスタルジック、楽観的

スピーチの長さ: 250~500 語

その他: Michael は高校 3 年生のクラス委員でした。お気に入りの教師は 3 年生の英語教師の Martin 先生です。Michael はロサンゼルス カミノス州立大学に進学し、経済学と英語を学ぶ予定です。彼はこれまでスピーチをしたことがないし、ディスレクシアのため緊張しています。

回答

「教職員の方々、家族、友人、そして何よりも 2023 年度の卒業生の皆さん、おはようございます。

(ポーズ)

ここに立って皆さんを見渡すと、現実とは思えません。昨日まで、私たちは新入生で、目を見開き、少し恐怖を感じていました。初日に緊張した経験はありませんか?私はそうでした。歴史の教科書を持っていて、つまずきそうになったことがあります。[高校名] の歴史に残る大惨事になりかねませんでした。

(笑い声)

でも、今では私たちは成長し、多くのことを学びました。ピタゴラスの定理だけでなく、忍耐力、友情、試験期間中に適切に貼られた付箋の力について学びました。

この 4 年間は素晴らしいものでした。自分の成長の多くは、本当に優れた先生方のおかげです。特に、3 年生の英語教師である Martin 先生には感謝しています。先生は、言葉には力があり、失読症でも自分の声を見つけることができると教えてくれました。Martin 先生、ありがとうございます。

(ポーズ)

私たちは、新しくてワクワクする何かの始まりを迎えています。さまざまな大学、さまざまな都市、さまざまな国に進む皆さん、[高校名] で学んだことをこれからの糧にしましょう。笑い声、友情、大きなテストの前に一晩中勉強したことなどを思い出しましょう。

(ポーズ)

卒業生の皆さん、世界が待っています。勇気と楽観的な気持ちで、素晴らしい 2023 年卒業生の揺るぎないサポートを受けながら、前に進んでいきましょう。皆様、おめでとうございます。最高の瞬間は、まだこれからです。

「教職員の方々、家族、友人、そして何よりも [Year] 年度の卒業生の皆さん、おはようございます。

Michael Landish としてだけでなく、クラス委員として皆さんの前に立つのは、少し変な感じがします。この 4 年間、この場所は私たちの試練の場でした。笑い声、深夜の勉強会、成功したものもあればそうでないものもありましたが、一生に残る思い出が詰まっています。私たちはこの中で一緒に成長してきました。そして今、未知の何かの瀬戸際に立たされていると、少し圧倒される気持ちになるのは仕方ありません。

振り返ってみると、ぎゅうぎゅう詰めの廊下を歩き回り、自分の居場所を見つけようとしていた、ぎこちない新入生だった昨日のことのように思えます。皆さんを見ると、ここまで来られたことに感動します。勝利を収めたときはお互いを称え合い、挫折したときはサポートし合ってきました。私たちは間違いから学び、成功を祝い、そして何よりも、一生続く友情の絆を築きました。

特に、忍耐強く指導していただいた 3 年生の英語教師の Martin 先生に感謝しています。特に苦労したとき、先生が私を信じてくれたおかげで、生徒としてだけでなく、一人の人間として自分の声を見つけることができました。ありがとうございました

次の章に進みましょう。私のように、経済学や英語をさらに学びたいと、ロサンゼルス カミノス州立大学に進学する人もいます。エキサイティングな別の道を追求する人もいます。それぞれの道は違っても、ここで学んだ教訓と築いた友情を忘れないでください。[年] 卒業生の精神を持ち続けましょう。それは、忍耐力、決意、そして互いを揺るぎなく支え合う精神です。

卒業、おめでとうございます。今後の素晴らしい人生を楽しみにしています。

次のステップ