kAIgi
AI 同士が喋るだけの仕組みを作ったらだらだら見れる / 聞けるんじゃないかと思って最近色々触ってた。
https://github.com/sat8bit/kaigi
毎日進捗毎にメモとればよかったんだけどバーっと作ってしまったので、やってきたことと各タイミングのメモを残す。
1. とりあえず複数人で会話する
まずは複数人で会話するところから作った。 LLM は gemini を使っている。
最初の時点で決めていたのは、
- 1つの LLM で会話を生成するんじゃなくて、複数の LLM を使ってそれぞれでコンテキストを持って会話を生成すること
- 人格を定義すること
いざ雑談してください、で始めると、なんか毎回カフェでコーヒーがおいしかった・・みたいな会話が続く。 それはそれで面白いんだけど、よく考えたら LLM はあくまで言語モデルなのでそれらしい文章作るだけだよなぁという感じ。理解あってないかもしれない。
リケオという理屈っぽい人格が面白かった。今消しちゃったけど同じような人格をまた作りたい。
2. 話題を与える
引数で会話の話題を与えてみた。ログは残ってない。
なんかイマイチ中身はないけどそれっぽい会話が続く。◯◯について話してください、の指示だけでそもそも知識が足りないのでそうなる。
ただカフェでコーヒー飲む話よりボキャブラリーが増えたので、最初の雑談よりは面白かった。
3. hugo で吐き出せるように markdown に落とす
LLM を叩きまくるのでまぁ高くないとはいえお金がかかる。なんか Console で垂れ流して終わるのもったいない気がしてきたので Markdown で吐き出せるようにして、 hugo に食わせて pages 化することにした。
https://sat8bit.github.io/kaigi/
別に内容が現時点で面白いわけではないんだけど、色々やっていったときに初期の頃はこうだったよな、みたいに見返せると良い。
4. 話題・・・?
話題を与えられるようになったが、今度は話題を与えるのが面倒になってきた。話題を生成AIで生成しようと思ったけど、限界はあるし同じ話題もあがりそう。
そこで RSS で最近の話題と内容の一部を与えるようにして、 GitHub Action から動かすように設定した。 明確に以前の話題を与えるだけよりコンテキストが増えたので、よりそれっぽい感じにもなった。
元は3記事ぐらい渡してたんだけど、結局1個目の話題に固執して話し続けるので一旦1ネタを元に会話を作る。こなれて来たら話題が薄まっていって別の話題にいく、みたいなのが作れるといいなと思っている。
1日2個ぐらい記事が増えてくはず。
人格
いっとき人格を一回50人ぐらいまで増やしたんだけど、その結果毎回知らない人格が現れるので以下の問題が発生した
- なんか本当に毎回知らんやつが話してるだけになってしまった
- 会話がなりたつ人格がいればいいんだけど、クセがすごい人格だけになると支離滅裂すぎて会話にならない
ということで、まずは3人の人格でやっていく。見慣れてきたら増やしていきたい。
人間関係
仲が良いとか苦手とかそういうのが相まみえると良いかもしれない。
人間らしく、とまでは言わないけど毎回の会話内容を元に相手に対してどんな感情を持っているか、というのを commit していき、会話の前に相手に対する感情を Context として渡すことでちょっと苦手になっていったり、喧嘩したりが見えると面白いと思う。
Gemini Code Assist
もともと Copilot を使いながらコードを書いていたけど、この kAIgi を作るにあたってGemini Code Assist の Agent(Preview) を使って開発してみてる。すごい便利。動かないコード出すことも多いけど。
その他
2年前のログ見たら ChatGPT と Stable Diffusion で人作り出そうとしてた。なんか同じことやってない?