Repository Explorerに想定質問を投げてみる

まだまだ調整の余地の多いRepository Explorerです。

これは世間で言われているAIエージェントに相当するもので、ZIKUUのソフトウェアリポジトリを舐めて調査をしてくれるツール。

システムが完成しが後、私以外の人がシステムを運用、拡張、デバッグ、修正などを行う際に人間を補助するのが目的で作られています。

開発者である私自身にとっても、ZIKUUのシステムは、すでに記憶を頼りに把握できる規模を越えていますから、他の人がZIKUUのシステムを扱うときには、こういうツールがなかったらちんぷんかんぷんです。

作った人しか(作った人でも)わからないブラックボックになってしまうと、システムの継続性を失うので、それだけは避けたい。

ソフトウェア開発の現場では、そんな経験をしている人は多いはず。

そんなときに想定される質問を投げて調整を続けていきます。

例えば、LLM Brokerというソフトウェアは、LLM呼び出しを行う時の交通整理をしてくれる抽象化されたLLMプロバイダー中継機です。現時点ではllama.cppサーバーとOllamaに対応しています。

このような質問を投げてみました。

LLM Brokerのchatメソッドを拡張してプロバイダーを追加する方法を示して。

llama.cppやOllama以外のLLMプロバイダーを使いたい、どこから手をつければ良いか、を訊いています。

その回答がこれ。

適切な回答が返ってきているように思います。

回答部分を読みやすく整形したものがこちら。

Repository Explorer:backend/app/llm_broker_client.py lines 4-44 に示される LLMBrokerClient の generate_text は、設定された profile を HTTP POST で /v1/chat に送る。

LLM Broker の実装は backend/app/main.py で FastAPI ルートを定義し、app.backends.base.LLMBackend を継承したクラスをインポートしている。実際のチャット処理は backend/app/backends/llamacpp.py と backend/app/backends/ollama.py の chat メソッドで行われている。
したがって、新しいプロバイダーを追加するには、次の手順を行う。

1. backend/app/backends/ 直下に新しいクラスを作成。

例:`class MyProviderBackend(LLMBackend):
async def chat(self, *, profile: ProfileConfig, messages: list[ChatMessage], temperature: float | None):
...` で Ollama や LlamaCpp と同様に HTTP POST を実装。

2. backend/profiles.yaml に新しい profile を追加。

例:
```yaml
my_provider:
backend: myprovider
base_url: http://my.provider:11434
model: my-model
temperature: 0.5
timeout_sec: 120
```
3. backend/app/main.py の import 文に `from app.backends.myprovider import MyProviderBackend` を追加し、FastAPI ルートで `MyProviderBackend` を使用する。

4. LLMBrokerClient から呼び出す際は、環境変数 `LLM_PROFILE=my_provider` を設定するか、`LLM_BROKER_PROFILE` を変更して profile 名を指定する。

この手順で、LLM Broker の chat メソッドは新しいプロバイダーを選択して処理できるようになる。

画面には、UnknownsとNext Actionsという項目があり、Unknowsには、根拠不足で断言や明言ができない点について書かれます。Next Actionsには、追加調査の提案が書かれます。

最終的には、この回答を起点に、深堀りしたり、根拠対象を広げたりといった操作を繰り返して、その過程を記録することになると思います。そうすれば、調査の履歴が残って、先人がどのように調べたかがわかり、他の人が調査する際の参考になるからです。

「Repository Explorerに想定質問を投げてみる」への1件のフィードバック

コメントする