- 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
 
- GPT-3 (2020): 膨大なテキストで学習された fine-tune 不要の言語モデル
Limitations/Issues
- 正確さ・信頼性- もっともらしいが間違えていることもある
- ChatGPT と人間の文章「Z 世代が最も騙されやすいと判明」 - ナゾロジー- ほんまか
 
- 入力の書き方で回答が変わる- リフレーズすれば答えられることも
 
 
- 倫理- 倫理に反する回答をすることも(Moderation API でブロックしてはいるらしい
 
- 著作権- Web のコンテンツも学習に用いているので、ChatGPT の回答が著作物の可能性もある- ライセンスを学習時に扱っているかどうかわからない?
 
- https://twitter.com/_mono/status/1637023522747994112
 
- Web のコンテンツも学習に用いているので、ChatGPT の回答が著作物の可能性もある
- 業務利用で情報流出の危険性(普通に利用者が悪い)
- プロンプトインジェクション攻撃
- DAN (Do Anything Now) or Jailbreak- https://gist.github.com/coolaj86/6f4f7b30129b0251f61fa7baaa881516
- 指示によっては、制限なく回答を得られてしまう
 
利用形態
- ChatGPT
- ChatGPT Plus
- ChatGPT API- Introducing ChatGPT and Whisper APIs
- 1000 tokens/$0.002
- gpt-3.5-turbo
 
- Azure OpenAI Service – Advanced Language Models | Microsoft Azure- gpt-3.5-turboはまだ利用できない?
- Azure OpenAI Service とは - Azure Cognitive Services | Microsoft Learn
 
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- https://platform.openai.com/docs/guides/fine-tuning
- 特定のユースケースのデータで fine-tune できる
- 入力をへらすことができ、コストやレイテンシの削減
- gpt-3.5-turboは 2023/3 現在非対応
 
- 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 app for Slack- ChatGPT app for Slack を発表 | Slack
- 会話の要約、調査ツール、文章作成支援
 
- Discord、ChatGPT と同じ技術採用のチャット bot「Clyde」や会話要約機能などを発表 - ITmedia NEWS
- Notion AI- ChatGPT ではない
- Notion AI を正式リリースしました!
- 要約、文章の改善、など
- 新規作成より、書いた文章の編集によく使われている- 文章をワンクリックで良くする。納得するまで何度も改善できる UI
 
- $10/month
 
- 文字起こし・議事録
- GrammarlyGO | Grammarly
- 「ChatGPT」搭載「Bing」について知る--ChatGPT よりも強力な大規模言語モデルを採用 - ZDNET Japan
- Education
- Shopping assistant
- プログラミング- From conversation to code: Microsoft introduces its first product features powered by GPT-3 - Source
- Integrating ChatGPT with FlutterFlow: A Step-by-Step Tutorial- これは単に FlatterFlow で ChatGPT を利用した UI を作れるだけ
 
 
- ChatGPT 相当の言語モデルを利用したチャットボットをプログラム不要で構築できるツールが登場 - GIGAZINE
- Helpfeel Generative Writer
その他応用
どのようにプロダクトに応用するのか
所感ではあるが、リスクを回避して応用するには、制限はあるが以下がファーストステップとしては安全に思える。
- ユーザー入力の自然言語を直接 ChatGPT に渡さない- ユーザーにはフォームやボタンを提供し、その入力から事前に用意したテンプレートをベースに ChatGPT への入力を作る
- 自然言語を渡したい場合でも、Moderation API や何らかのロジックでフィルタリングを行う
 
- ChatGPT の出力を直接ユーザーに返さない- なんらか機械的なフォーマットとして出力させて、なんらかのロジックを通してクライアントに返すのが良さそう
 
- 過去の対話をどれくらい持たせるか- 増えるほど、予想が難しくなると推測されるので、開発時のテストを考えても、できるだけシンプルにしたほうが良いのではないか
 
UI デザイン
- Bing チャットに 3 つのキャラ設定。「独創性」と「厳密」の違いとは? | ギズモード・ジャパン- 3 種類のボタンで、temperature やプロンプトなどを切り替えているのだろう
 
プロンプトデザイン
いろいろな tips があり、プロンプトデザイナーを名乗るような人もいるようだ。 頑張っている人が色々発掘してくれているので、それを待てばいいかなという感じ(自分でこの試行錯誤はあまりしたくない)
Alternative
- Google / Bard
- Baidu / ERNIE Bot
- Salesforce も企業向け生成系 AI「Einstein GPT」発表 OpenAI の「ChatGPT」採用 - ITmedia NEWS
どう ChatGPT と接するか
フィーリングが変わりそうなので、日付ごとにメモしておく
- 3/12- 技術としてすごいが、一定距離をおいていたい
- 自身がソフトウェアエンジニアとしてできることは、プロンプトエンジニアリングだったり、個人の嗜好とは異なる
- システムデザインだったり実装だったり、一般的なソフトウェアエンジニアリングをやっていたい
- 期待値が異常に高く、変化が早く、参入している人が大勢いるので、振り回されそう
- 誰かのアイディアを如何に安全にプロダクトに組み込むかみたいなことは面白そうではある
 
その他
- プロンプトエンジニアリング- 呪文、とも
- ChatGPT に限らず、画像生成や文章生成の Generative AI への指示出しのテクニック(エンジニアリングなのか?)
- 入力を工夫することでタスクの精度を改善する方法
- dair-ai/Prompt-Engineering-Guide: Guides, papers, lecture, and resources for prompt engineering
 
References
どのように調べるか。
