ジークスの酒井です。
今話題になっているCLINEで色々プロジェクトを作ってみたのですが
vscodeを勝手に操作されていったり、人間にも質問してきて、人間が部品の一つになっている感じが
すごい衝撃的でした。
今までのAIツールはあくまで人間の補助として動いていましたが
人間の上に立とうとする下剋上的な可能性を感じたので
いったいどういう仕組みで動いているのか非常に興味を感じました。
中身を解析してみたので共有します。
ソースコード
こちらのソースから始めます。Roo Codeなどforkも出てきていますが
まずは本家の解析です。
https://github.com/cline/cline/blob/main/src/api/transform/o1-format.ts
プロンプトに渡す文字列を探してみると、ここのソースで定義されていました
他にもgeminiやopenaiなど他のAIエンジン向けのソースがありますが、
全部o1-format形式に変換しているようでした。
初期設定
# システムプロンプト
${システムプロンプト}
# 回答を作成するための手順
少なくとも 1 つのツール呼び出しを使用して、ユーザーの要求に応答する必要があります。応答を作成するときは、次のガイドラインに従ってください。
1. 通常のテキストで回答を開始し、自分の考え、分析、または行動計画を説明します。
2. ツールを使用する必要がある場合は、通常のテキスト説明の後に、すべてのツール呼び出しをメッセージの最後に配置します。
3. 必要に応じて複数のツール呼び出しを使用できますが、それらはすべてメッセージの最後にグループ化する必要があります。
4. ツール呼び出しを配置した後は、通常のテキストを追加しないでください。ツール呼び出しは、メッセージの最終的なコンテンツである必要があります。
最初は初期設定のための文章が並びます。ここで衝撃を受けたのは書式などに関する指定しかしてなくって
プログラム言語の話は一切出てきてないという部分です。
ツールの初期設定
回答が従うべき一般的な構造は次のとおりです。
\`\`\`
[あなたの考えや行動を説明する通常のテキスト応答]
[ツールコール1]
[必要に応じてツールコール2]
[必要に応じてツールコール3]
...
\`\`\`
覚えて:
- タスクと提供されたツールの説明に基づいて、最も適切なツールを選択します。
- 各ツールに指定された XML 形式を使用して、ツール呼び出しを作成します。
- 通常のテキストで、実行しているアクションと特定のツールを使用する理由を明確に説明します。
- ツール呼び出しがメッセージの直後に実行され、次の応答でその結果にアクセスできるかのように動作します。
clineからツールを使うための設定が書かれています。
AIが使えるツールは8個あり、この後で指定されています。
- コマンド実行
CLIコマンドを実行します - ファイル一覧
プロジェクトの指定したフォルダ内のファイル一覧を表示します - コード定義名のリスト
指定したフォルダのソースコード内の定義名(クラス、関数など)を一覧表示します。 - ファイル検索
指定したフォルダで正規表現による検索を実行します。 - ファイル読み取り
指定したファイルを読み取ります。 - ファイル書き込み
指定したファイルに書き込みをします。 - フォローアップの質問
人間に質問を表示して、回答を収集します。 - 結果表示
タスクが完了したらこのツールで結果をユーザーに表示します。
これらのコマンドを使ってばりばりvscodeをいじって結果に近づいていきます。
情報が足りなければ7番を使って人間に質問し、答えによって行動が変化していきます。
完了したら8番を実行して、人間に結果を表示して終わります。
人間が結果に満足しない場合はフィードバックのテキストを入力し
そのテキストを受けて再実行する事もできます。
百聞は一見に如かずといいますが、このclineも一度使ってみると
わかりやすいと思うので、ぜひ試してみてください!!