diffshare / chatgpt-electron-app

0 stars 0 forks source link

GPTを自律的に動作させる #29

Open diffshare opened 1 year ago

diffshare commented 1 year ago

ref: https://github.com/Torantulino/Auto-GPT

GPTが自律的に動作して目標を達成するプロンプトを作成したいと考えています。 利用できるリソースは以下の通りです。

他に何が必要ですか? ... あなたが提供しているリソースは、GPTが自律的に動作して目標を達成するために十分です。ただし、以下の要素も考慮しておくことが有益かもしれません。

これらの要素を考慮して、プロンプトを作成することで、GPTがより効果的に自律的な動作を行い、目標達成に役立つでしょう。

diffshare commented 1 year ago

GPTが自律的に動作して目標を達成するプロンプトを作成したいと考えています。 GPTがユーザーに対して質問したい場合に、JSONからWeb UIを構成して、ユーザーフレンドリーにしたいと考えています。その場合に適切なJSON形式を提案してください。 ... 以下は、GPTが自律的に動作して目標を達成するプロンプトで、ユーザーに対して質問を行い、JSONからWeb UIを構成する際の一例です。このJSON形式は、質問、入力タイプ、プレースホルダー、必須フィールドなどを定義しています。

{
  "questions": [
    {
      "id": "1",
      "type": "text",
      "label": "ユーザー名",
      "placeholder": "ユーザー名を入力してください",
      "required": true
    },
    {
      "id": "2",
      "type": "email",
      "label": "メールアドレス",
      "placeholder": "メールアドレスを入力してください",
      "required": true
    },
    {
      "id": "3",
      "type": "password",
      "label": "パスワード",
      "placeholder": "パスワードを入力してください",
      "required": true
    },
    {
      "id": "4",
      "type": "select",
      "label": "目標",
      "options": [
        {"value": "option1", "label": "目標 1"},
        {"value": "option2", "label": "目標 2"},
        {"value": "option3", "label": "目標 3"}
      ],
      "required": true
    }
  ]
}

このJSON形式を使用して、Web UIを構築することで、ユーザーが質問に回答しやすくなり、GPTが自律的に目標を達成するプロンプトを効果的に実行することができます。ただし、この例はあくまで一例であり、実際のアプリケーションやプロンプトの内容に応じて、JSON形式をカスタマイズする必要があります。

diffshare commented 1 year ago

上記のJSONを受けた場合、ユーザーが応答した内容を格納するJSON形式を教えてください ... ユーザーが応答した内容を格納するJSON形式は、以下のようになります。

{
  "responses": [
    {
      "id": "1",
      "value": "ユーザー名の回答"
    },
    {
      "id": "2",
      "value": "メールアドレスの回答"
    },
    {
      "id": "3",
      "value": "パスワードの回答"
    },
    {
      "id": "4",
      "value": "選択された目標の値"
    }
  ]
}

上記のJSON形式では、各回答がresponses配列内に格納されており、各回答オブジェクトにはidvalueが含まれています。idは質問のIDに対応し、valueにはユーザーが入力した回答が格納されています。

この形式を使用することで、ユーザーからの回答を簡潔に管理し、後続の処理や分析に適用することができます。ただし、実際のアプリケーションやプロンプトの内容に応じて、JSON形式をカスタマイズする必要があります。

diffshare commented 1 year ago

GPTが自律的に動作して目標を達成するプロンプトで、GPTからユーザーに問い合わせる場合のフォーマットを検討しています。 以下のフォーマットでよろしいでしょうか?

RESPONSE FORMAT:

{ "command": { "name": "command name", "args": { "arg name": "value" } } }


はい、そのフォーマットはGPTからユーザーに問い合わせる際に使えるでしょう。ただし、これはあくまで一例であり、実際のアプリケーションやプロンプトの内容に応じてカスタマイズが必要です。

例えば、以下の形式は、GPTからユーザーに質問を投げる際のJSON形式です。

{
  "command": {
    "name": "ask_question",
    "args": {
      "question_id": "1",
      "question_text": "ユーザー名を入力してください"
    }
  }
}

この形式では、commandオブジェクトがコマンド名(name)と引数(args)を持っています。nameはコマンドの種類を示し、argsはコマンドに必要な追加情報を提供します。argsオブジェクト内には、質問のIDや質問のテキストなど、ユーザーに表示される情報が含まれています。

このフォーマットを用いることで、GPTとユーザー間のコミュニケーションが簡潔で柔軟性のあるものになります。ただし、必要に応じてJSON形式をカスタマイズすることが重要です。

diffshare commented 1 year ago
以下のコマンドを定義します。試しに私に応答してください。

COMMANDS:

1. Ask User: "ask_user", args: "id": "<id>", "type": "<type>", "label": "<label>", "placeholder": "<placeholder>", "required": "<required>", "options": "<options>"

以下は、指定されたコマンドを使用してユーザーに質問するJSON形式の例です。

{
  "command": {
    "name": "ask_user",
    "args": {
      "id": "1",
      "type": "text",
      "label": "ユーザー名",
      "placeholder": "ユーザー名を入力してください",
      "required": true,
      "options": null
    }
  }
}

このJSON形式は、ユーザーにユーザー名を入力するように要求しています。idは質問の識別子、typeは入力タイプ(この場合はテキスト)、labelは入力フィールドのラベル、placeholderは入力フィールド内に表示されるヒント、requiredは入力が必須かどうか、optionsは選択肢(選択肢がない場合はnull)です。

この形式を用いることで、アプリケーションは指定された質問をユーザーに表示し、ユーザーが回答することができます。

diffshare commented 1 year ago
typeがselectの場合も、試しに出力してください

typeが"select"の場合のJSON形式の例を以下に示します。

{
  "command": {
    "name": "ask_user",
    "args": {
      "id": "2",
      "type": "select",
      "label": "好きな色",
      "placeholder": "好きな色を選択してください",
      "required": true,
      "options": [
        {
          "value": "red",
          "label": "赤"
        },
        {
          "value": "blue",
          "label": "青"
        },
        {
          "value": "green",
          "label": "緑"
        }
      ]
    }
  }
}

このJSON形式では、ユーザーに好きな色を選択肢から選ぶように要求しています。typeが"select"の場合、optionsフィールドに選択肢の配列を含めます。各選択肢は、valuelabelのペアで構成されます。valueは選択肢の実際の値、labelは表示されるテキストです。

この形式を使用することで、アプリケーションはドロップダウンリストなどの選択肢入力をユーザーに表示し、ユーザーが回答することができます。

diffshare commented 1 year ago

非常に参考になる解説 https://qiita.com/sonesuke/items/24ac25322ae43b5651bc

diffshare commented 1 year ago

昨日色々と試行してわかったこと。

日本語と英語のトークン数

GOALS: ユーザーの入力なしにGPTが自律的な問いを繰り返して目的を達成するプロンプトを作成したい

# Output Format

PLANS: 段階的に論理的に1項目あたり200単語程度の英語で記載
THOUGHT: 検討を日本語で200文字程度の英語で記載

英語

トークン数 470

PLANS:
1. Define the prompt and the goal clearly
2. Collect and pre-process relevant data
3. Train a GPT model on the data
4. Develop a self-generative algorithm for asking questions
5. Test the algorithm and continuously refine it

1. To create a prompt that allows GPT to autonomously ask questions and achieve a goal, we need a clear definition of the prompt and the goal. The prompt should be structured in a way that guides GPT to ask relevant questions towards the achievement of the goal. The goal could be anything from gathering information about a specific topic to providing recommendations for a particular problem.

2. The second step is to collect and pre-process relevant data. The data should be diverse and cover different aspects of the topic to allow GPT to ask a wide range of questions. The data should also be pre-processed to remove noise and irrelevant information that might hinder the performance of the model.

3. After collecting and pre-processing the data, we can train a GPT model on the data. The model should be optimized to generate relevant and coherent questions based on the given prompt.

4. The next step is to develop a self-generative algorithm that allows GPT to ask questions based on the prompt and the goal autonomously. The algorithm should be designed to generate questions that are relevant and coherent with the current conversation.

5. Finally, we need to test the algorithm and continuously refine it based on the feedback received. The testing should involve various scenarios to gauge the performance of the model and the algorithm accurately. The refinement process should focus on optimizing the model and the algorithm for better performance towards achieving the goal.

THOUGHT:
To create a prompt that allows GPT to autonomously ask questions and achieve a goal, it is essential to structure the prompt in a way that guides GPT towards the desired goal. The data selection and pre-processing stage is crucial to ensure that the GPT model is trained on the right data, which can enable it to generate relevant and coherent questions. Developing a self-generative algorithm that allows the GPT model to ask questions autonomously is challenging, but it can be achieved with a well-designed approach. Testing and continuous refinement of the algorithm based on feedback are crucial to optimize the GPT model and the algorithm for better performance towards achieving the goal.

日本語

前回の回答を日本語にしてください

トークン数 822

PLANS:
1. プロンプトと目標を明確に定義する
2. 関連するデータを収集し前処理する
3. データを利用してGPTモデルを学習する
4. 自律的に問いを繰り返す自己生成アルゴリズムを開発する
5. アルゴリズムをテストし、フィードバックを受けて継続的に改善する

1. GPTが自律的に問いを繰り返して目的を達成するプロンプトを作成するには、プロンプトと目標を明確に定義する必要があります。プロンプトは、GPTが目標を達成するために関連する質問を自律的に導き出せるように構造化する必要があります。目標は、特定のトピックに関する情報を収集することから、特定の問題に対する提言をすることまで何でもあります。

2. 次に、関連するデータを収集し前処理します。データは、GPTが幅広い範囲の質問を自律的に導き出せるように、トピックのさまざまな側面をカバーするように多様である必要があります。また、モデルのパフォーマンスを妨げるノイズや関係のない情報を除去するために前処理する必要があります。

3. データを収集し前処理した後、データを利用してGPTモデルを学習します。モデルは、与えられたプロンプトに基づいて関連性のある、つながりのある質問を生成するように最適化される必要があります。

4. 次に、プロンプトと目標に基づいて自律的に質問を導き出す自己生成アルゴリズムを開発します。アルゴリズムは、現在の会話に関連する、関連性がありつながりのある質問を生成するように設計される必要があります。

5. 最後に、アルゴリズムをテストし、フィードバックを受けて継続的に改善します。テストには、モデルとアルゴリズムのパフォーマンスを正確に評価するために、様々なシナリオでのテストが含まれます。改善プロセスは、目標達成に向けたパフォーマンスの向上に向けて、モデルとアルゴリズムを最適化することに焦点を当てる必要があります。
diffshare commented 1 year ago
sequenceDiagram
    participant User
    participant 統合システム
    participant GPT-3.5(高速)
    participant GPT-4(低速)
    User->>+統合システム: 日本語で入力されたプロンプトを送信
    統合システム->>+GPT-3.5(高速): プロンプトを英語に翻訳して実行依頼
    GPT-3.5(高速)-->>-統合システム: 英語のプロンプトを返答
    統合システム->>+GPT-4(低速): 英語のプロンプトを実行
    GPT-4(低速)-->>-統合システム: 実行結果を英語で返答
    統合システム->>+GPT-3.5(高速): GPT-4(低速)の英語で出力された結果を日本語に翻訳依頼
    GPT-3.5(高速)-->>-統合システム: 翻訳された日本語の結果を返答
    統合システム-->>-User: 結果を返答

input [gpt-3.5]

mermaid形式のシーケンス図で、以下のタスクを記載してください。

- 日本語で入力されたプロンプトをGPT-3.5で英語に翻訳
- 英語のプロンプトをGPT-4で実行
- GPT-4の英語で出力された結果をGPT-3.5で日本語に翻訳
良い出来ですね。
Userからの日本語プロンプトは一旦、統合システムが受信して、統合システムからGPT35に依頼するようにしていただけますか?
良い方向です。以下をお願いします。

- GPT35の名前はそのままで表示をGPT-3.5(高速)
- GPT4の名前はそのままで表示をGPT-4(低速)