🤖

Redmine AI Helperプラグイン更新

に公開

Redmine AI Helperプラグインを更新しました。

先月以下の記事で紹介したプラグインですが、いくつかの機能を追加しました。

https://zenn.dev/haru_iida/articles/redmine_ai_helper

今回は主なものを紹介します。

チケット要約

最初のバージョンでもチャットでチケットの要約を依頼できましたが、今回はチケット画面上部に要約表示エリアを追加しました。

チケット要約エリア
チケット要約エリア

この要約は一度生成するとDBに保存され、次回以降は自動的に表示されます。
これにより、いちいちチャットに要約を依頼しなくても、チケットの内容をすぐに確認できるようになりました。

チケットの回答案

チケットの回答案を生成する機能も追加しました。

回答案作成
回答案作成

チケット更新画面のコメント入力欄の下にAIヘルパーでコメント案を作成というエリアを追加しています。
回答の要点や指示を入力し、作成ボタンを押すと、AIが回答案を生成します。回答はチケットの内容および過去のやり取りを考慮して作成されます。

また、RedmineのWikiの書式設定がMarkdownになっていればMarkdownで生成し、TextileであればTextileで生成されます。

回答内容が良ければ適用ボタンを押すとコメント編集フォームに内容が反映されます。そのままコメントを投稿することもできますし、内容を編集してから投稿することもできます。

こちらも元々はチャットでの回答案生成を依頼することができましたが、チケット画面上で直接操作できるようにしました。

子チケット作成

チケットの子チケットを作成する機能も追加しました。バックログや大きなタスクを分解して子チケットを作成できます。

子チケット作成
子チケット作成

チケット画面の子チケット欄に新たにAIヘルパーで子チケットを作成リンクを追加しました。ここをクリックすると子チケット作成機能が表示されます。

子チケット作成の指示を入力してドラフトを生成ボタンを押すと、AIが指示に従って子チケットのドラフトを生成します。特に指示がなければ空欄にしておくと、AIにお任せで生成されます。

表示された子チケットの一覧から必要なものを選択し、場合によっては内容を編集してから追加ボタンを押すと、選択した子チケットが作成されます。

その他の変更

  • Temperature, Max Tokensを設定できるようにしました。必要に応じて調整してください。
  • OpenAIを使用している場合に、Organization IDを設定できるようにしました。
  • Vecror検索でチケット以外にWikiも検索できるようにしました。
  • Azure OpenAIに対応しました。
  • LLMとのやりとりをLangfuseで分析できるようになりました。
  • その他の細かなバグ修正や改善を行いました。

やろうと思ってたけどやらなかったこと

Agent2Agentの実装

連携先として使えるAIエージェントがGoogleのデモアプリぐらいしかなく、あまり実用的ではないため、Agent2Agentの実装は見送りました。他のエージェントが出揃い始めたら実装を検討したいと思います。

全体的に

これまではチャットで指示すれば何でもやってくれる、Redmine用汎用AIチャット機能を実装すれば良いと考えていました。しかし自分で使ってみると、チャットにいちいち指示を入力するのがだんだん面倒だと感じるようになりました。

そこで路線を変更して、定型的な作業についてはチャットを介さずに直接操作できるようにしました。これにより、作業依頼が楽になり、より直感的に使えるようになったと思います。

チャットは定型的な作業以外のことを依頼するために使うと割り切ったほうが良さそうです。

また、直接操作できるようにすることでAIへの問い合わせ回数を減らし、コストや応答時間の削減ができました。前回の記事で書いたように、このプラグインは内部でマルチエージェントアーキテクチャーを採用しています。
例えば「このチケットを要約して」とチャットから依頼した場合、以下のようなフローが実行されます。

  1. Leaderエージェントがユーザーからの依頼を具体化する
  2. Leaderエージェントが、今回の依頼をどのエージェントにするかを決定する(この場合はIssueエージェント)
  3. LeaderエージェントがIssueエージェントへの依頼文を作成し、作業を依頼する
  4. Issueエージェントがチケットの内容を要約する
  5. Leaderエージェントが要約結果をユーザーに返す

要約機能で直接要約を実行した場合、この1-3の部分をAIを使わずにコードで直接実行できます。これにより、AIを使う回数が減り、コストや応答時間を削減できます。

今後やりたいこと

チケットの回答案作成や子チケット作成などは、プロジェクト毎に異なるルールややり方。これをプロジェクト設定としてinstruction定義を登録できるようしたいと思います。

まとめ

より実用的な機能を追加し、使いやすくなったと思います。使用された方は是非感想を聞かせてください。

Discussion