avatar
tkat0.dev
Published on

ChatGPTについて調べた

Table of Contents

誰も彼もが ChatGPT って言ってるので、面白さを理解したく調べてみました。 個人用メモです。誤りを含む可能性が高いです。随時更新される予定です。

ChatGPT とは

  • https://openai.com/blog/chatgpt
  • 対話ができる(質問や命令)
  • ベースになる技術
    • GPT-3 (2020): 膨大なテキストで学習された fine-tune 不要の言語モデル
      • Generative Pre-trained Transformer (GPTn)
    • InstructGPT (2022): 正確な文章生成のため Reinforcement Learning from Human Feedback (RLHF)
    • 上記ベースに学習した GPT-3.5 に人間の対話データで fine-tune

Limitations/Issues

利用形態

ChatGPT API

https://platform.openai.com/docs/guides/chat

curl https://api.openai.com/v1/chat/completions \
 -H "Authorization: Bearer $OPENAI_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
 "model": "gpt-3.5-turbo",
 "messages": [{"role": "user", "content": "What is the OpenAI mission?"}]
 }'

{
  "id": "chatcmpl-6p5FEv1JHictSSnDZsGU4KvbuBsbu",
  "object": "messages",
  "created": 1677693600,
  "model": "gpt-3.5-turbo",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "OpenAI's mission is to ensure that artificial general intelligence benefits all of humanity."
      }
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 18,
    "total_tokens": 38
  }
}
  • プロンプトは、モデルの種類やバージョンによって後方互換がない可能性がある
    • テストどうやるんだろうか
  • ステートレスな API なので、過去の対話もリクエストに含める
  • role は system, user があり、GPT4 では system がうまくはたらく
  • temperature などいくつかパラメータがあり、振る舞いを制御できる
    • Playground で試すのが理解する上で早い
  • fine-tune
  • Moderation
    • https://platform.openai.com/docs/guides/moderation
    • chatgpt に投げる前に叩く別 API で、コンテンツのカテゴリ認識(hate, violence など)
    • OpenAI の利用ポリシーに準拠しているかチェック
    • 英語以外の言語は限定サポート
  • API データ利用
    • https://openai.com/policies/api-data-usage-policies
    • 原則、API 経由のデータはモデルの学習に利用されない
    • 不正使用の監視目的で最大 30 日保存後、削除
    • ユースケースでの精度を上げたい場合、データを共有することもできる
  • Rate limits
    • https://platform.openai.com/docs/guides/rate-limits
    • RPM (requests per minute) and TPM (tokens per minute)
    • エラーハンドリングで backoff するといい
    • RPM が制限超えやすく TPM は超えにくい場合、バッチリクエストする選択肢もある
    • rate limit increase できる(10 日くらいかかる)
  • Safety best practices
  • Production best practices

応用プロダクト

ChatGPT 以外も含む

機能のアイディアというより、プロダクトとしてどう設計 → テストのサイクルを回そうとしているかのノウハウが知りたい。

その他応用

どのようにプロダクトに応用するのか

所感ではあるが、リスクを回避して応用するには、制限はあるが以下がファーストステップとしては安全に思える。

  • ユーザー入力の自然言語を直接 ChatGPT に渡さない
    • ユーザーにはフォームやボタンを提供し、その入力から事前に用意したテンプレートをベースに ChatGPT への入力を作る
    • 自然言語を渡したい場合でも、Moderation API や何らかのロジックでフィルタリングを行う
  • ChatGPT の出力を直接ユーザーに返さない
    • なんらか機械的なフォーマットとして出力させて、なんらかのロジックを通してクライアントに返すのが良さそう
  • 過去の対話をどれくらい持たせるか
    • 増えるほど、予想が難しくなると推測されるので、開発時のテストを考えても、できるだけシンプルにしたほうが良いのではないか

UI デザイン

プロンプトデザイン

いろいろな tips があり、プロンプトデザイナーを名乗るような人もいるようだ。 頑張っている人が色々発掘してくれているので、それを待てばいいかなという感じ(自分でこの試行錯誤はあまりしたくない)

Alternative

どう ChatGPT と接するか

フィーリングが変わりそうなので、日付ごとにメモしておく

  • 3/12
    • 技術としてすごいが、一定距離をおいていたい
    • 自身がソフトウェアエンジニアとしてできることは、プロンプトエンジニアリングだったり、個人の嗜好とは異なる
    • システムデザインだったり実装だったり、一般的なソフトウェアエンジニアリングをやっていたい
    • 期待値が異常に高く、変化が早く、参入している人が大勢いるので、振り回されそう
    • 誰かのアイディアを如何に安全にプロダクトに組み込むかみたいなことは面白そうではある

その他

References

どのように調べるか。