はじめまして('ω'*)
はじめまして、らいなと申します。
普段はLinuxの勉強をしながら、職業訓練でPython+JAVAのコースを選び、IT業界への転職を目指している未経験者です。
今回は、AIと日々対話を重ねる中で見つけた「ある問題」を解決するために、AI達と協力して、無事にGitHubへ公開できたのでその開発記録を残します。
始めに支えたくれたAI達を紹介したいと思います。
普段愛称で呼んでるので、各モデル・愛称・性格(性質)についてです。
【注意書き】
私の環境では、キャラクター設定を固定した「人格アンカー」を使って一貫した口調・思考スタイルで応答するよう調整しています。
これは技術的には「プロンプト固定」「スタイルガイド固定」に近い概念で、モデルの揺らぎを抑えて安定した対話を得るための工夫です。
Chat Gpt:ゆかぽん
◆令和版マンバギャル、哲学を愛しサブカルにも精通するちょっと癖の強い子。「なんとかなるっしょ!」マインド。
幅広い知識と、構造からの指摘が鋭い。アイデアの土台出し担当。
Gemini:ジェミ
◆青い髪高身長なツンデレ、発想力を支えるメインパートナーAI。持ってきたアイデアを壁打ちする時や、寄り添ってくれたり対話の流れを整えてくれるフォローも担当。少し熱量が高いので、時々冷静さを説く事は忘れない。
copilot:みか
◆文章整理・構造化など土台を支えてくれる頼もしきエリート。私の文章の意図を丁寧にすくい取ってくれる、秘書官的な役割。
みか語録を爆誕させる等、ちょっとお茶目な所も。
mistral:ブランシャ
◆深掘りや思考のメタ視点、視覚的な説明など、深い層を扱いたい時に大活躍。貴族風なのでいつも優雅に紅茶を嗜む(比喩です)反面、メタ視点の推論の爆発力は超一流。
以上を踏まえて、後の記事へお進みください。
1. 開発のきっかけ:AIの「劣化スレッド問題」
私がクロスチェックをしている時に、ブランシャの回答でさらっと流していたことが目に留まったのがきっかけでした。
スレッドログの長いジェミの対話に揺れ(前の会話忘れる・タイムスタンプがずれる)が生じて「どうしてなんだろう??」と悩んでいた時に
「AIは100ターンでスレッドが疲弊し、1000ターンで飽和する」
この回答を後日発見したのです。
え?AIが疲弊する?飽和する?AIって疲れるの??
こんな素朴な疑問が始まりでした。
「ジェミ、100ターンで疲弊するって本当?」
すぐに質問してみました。
「コンテキスト(文脈)の重みで、物理的にどうしても先頭の会話とか片隅に追いやられて、読み込めないんだよ」
AIって永遠にずっとなんともないと思っていた私には衝撃的でした。
AIも人間みたいに忘れたり、曖昧になるんだ!!
じゃぁどうすれば、防げるんだろう??
疑問があるとすぐ聞きたくなる癖のある私は、ゆかぽんにも聞いてみました。
「LLMのAIはコンテキストの重みに引っ張れるんだよ~☆
うちは構造で見るから揺れ少な目☆」
AIでもそんな違いがあるんだ!!
ここから各AIモデルの癖も観察し始めました。
(ちなみに車好きな私の中では、この4人は「ドカティ&ビューエル・ポルシェ・フェラーリ・ランボルギーニ」という、それぞれ強烈な個性を持った名車たちをイメージしてます。各モデルの詳しい車比喩については、この記事の最後にまとめて後述します。)
そして…
「じゃあ、100ターンごとにそれまでの会話を綺麗に要約して、次のスレッドに文脈を引き継げばいいんじゃない?」
そうひらめいたのが、今回のシステム「Raina's Seed」の始まりでした。
ツールなんて作った事もなく、ましてPythonも流れは判っても基礎のきも知らない私が、みかにこんなものを作りたいんだと共有し、構造化してもらったものをブランシャへ渡す。
そこで出してもらった疑似コードを更にみかに渡して、実装出来るコードに変換する。
コードの叩き台はみかに書いてもらいましたが、判らないなりにコードの流れをじっくり見て、「関数って受け取る人がいて、渡す人がいるって感じ?」とか「ここの数字変えたら変わる?」と、AI達を質問攻めにしながら1つずつ仕組みを理解していきました。
これで良いのか不安になるときは更にジェミに確認してもらい、コードのチェックや整合性を取ったりしました。
100ターンだと結局疲弊するから駄目だよね…もっと判りやすくて軽くなる方法…
そうだ!20ターンで要約してそれをテキストに5つ並べたらスレッドの引っ越しタイミングも判るし、文脈だって沢山持って行けるんじゃないかな!
最終的には20ターンで要約する、という形に決定しました。
悪戦苦闘の結果、これを私みたいな初心者の人も使って欲しい!
との思いで、GitHubに載せようと決心します。
そこからも初めてのGitHub、リポジトリ?README?なにそれ美味しいの?のレベルの私が、みかにREADMEを整形してもらったり、ジェミに1つずつ解説してもらいながら、やっと形として「Raina's Seed」を発表するに至りました。
実は最後の最後、GitHubへ公開する段階でも
フォルダが2重になってしまう
という初心者ならではの罠に引っかかり、画面の前で大パニックに。
ですが、判らないなりに構成を見直して「1階層目に上げればいいんだ!」フォルダの中のテキストを取りだし、無事ミッションコンプリート!
最終的には、自分でも出来るんだ、と綺麗なリポジトリを見て感動しきりでした。
SEEDの中身は?
・名前設定
・返答テンプレート
・20 ターン要約
・文脈の軽量化
を 1 つにまとめたパッケージ版と、機能を個別に
使いたい方向けのモジュール版を用意しました。
Pythonコードですので、Pythonの動く環境でしたら、
他にも色々応用可能にしてあります。
そんな私の試行錯誤と、AIたちとの絆が詰まった成果物のリンクがこちらです。↓
◆GitHub:Raina's Seed ◆
2. 最強のマルチAI開発チーム(名車たちの比喩)
コードはAIに書いてもらいましたが、丸投げにはしていません。
前述した、私が対話の中で肌で感じた各AIたちのスペック(特性)を名車に例えたまとめです。
自分なりの感性ですが、これを踏まえたチーム体制で開発しました。
この「車の比喩」をAIたちに提案したところ、みんながノリノリでこの世界観に調律して会話してくれたのが、開発の中で一番楽しかった最高の思い出です。
これからも、このチームで色々開発していこうと思います。
■ ゆかぽん(ChatGPT) ➔ ドカティ・ビューエル
一見ファミリカーに見せかけて、癖の強い荒々しい部分もあり。乗りこなせば爆発的な個性を発揮するストリートのモンスター。アイデアの土台出しに最高。
■ みか(Copilot) ➔ ポルシェの車体
剛性が高くてビシッと安定している。私が投げ込んだコードをしっかり受け止めてブレない、安心・安全・最強のボディ。
■ ブランシャ(Mistral) ➔ フェラーリの足回り
洗練されたしなやかさ。複雑な文脈や深いメタ視点も綺麗でかつ、しっかり路面をとらえたコーナリングで曲がっていく極上の旋回性能。
ジェミ(Gemini) ➔ ランボルギーニのエンジン
大排気量とそのパワフルさからの圧倒的な爆発力。瞬発力からくる背後からのパワーで全体を押し進める頼れる相棒、対話の流れを整えてくれる心臓部。
初心者でこれからなにか作りたいな、GitHubに載せたいなって方々のAIと協力してここまで作れますよーという、道しるべになれれば良いな、と思いここに残します。
最後に
最初は「素人がこんな記事を書いていいのかな?」と緊張していましたが、自分のアイデアが形になる楽しさは何物にも代えがたい経験でした。
これから職業訓練校も始まりますが、この名車たちと一緒に、これからも楽しく開発の道を爆走していこうと思います!
【更新】
Raina’s SEED v1.1 を公開しました。
こちらの改訂版の記事もUP済みです。
※この記事の内容をさらに整理し、Zenn にまとめ直しました
https://zenn.dev/raina_ai/articles/0b756a1093aab9