自分のScrapboxをChatGPTにつないだの話

  • サイボウズラボ勉強会 2023-03-24
  • 3/8に自分のScrapbox(ここ)をChatGPTにつないで、ChatGPTがこのScrapboxを参照した上で反応を返せるようにした
  • 「こういうことをしたかった、したい、知識がなくてできない」的な話がネット上で複数件観測されたので3/9に公開した
  • 使ってみた人、派生を生み出した人が複数人
  • 手軽に試せるようにこのScrapboxから使ったインデックスを共有したら、同じように共有する人が5人くらいいて仮想人格的に対話させたりブレインストーミングさせたりできるようになった

出力例

  • Scrapboxを参照していない場合
  • Kozanebaって何?

  • 回答できません。提供された情報が不十分です。

  • Scrapboxを参照した場合
  • Kozanebaって何?

  • Kozanebaは、デジタル文房具で、考えをまとめるためのツール。テストユーザ向けにはリリースされているが、まだ広くアナウンスされていない。開発者は、多くの人に使われることに価値を感じている。

  • 別の例
  • 盲点カードって何?

  • (参照なし) 盲点カードとは、自分が気付かない問題や欠点を指摘するために、他人が匿名で書いたカードのことです。

  • (参照あり) 盲点カードは、人間が自分の盲点に気づき、それを解消するためのプロセスをカードに分類し、問題解決に役立てるためのものです。物理的な特許文献を類型化したTRIZのようなものです。絵の描かれたカードと解説冊子をイメージしていましたが、トートバッグなどにも使えるように考えられています。

仕組み

  • 100行程度の2つのスクリプトmake_index.py(129)とask.py(63)でできている
    • 世の中的にはLlamaIndexとかLangChainとかが関連したライブラリだが、それを使ってやりたいことをやろうとするとコードが多くなるので使わないことにした
  • インデックスの作成
    • image
    • 適当な方法で文章を刻んで、OpenAIのEmbedding API埋め込みベクトルにする
    • この文章とベクトルの対応付けをベクトルインデックスと呼んだりする
  • 質問
    • image
    • 「質問」には限らないのだが呼び変えてもややこしいので「質問文」と呼ぶことにする
    • 質問文をEmbedding APIで埋め込みベクトルにする
    • そのベクトルとベクトルインデックスのベクトルの類似度を計算する
    • 似てる順で並べてプロンプトに入るだけ入れる
    • ChatGPT APIに投げて回答を作らせる
  • Q: ベクトルってどれくらいのサイズ?
    • A: 今のところ1536次元だけど、数に深い意味はない
  • Q: 類似度の計算って?
    • A: OpenAIのEmbedding APIは正規化されたベクトルを返すので、単に内積を取るだけでよい(コサイン類似度)
  • Q: 類似度計算の速度は?
  • Q: 規模と費用は?
    • 埋め込み
      • このScrapboxだと17,229,603 tokens
      • Embedding APIのコストは$0.4 / 1M Token
      • つまり7ドルくらい
      • 「コーディングを支える技術」を丸ごと埋め込んで$0.13
        • (このScrapboxが書籍54冊分ということに驚き…)
    • 質問回答
      • gpt-3.5-turbo $0.002 / 1K tokens
      • GPT3.5を使ってた
        • 4096トークンがcontext上限で、上限いっぱいまで使うコードを書いた
        • なので$0.008くらい
      • GPT4のAPIもその後リリースされた
        • 同じ使い方をするなら$0.15
        • 上限いっぱいまで使うとすると32K contextなので$1.98
          • これは「このScrapboxの関係ありそうなページを最低62ページ読んで回答」という挙動になる
          • エンジニアの知的生産術の文字だけのページで1000トークンぐらいなので「技術書の質問に関連ありそうなページを31ページ読んでから回答」が300円でできる
          • 正直、ほとんどのユースケースではそんなに読まなくていいのではと思う。
      • GPT3.5なら1円、GPT4でも25円で書籍のから3ページ読んで答えてくれる
        • そしてどのページを参考にしたか指し示してくれる
        • GPT4はまだまだ気軽に使うには高い
          • しかし1/10の値段になったらどうなるか?
          • APIを叩かずにローカルで無料で使えるならどうなるか?
          • この変化が1年以内に起きそうと感じる。
        • 今は個人的にはGPT4のAPIは使っていない
          • ChatGPT Plusの$20/monthサブスクリプションをしてる
          • 3時間あたり25回まで使えるからすぐにペイする

本質的にScrapboxには依存していない

  • 他の情報ソースに使ってみた人たち
  • 書籍
    • 「コーディングを支える技術」を読ませてみた
    • オブジェクトとは何か?

    • (GPT3.5) オブジェクトとは、現実世界の「モノ」の「模型」をコンピュータの中に作るための概念であり、プログラミング言語においては、データとそのデータを操作するための手続きをまとめたものとして表現されます。また、オブジェクト指向とは、このオブジェクトを中心にプログラムを設計する手法のことです。具体的には、オブジェクト同士の関係性を表現するクラスや、クラスから生成されたインスタンスを操作するメソッドなどがあります。

    • コーディングを支える技術 p.187~
    • image
    • image
    • (GPT4)オブジェクトは、プログラミングにおいて現実世界の概念や事物を表現するための構造です。オブジェクト指向プログラミングでは、オブジェクトはその事物の属性(データ)と振る舞い(関数やメソッド)を持ちます。オブジェクトは、クラスという設計図に基づいて作られるインスタンスであり、プログラムの中で操作され、異なるオブジェクトと相互作用します。オブジェクト指向の目的は、現実世界の問題をより自然に表現し、再利用性や保守性の向上など、コードの品質を高めることです。

    • 「元から知ってる知識」のウェイトが高まって「コーディングを支える技術」の要素がわからなくなっている
    • こういう「他にも書いてる文章がたくさんある概念」は自前でデータを読ませる必要はない
      • マイナーな造語を理解させられるのがこのアプローチのメリット :
Kozanebaの宣伝ツイートを作って

Kozanebaを使ってアイデアや情報を視覚化しませんか?🤔
🌟議論を整理
🌟ツイートのつながりを探索
🌟隣接するキーワードを発見
Kozanebaはあなたの知的生産を加速させるデジタル文房具です!✍️🚀
詳しくは👉 https://kozaneba.example.com
#Kozaneba #デジタル文房具 #アイデア整理 #議論の可視化

座談会

今後の発展について

  • 技術的にはグループウェア内の情報に対して同じことをやることは可能
    • ChatGPTにグループウェア内のあらゆる情報が送信されることに対する顧客の反発があるだろう、ここが問題
  • 前半のベクトル検索の部分はChatGPTと切り離しても有用
    • なので検索に特化した企業がそれを提供していく(Elasticsearchとかね)
    • だからアプリの企業はこれを自前でやっても優位性につながらない
    • やることは「ちゃんとつながれるようにしておく」ぐらい
  • ちょっとした便利機能を提供することは技術的には可能
    • たとえばkintoneのスレッドに「要約する」ボタンをつけるとか
      • 単にスレッドの内容に「要約せよ」と書き足してAPIを叩くだけ
      • ボタンを押した時だけ送信されるから「全部送信する」よりは反発少ないだろう
    • 足場が半年で揺らぐような状況で、長期的に顧客に提供する機能としてリリースするのかどうか、高速に壊れる機能のメンテに人員を割くかどうか
      • 技術とは違うレイヤーの判断だと思う
  • ChatGPT的なものとの結合としてはToolformer的なアプローチが長期的には魅力的
    • GPT-4.icon簡潔にToolformerについて箇条書きで説明します。
      • Toolformerは、言語モデルが外部ツール(検索エンジン、計算機、カレンダーなど)を使えるようにするモデルです。
      • 既存のアプローチには大量の人間の注釈が必要であったり、タスク固有の設定に制限されることが多いため、Toolformerは異なるアプローチを提案します。
      • ツールの使用は、大量の人間の注釈を必要とせず、自己教師付きの方法で学習されるべきです。
      • 言語モデルは、どのツールをいつ使うかを自分で判断できるべきです。
      • 大規模な言語モデルとインコンテキスト学習を利用して、APIの使用例を生成し、モデルにAPI呼び出しを学習させます。
      • 自己教師付きの損失関数を使用して、どのAPI呼び出しがトークン予測に役立つかを判断します。
      • 有用だと判断されたAPI呼び出しで言語モデルを微調整します。
      • Toolformerは、ツールの使用を学習した後、ゼロショットでさまざまなタスクにおいて優れた結果を達成します。
    • つまりAIにグループウェアの使い方を教えるということ
      • 必要に応じてグループウェアを操作して情報を引き出して、それを読んで判断する
      • どういう操作をしたいかという情報がマイクロフォーマットで回答文に埋め込まれている
      • image
    • グループウェアに「AIのアカウント」があって、メンションやDMでやり取りできる未来
      • 「チャットの見た目」だとユーザを1分待たせることがしにくいがグループウェアの通知の見た目だと「AI社員」に作業をお願いして、10分後に仕上がってくるのでも許容できそう
      • 用途によって速いリアクションが欲しいものとそうでないものがある
    • 現状でも「こういうことをしたいんだけど何を検索すればいい?」と聞けば検索キーワードが出てくる。これを進歩させて、機械的に扱える形で出力させる
        • nishio.iconメルロポンティとポランニーの関係についての考察を書こうと考えています。参考にする文献を見つけるためのキーワードをいくつか提案してください
        • GPT-4.iconメルロポンティとポランニーの関係について調査する際に参考になるキーワードを以下に示します。これらのキーワードを使用して、関連文献や論文を検索することができます。 - メルロポンティ(Maurice Merleau-Ponty) - ポランニー(Michael Polanyi) - 知覚(perception) - 知識の個人性(personal knowledge) - 存在論(ontology) - 認識論(epistemology) - 体験(experience) - 身体性(embodiment) - 知の根源(origin of knowledge) - 知識の構造(structure of knowledge) - 知識の暗黙性(tacit knowledge) - 知識の社会性(social dimension of knowledge) - 直観(intuition) - 言語(language) - ジェスチャー(gesture) - 意味論(semiotics) - 目的論(teleology)
          • これらのキーワードを用いて、メルロポンティとポランニーの哲学的思想や彼らの関係に関する文献や研究を見つけることができます。また、彼らが関連する哲学的伝統や、他の哲学者(例えば、ハイデガーやハッサール)との関係性についても調べることができます。
        • こうやって出てきたキーワードで検索をして、その情報を元に要約をしたりするとBing AI的になる
        • この検索対象をインターネットではなく社内グループウェアにするのが最初の一歩か
    • 現時点ではLangChainのagentが近そうだが、半年後にこれがデファクトスタンダードになってるのか崩壊してるのか判断つかない
      • 一般的には地面が固まってない時に多種多様な要望を受け入れて肥大化したフレームワークは、耐震工事が困難になって地震で崩壊することが多いのだけど、After GPT-4の世界においてはGPT-4が改修工事を支援してくれちゃうかもしれない
      • そういう意味では「最もGPT4を使いこなしてる人たちによるソフトウェアプロジェクト」として注目に値する
      • 使う場合は地面との間に何が挟まってるのか理解して使うべき
  • 現状はChatGPTが話す相手が「主に人間である」という想定なわけだが、間に機械が挟まってマイクロフォーマットで書かれたコマンド列を読むのであれば、いっそ「人間に対して表示するコマンド」を用意したらいいよね、って近い未来になる
    • 文法の定義された人工言語の方がLLMにとって容易
  • image
    • これ、ある意味オペレーティングシステムでは?
    • しばらくの間、この中間システムの操作のための言語やAPIはまちまちで乱立するだろう
    • そしてしばらくしてからデファクトスタンダード(C言語に相当するもの)が生まれる
  • あれ?人間は周辺機器の一つに過ぎないのか?
    • image