以下の内容はhttps://nowokay.hatenablog.com/entry/2025/04/25/030248より取得しました。


LangChain4Jで雑なAIコーディングエージェントを作る

ぼくもAIコーディングエージェントを作ったほうがいいんじゃないか、ということで、かろうじてコーディングエージェントと呼べるものを作りました。
指示したJavaファイルを作って保存して実行してエラー出なくなるまでやりなおすというものです。

ただまあ、このレベルだと、コーディングエージェントといっても、ファイル読み書きとコード実行ができればいいと思います。

なので、とりあえずこんな感じでsaveCodeexecuteCodeのTool Callingを用意。見易さのためにUI関係の処理は削ってます。

@Tool("""
      save the code into the file with givin name. \
      parameter: filename - file name to save; code - generated Java source code""") 
void saveCode(String filename, String code) {
    Files.writeString(Path.of("temp", filename), code);
}
@Tool("""
      run the java code saved in the file named the filename. \
      parameter: filenmae - file name that code is saved to execute; \
      return: result""")
String executeCode(String filename) {
    var str = compileAndRun(Path.of("temp", filename));
    return str;
}

あとはシステムプロンプト次第。ということでこんな感じ。

static String systemPrompt = """
    あなたはJavaコードの生成を行うコーディングエージェントです。
    ユーザーの指示に従った完全なコードを生成して、適切なファイル名でsaveCodeで保存を行い、  
    executeCodeでファイル名を指定して実行してください。
    実行がうまくいかなかったらエラーや実行失敗が返ります。コードを修正してやりなおしてください。
    """;

で、UI関係を作ってLLMにプロンプトを投げる処理を書けばできあがり。
今回は日本語データを使った重要度行列でGemma 3 12Bを量子化したモデルを使ってみました。
https://huggingface.co/dahara1/gemma-3-12b-it-qat-japanese-imatrix

で、まあ動くんだろうと思ったけど、実行してなんかJTable使ったコードが勝手に実行されると、「おぉぉ~」と声が出てしまいました。たのしい。

一応リトライやれとプロンプトに書いてるので、失敗したらやりなおすはず。ここではファイル保存の前に実行してエラーになってるのでリトライした形跡があります。

ということでコーディングエージェント楽しい。みんな作ろう。
コードはこちら。
compileAndRunはChatGPTが書いたほぼそのまま。
https://gist.github.com/kishida/ee3949c412cfd60fe7c6493af2254562

追記: コンパイルエラーも直してました!

追記2: LangChain4J 1.0.0-beta3だとうまくTool Callingができず、beta2だとうまくいってます。




以上の内容はhttps://nowokay.hatenablog.com/entry/2025/04/25/030248より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14