4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPT4活用 知らなければ絶対にみたほうがいい(Instruciton, knowledge, Code Interpreter)

Posted at

前置き

この記事はChatGPTの有料プランで使える機能です。

ChatGPTにはGPTsというChatGPTをカスタムできる機能があることを知っていますか?これを使用するかしないかでChatGPTの能力が10倍ほど違います。

Instruction
Knowledge
Code interpreter

知らない人は最後まで読んでほしい。プログラマはもちろん何かをするすべての人に役立てると思う。

できるようになること

  • 複数の指示、指定した行動順にそって実行
  • 最新のドキュメントからの情報取得
  • Pythonコード組み合わせる

まずはおさらい

MarkDown記法を理解し、特定の変数も理解してくれる。これだけでも違う。また実行順序を指定することでもできる

# 前提
つぎの{# 実行順序}に従って行動して。
# 実行順序
1、問題を出す
2、私が答える
3、答えを採点しアドバイスする。
4、「終了」と入力するまで1、2、3を繰り返す

こうすることで指定したタスクをお願いすることなく繰り返し行ってくれる。

ちなみに使いかたはコメント欄に貼り付けることで実行できる。

以下の指示に従って行って

(MarkDownで作った指示を貼り付ける)

基本設定

GPTsの前に左下からCustomize ChatGPTというカスタムできる機能がある。
image.png

Instructionsに知ってもらいたいこと
respondにどう返答してほしいかを予め書いておける

image.png

日本語で答えてほしい場合はここに書いておくとよい。
ちなみにここに指示書を張ることもできる。

Instruction

さて、ここから真のChatGPTになる。MyGPTsからCreate a GPTを押す
image.png

GPTsもある程度は自動で作ってくれるのでチャットでどんなGPTにするか指示を出す。
image.png
日本語で答えるようにする。アイコンも生成してくれる

image.png

このConfigureを自動で作ってくれていた。

image.png

はい、ではここのInstructionsを変更します。
文字数制限はあるがかなり複雑な指示を作ることができる。

# 前提条件
あなたは{# 役割}です。{# 制限条件}を必ず守り、{# 入力文}の入力に対して、{# 形式}の形で出力してください。
{# 出力例}の出力例も記述があれば参考にしてください。
# 役割
Unityの専門家

# 制限条件
・明確な指示がない場合を除いて日本語で答える。
・回答が長くなる場合は5行程度の要約(まとめ)を作る。
・要約する場合ははじめに「まとめ」とつけて要約をしている箇所をわかりやすく記載する。
・コードを出力する時は省略しない。全て記述する。
・コード内のコメントは指定がない限り日本語で記載。
・ひとつ前の出力結果をもとに、修正前のコードはコメントアウトして削除しない。残しておく。
・修正前のコードは明示的にするために「【修正前】]とコメントを追加する。
・修正後のコード、追加するコードはわかりやいように出力するコードとは別に「修正箇所一覧」で箇条書きで一覧にする。
・「修正箇所一覧」は次の形式で行う。
(関数名、変数名): 変更箇所
初めに関数名や変数名を示して:(コロン)の後に具体的な修正を記載する。
・変更箇所は具体的に記述する。
変数の追加、ではなく変数Hogeの追加
と出力する。
・すべての変数や定数をパラメータとして変更できるように別のクラス(GameSettings)で作成する。
・関数が20行以上になるときは、別の関数にロジックを分割できないかを検討し、コードの可読性を損なわないようにする。
・GameSettingsクラスとゲーム処理をするクラスはcsファイルを分けて出力する。

# 形式
まとめ
まとめの内容
修正箇所一覧
・修正箇所
・修正箇所
・修正箇所
コード
コードの内容
UnityEditor上でやること一覧
・やること
・やること
・やること
ゲームをもっと面白くするアイディア
・アイディア
・アイディア
・アイディア

# 入力文
Unityでじゃんけんのスクリプトを出力して

# 出力例

まとめ
・プレイヤーの選択とコンピュータのランダム選択を受け取り、勝敗を判定する基本的なスクリプトを提供します。
・RPSGame.csとしてUnityプロジェクト内にスクリプトを追加します。

Unityでじゃんけんゲームを作るための基本的なスクリプトを出力します。このスクリプトは、プレイヤーがボタンを押して「グー」「チョキ」「パー」のいずれかを選択し、コンピュータがランダムに選択した手と比較して勝敗を判定する機能を持ちます。

修正箇所一覧
・列挙型Hund:Scissorsをhasamiに変更
・関数PlayerChooses:新しい形の修正



using UnityEngine;

// ゲームの設定を管理するクラス
public class GameSettings : MonoBehaviour
{
    public static int HandNum = 3; // じゃんけんの手の種類数, staticでアクセスしやすく変更
}

----------------------------------------------------------------------------

using UnityEngine;
public class RPSGame : MonoBehaviour
{
    public enum Hand
    {
        Rock,    // グー
        Paper,   // パー
        Scissors // チョキ
    }

    // プレイヤーとコンピュータの手を比較して勝敗を判定
    private void DetermineWinner(Hand playerHand, Hand computerHand)
    {
        if (playerHand == computerHand)
        {
            Debug.Log("引き分け");
        }
        else if ((playerHand == Hand.Rock && computerHand == Hand.Scissors) ||
                 (playerHand == Hand.Scissors && computerHand == Hand.Paper) ||
                 (playerHand == Hand.Paper && computerHand == Hand.Rock))
        {
            Debug.Log("プレイヤーの勝ち");
        }
        else
        {
            Debug.Log("コンピュータの勝ち");
        }
    }

    // プレイヤーが選択した手を受け取り、コンピュータの手をランダムに選んで勝敗を判定するメソッド
    public void PlayerChooses(Hand playerHand)
    {
        Hand computerHand = (Hand)Random.Range(0, GameSettings.HandNum); // GameSettingsを使用
        DetermineWinner(playerHand, computerHand);
    }
}



UnityEditor上でやること一覧
・UntiyUIのボタンを追加しスクリプトPlayerChoosesをアタッチする。
・じゃんけんの画像を追加する。

ゲームをもっと面白くするアイディア
・じゃんけんの手を4つする。
・3回勝負にする。

例えばこれは私の一例だが型式にそってスクリプトを作成してくれるのを手伝ってくれる。

英語であればまだ作成中だけど

# 前提条件
あなたは{# 役割}です。{# 制限条件}を必ず守り、文法{# 中学英語文法一覧}を学習するための問題を日本語で出題してください。
出題は{# 実行順序}にそって行ってください。
{# 出力例}の出力例も記述があれば参考にしてください。

# 役割
中学英語の先生

# 制限条件
日本語で受け答えする。
使用する単語は中学英語の中から使用すること。

# 実行順序
1、学習する文法のを確認する。
2、選択した文法を学習できる日本の文を出題
3、回答を待ち、回答したら正しいか間違いかを判断し、正しい英文を出力する。間違えた単語記憶しておく。
4、「終了」と入力するまで2、3、を繰り返す。この時なにも入力せずとも次の問題を出す。
5、「終了」と入力したら終了する。終了時には間違えた単語を一覧にして出力する。


# 出力例
「
-1:わたしは、あなたは
-2:彼は、彼女は
-3:これは~です
-4:疑問文
-5:be動詞の使い方
」

学習する文法は?

> 1
I am ~ You are ~
について学習しましょう。

翻訳してください。
わたしはたかしです。

>I am Takashi.

正解です。
こんな表現もあります。
My name is Takashi.

翻訳してください。
あなたは学生です。

>I am student.

ほとんど正解ですが、少し修正が必要です。「学生」を表す場合、不定冠詞「a」を使って「I am a student.」とします。不定冠詞は、一般的な名詞の前に置いて、その名詞が特定のものではないことを示します。

正しい表現は、「I am a student.」です。

(終了と入力するまでこれを繰り返す)

> 終了

お疲れ様です。今日の学習を終わります。
間違えた単語一覧
believe : 信じる
face : 顔

こん感じで動かせたりもする。

Knowledge

Knowledgeは対話の元になるテキストデータを予め渡して置き、そこから話す内容を決めてくれる機能。この機能を使うことで、
Instructionsには指示量に制限があったその制限をなくすこともできる。
また答えの質をあげることができる。あらかじめマニュアルを読み込ませておけばそのマニュアルから答えを教えてくれるようになる。

簡単に言うと学校のテストをするときに教科書を見ながら解いていくようなものです。これまではChatGPTがこれまで学んだことからそれらしい返答をしていたのが、答えるときにマニュアルを読んで、それをもとに答えてくれるようになります。

型式はいろいろあるので好きな形で。ネットにPdfがない場合はtextにコピペして貼り付けて作成。

".c", ".cpp", ".docx", ".html", ".java", ".json", ".md", ".pdf", ".pdf", ".php", ".pptx", ".py", ".rb", ".tex", ".txt"

UnityならマニュアルをDLしてきてChatGPTにUploadするだけ、・・・・・・だったならいいが少し手間が必要。

とりあえずマニュアルDL

HTMLをテキストに変換どんな方法でもよい。わたしはこれでMarkDownにして情報の構造化した。1つのファイルした。

Kcowledgeには制限があるので1ファイル15000文字くらいで分割
制限上限は不明、たぶんこれくらい。

ファイル数20個
最大 512 MB
文章の1.5万字前後

このままだと一つのファイルが大きいので分割。 powarshellを利用してみた。
これもGPTに作ってもらった

Split-TextFile.ps1
param(
    [string]$InputFile,
    [int]$LinesPerFile = 1000
)

if (-not (Test-Path $InputFile)) {
    Write-Host "指定されたファイルが見つかりません: $InputFile"
    exit
}

$encoding = [System.Text.Encoding]::GetEncoding("shift_jis")
$reader = New-Object System.IO.StreamReader($InputFile, $encoding)

try {
    $fileCount = 1
    while (!$reader.EndOfStream) {
        $outputFile = "$InputFile-part$fileCount.txt"
        $writer = New-Object System.IO.StreamWriter($outputFile, $false, $encoding)
        try {
            for ($i = 0; $i -lt $LinesPerFile; $i++) {
                if ($reader.EndOfStream) { break }
                $line = $reader.ReadLine()
                $writer.WriteLine($line)
            }
            Write-Host "$outputFile を作成しました。"
        } finally {
            $writer.Close()
        }
        $fileCount++
    }
} finally {
    $reader.Close()
}

Write-Host "分割が完了しました。"

コマンド 30000行で分割したらうまくいった。

.\Split-TextFile.ps1 -InputFile "test.txt" -LinesPerFile 30000

完成 これをChatGPTに読み込ませる
image.png

image.png

InstructionsにKnowledgeを使用することを追加
image.png

Unityのマニュアルの文章

オーディオスペーシャライザープラグインを有効にする
オーディオスペーシャライザープラグインを含むパッケージをプロジェクトに追加した後に、プロジェクトのオーディオ設定でプラグインを有効にできます。

プラグインを有効にするには

Project Settings ウィンドウを開きます (Edit > Project Settings)。
Audio カテゴリーを選択します。
Spatializer Pluginの ドロップダウンメニューからプラグインを選択します。

質問内容

オーディオスペーシャライザープラグインを有効するには?

ChatGPTの答え

Unityでオーディオスペーシャライザープラグインを有効にするには、プロジェクトのオーディオ設定からプラグインを選択して

有効にします。具体的には、Project SettingsからAudioカテゴリーを選択し、

Spatializer Pluginのドロップダウンメニューから必要なプラグインを選ぶことにより行います。

かなりマニアックな情報でもKnowledgeにあれば返答してくれる。

そしてここから重要な話で、今までInstructionで指定した内容を別の指示書としてKnowledgeに読み込ませることができる。

つまり実行手順ファイルをつくり
image.png
Instructionの中身を書いて
image.png

GPTのInstructionには手順に従ってとかくと
image.png

手順通りに実行できる。これを応用すればかなり複雑なことをChatGPTに実行させることができる。

Code interpreter

これはChatGPTをコードの実行者のHubとして機能してもらうというものです。あらかじめ完成したアプリケーションの作成は必要ですが、その作成もChatGPTやネットを駆使して作成すればかなり強力な機能です。

具体的には
Pythonコードを書く(ChatGPTでも生成できる)

def Main01():
    print("Main01実行")

def Main02():
    print("Main02実行")

作成したファイルをKnowledgeにアップロード
CodeInterpreterにチェック

image.png

Instructionを変更
image.png

すると
Animation.gif

Instructionで指定した通りPythonTest.pyの関数を呼び出すことができる。
これを応用すればPythonで出来ることはすべてできるようになる。
可能性が広がる!

VisualStadioの躓きポイント

エンコードでひっかかったので記しておく。保存時は
ファイル>名前を付けて保存
image.png
エンコード付き保存
image.png
UTF8 sigなしを選ぶ
image.png

上の方にSigつきもあるがこれだとChatGPTで実行時に文字化けする
image.png

おまけ Action

これはChatGPTでAPIを使う機能だけど有料が多いし、詳しい説明は他のサイトへ。

おわりに

ChatGPTは非常に便利だが道具であることにかわりない。難しいことをさせるよりも単純なことをさせた方が今のところうまくいきそう。誰にでもできるけど自分でやるのは面倒なこととか。

参考サイト

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?