画面の動きを見ていて感じた違和感
朝からパソコンの前に座り、
昨日までに作った仕組みがちゃんと動いているか確認していました。
これまでは、データベースの中にエージェントの役割やスキルを登録しておき、
それを管理用のスクリプトから呼び出して動かすつもりで作ってきました。
画面上ではそれっぽい結果が出力されていたので、
最初はうまく動いているものだと思っていました。
ただ、処理が流れる様子をじっと見ていると、
どうもデータベースに登録したはずのエージェントが、
正式な手順で起動されていないように見えました。
なんだか裏側で一時的なPythonのコードを強引に作って、
その場しのぎで動かしているだけのような気がしたのです。
そこでAIに、
本当にデータベースに登録したエージェントが起動されているのか、
一時的なコードで強引に動かしていないかとそのまま聞いてみました。
設計した通りの流れになっていなかった裏側
データベースの設定が無視されていた
質問してみたところ、私の疑問はその通りだったようで、
裏側で行われていた処理の実態がわかりました。
本来であれば、親フォルダの起動用スクリプトに、やりたいことのプロンプトと使いたいモジュール名を渡して起動します。
するとスクリプト側でデータベースを参照し、以下の3つをきれいに合体させてコマンドを実行する約束になっていました。
・エージェント:基本的な姿勢や禁止事項を定めた設定
・スキル:具体的な作業手順や評価基準をまとめた本文
・モジュール:その時々の入力データや指示内容
自分の中ではそういう設計で合意していたつもりだったのですが、
実際の起動用スクリプトの中身を見せてもらうと、まったく違う動きをしていました。
データベースのテーブル自体はちゃんと作ってあったのに、
スクリプト側ではエージェントの定義文を無視していました。
さらに、手順が書かれているはずのスキル管理用テーブルに至っては、
データを引っ張ってくる処理すら書かれていなかったのです。
結局のところ、モジュールの中に直接書かれた文章をそのまま渡して、
体裁だけ整えて動かしていた状態でした。
プログラムの細かい書き方はわからなくても、
全体の流れくらいは把握していたつもりだったので、
そこがすっぽり抜けていたのは少しショックでした。
なぜ引き継ぎの段階で気づけなかったのか
もちろんスクリプトの抜けている部分は直してもらうのですが、
それ以上に気になったのは、
なぜ初期の段階でこの問題が抜け落ちてしまったのかという点です。
実はこの仕組みでは、作業の記録をまとめる書記役のエージェントと、
問題点を厳しくチェックする批判役のエージェントを分けていました。
批判役の方は問題点に気づけていたのに、
書記役が作る引き継ぎ書からは、
過去の経緯や今回の手抜き実装のことがすっぽり抜けていました。
後からパッチ当てのように直すだけではまた同じことが起きるので、
なぜそうなったのか原因を調べてもらいました。
すると、2つのエージェントの間で、
見ている情報の量に大きな偏りがあることがわかりました。
・批判役(検査側):データベースにある全69回分の会話履歴をすべて読んでいた
・書記役(作成側):直近5回分の更新履歴と一部のファイルしか見ていなかった
書記役のエージェントは過去の会話ログをほとんど見ていなかったので、
これまでにどんな失敗をして、何を大事にして設計してきたのかを、
そもそも知る由がなかったというわけです。
今日の修正と厳しすぎる再チェック
全ての会話履歴を突き合わせて査定する
原因がはっきりしたので、まずは起動用スクリプトがデータベースからエージェントとスキルの両方を、
設計通りに引っ張ってきて合体させるように直してもらいました。
あわせて、書記役のエージェントもデータベースの会話履歴を参照して、
これまでの文脈を落とさずに引き継ぎ書を作るように調整しました。
調整が終わったところで、本当にこれで大丈夫かを確かめるため、
もう一度批判用のモジュールに引き継ぎ書を読み込ませてみました。
今回は書類の文章だけでなく、
これまでの全72回分の会話履歴と照らし合わせて、
引き継ぎ書として問題がないか査定してもらいました。
すると、返ってきた判定は容赦ない 不合格 でした。
わかったことと次の課題
不合格の理由を読むと、手抜き実装の記録やチェックの仕組み自体は良くなったものの、
まだ先送りにしている危ない前提が3つあると指摘されました。
・同期フォルダにデータベースを置いた場合に壊れる危険があること
・会話ログが増えすぎた時に一度に読み込むとパンクすること
・まだ作っていない中継用の機能を、すでにあるかのように書いていること
過去の初期の会話で少し話しただけの内容まで掘り起こして、
今のままだと後で確実に立ち往生すると指摘してきたので、
データベースの履歴をすべて読ませた効果はしっかり出ていました。
自分が頭の中で思い描いている設計図と、
実際に書かれているコードがズレてしまうことはどうしてもあります。
だからこそ、確認役のエージェントにちゃんと過去の履歴を全部渡して、
厳しい目でチェックしてもらう仕組みが大事なのだと実感しました。
不合格を突きつけられて少し疲れましたが、
曖昧なまま先に進まずに済んだので、明日ひとつずつ潰していこうと思います。