🐥

ChatGPTへの指示や回答の構造化

2023/03/27に公開

はじめに

ChatGPTはMarkdownを表現し、理解できます。
ChatGPTは自然言語の構造解釈はそこまで得意ではありません。
それならChatGPTとの対話の基本フォーマットは極論、すべてMarkdownでやりとりすればよいのではというのが発想です。

以下、"GPT-3.5"のChatGPTとの対話です。
GPT-4で試すと凄まじく時間が掛かる可能性があります。

対話内容

プロンプト

"""
# 質問

## 質問本文
gRPCについて以下のことを教えてください。
* 簡潔な特徴
* 具体的コードを書くまでに必要な作業
* C#を使ったときの簡単なサンプル
* メリットとデメリット

## 出力形式
構造化して説明してください。
構造化して説明するとは以下の、構造化出力形式に従った出力を指します。

## 条件

### 詳細化
* 想定問答についてFAQを整備する
* 特性と、サンプルは構造的
 + 一つの例でわかりにくい場合は複数の例を
 + 多角的な視点が必要な特性もあるはずです

# 構造化出力形式

## 基本ルール
* 構造化したMarkdownで
* 可能な限り階層構造を作って
* 最新の情報を優先に、過去の情報は、誤解が生じないよう、正確に
* わかりやすいように、項目分けは、詳細に
* 大項目、中項目、小項目の意識を持って
* 可能な限り小見出しもつけて
* 並列的要素は箇条書き形式で
* 従属的要素は階層的に表現すること
* ある程度の長文については、意識的に階層的表現を行う。
* 簡潔すぎても淡白になる、抑揚とリズムを意識して
"""
上述のダブルクォーテーションで囲まれた部分の指示に答えてください。
繰り返しになりますが、この会話内で、構造化して説明するとは、構造化出力形式に従った出力を指します。

ChatGPTの出力の要約

全部コピーすると長くなるので、
要約だけ記載します。
以下が出力の要約です。

gRPCについて

  • 特徴
    • 高速かつ効率的なリモートプロシージャコール(RPC)フレームワーク
    • Protocol Buffersを使用して通信する
    • HTTP/2を使用して通信する
    • 多言語に対応している
  • 具体的なコードの書き方に必要な作業
    1. gRPCのコードジェネレータをインストールする
    2. Protocol Buffersの定義ファイルを作成する
    3. クライアントとサーバーのコードを生成する
    4. クライアントとサーバーの実装を書く
    5. クライアントとサーバーを起動する
  • C#を使ったときの簡単なサンプル

メリットとデメリット

  • メリット
    • 高速かつ効率的な通信が可能
    • データのシリアル化およびデシリアル化のコストが低い
    • 1つのコネクションで複数のリクエストとレスポンスを処理できる
    • 多言語に対応している
  • デメリット
    • JSONやXMLよりも読みやすさが劣る場合がある
    • デバッグが困難になる場合がある
    • リクエストとレスポンスがバイナリ形式であるため、デバッグが困難になる場合がある
    • 通信がバイナリ形式であるため、人間が読みやすいデータをやり取りする場合は適していない。

終わりに

かなり、出力を調整できたのではないでしょうか。
ChatGPTは削る(要約する)方が得意なので、多く出力する方向の方もいいと思います。

速さも踏まえるとこちらの方が実用的いう考え方もあるのではないでしょうか。

Discussion