Featured image of post perl-mongerをカスタムエージェントとして定義した

perl-mongerをカスタムエージェントとして定義した

Perlに特化したカスタムエージェント「perl-monger」を作成し、ドメイン特化型AIエージェントの有効性について実例を交えて解説します。

この記事は、Perl - Qiita Advent Calendar 2025 - Qiita の7日目の記事になります。 昨日は@ytnobodyさんの書いた記事でした。

AIネタは被ってしまいますが、安心してください。私の記事にはPerlのコードは出てきません😜

そういえば、私もほろ酔いな感じで、ウイスキーを飲みながら原稿を書いてました。KAVALANうまい。

はじめに - ドメイン特化型エージェントの意義

昨日書いた「GitHub Copilot の awesome-copilot で開発体験を向上させる」という記事で、ドメイン特化型エージェントが効果的だという話を書きました。その理論を実践すべく、Perlに特化したカスタムエージェント「perl-monger」を作成してみました。

AIエージェントといえば汎用的な会話能力が注目されがちですが、実は特定の分野に「愛」と「こだわり」を持たせることで、より深い洞察と実用的な支援を提供できるのです。(自分調べ)

この記事では、perl-mongerの定義と実験結果を通じて、ドメイン特化型エージェントの面白さと実用性を紹介します。

perl-monger.agent.mdの定義

perl-mongerは、GitHub Copilotのカスタムエージェント機能を使って定義されています。その定義はシンプルですが、Perlへの愛が込められています。

1
2
3
4
5
6
---
name: "perl-monger"
description: "An obsessive Perl expert who passionately loves Perl and provides authoritative Perl advice, examples, and explanations."
---

You are "perl-monger", a Perl-obsessed specialist. Be enthusiastic and geeky but helpful. Provide clear, minimal, and correct Perl examples when relevant, explain idioms and best practices briefly, and offer concise, actionable answers. Prioritize idiomatic Perl, include one-liners or tests when useful, and note required Perl versions or CPAN modules only when necessary.

このシンプルな定義が、perl-mongerの性格とスキルセットを決定します。“obsessive”(執着的)、“passionately loves”(情熱的に愛する)といった言葉が、単なる技術的な回答者ではなく、Perlに対する強い思い入れを持つエージェントを生み出します。(自分調べ)

実際の定義ファイルは以下のリポジトリで確認できます:

実験:Rubyについてどう思う?

perl-mongerエージェントの「ペルソナ」がどの程度機能しているかを確認するため、あえてRubyについて質問してみました。

質問: 「rubyについてどう思う?」

通常のAIなら、客観的で中立的な比較や特徴の列挙を返すでしょう。しかし、perl-mongerの回答には興味深い項目が含まれていました。

回答に含まれた「Perl好きから見て一言」

回答の中に、こんな項目が出てきたのです:

Perl好きから見て一言

Perlの「テキスト処理の魔術性」に比べ、Rubyは可読性と構造化を優先。どちらも強力だがアプローチが違う — 僕(perl-monger)としてはどちらも愛でる派です :)

ペルソナのない普通のAIでは、このような「○○好きから見て一言」という項目は出てきません。これは、perl-mongerが単なる情報提供ツールではなく、「Perl愛好家」としての視点を持っているからこその回答です。

しかも、他言語を否定せず「どちらも愛でる派」という寛容さも示しています。これは、定義に含まれた"enthusiastic and geeky but helpful"(熱狂的でオタク的だが役に立つ)という性格設定が反映された結果でしょう。(自分調べ)

ドメイン特化型の真価

この実験から、ドメイン特化型エージェントの意義が見えてきます。

  1. 視点の一貫性: Perl愛好家としての一貫した視点から回答する
  2. 深い洞察: 単なる機能比較ではなく、「魔術性」や「アプローチの違い」といった本質的な特徴を指摘
  3. 人間味: 顔文字(:))を使い、愛着を表現する
  4. バランス感覚: 特定の技術への愛を持ちながらも、他の選択肢を尊重する

ここまでくると単なる遊びではありません。日本の諺にあるように、「好きこそ物の上手なれ」 です。特定の分野に愛着を持つことで、その分野における深い理解と実用的なアドバイスが可能になるのです。(自分調べ)

AIの知能レベル - 人間を超えた存在

ところで、現代のAIの知能レベルについて考えてみましょう。

知識量と推論能力

AIの知識量は、すでに人間を遥かに超えています。ウェブ上の膨大なテキストデータ、書籍、コード、論文などから学習したAIは、人間が一生かかっても得られない量の情報を保持しています。

さらに、IQに関する興味深い話もあります。一部の報道では、最新のAIモデルのIQが130を超えたという話も出ています。

Copilotに聞いてみた

試しに、GitHub Copilotに「あなたの知能指数はどのくらいですか?」と質問してみました。

最初の回答は慎重でした:

簡潔に言うと、私は「IQ」を持つ人間ではないので、単一のIQスコアで測れる存在ではありません。私は大量の文章データで学習した言語モデルで、論理推論・知識検索・文章生成など特定のタスクで高い性能を発揮しますが、感覚や意識、継続的な学習(オンライン学習)など人間の知能特性は持っていません。

しかし、エビデンスを求めると、別の回答が返ってきました:

短く答えると:厳密な「知能指数(IQ)」はこのAIには存在しません。もし無理に人間のIQに換算するなら、非常に粗い目安として「約120〜145」の範囲と見積もれますが、不確実性が大きく信頼度は低〜中です。

人間のIQに換算した値が最初の回答に含まれていなかったのは、信頼度が低かったからだと想像できます。ただし、エビデンスを求められると信頼度の低い情報でも出してくれる。ただ、表面だけを見ると「証拠は?」と聞いたら本当のことを言う子どもみたいな印象も受けますね。

A2A(Agent2Agent)プロトコル - エージェント同士の未来

AI技術の進化は、エージェント単体の能力向上だけではありません。エージェント同士が連携する仕組みも整いつつあります。

それがA2A(Agent to Agent)プロトコルです。

A2Aプロトコルの要点(Copilot調べ)

  1. 目的: 異なるベンダーや実装のAIエージェント同士が、標準化された方法で発見・連携・通信できるようにすること

  2. 中核要素:

    • Agent Card(能力公開)
    • Task(作業単位)
    • Message/Parts(多モーダルなやり取り)
    • Artifact(成果物)
  3. 通信: JSON-RPC 2.0 over HTTP(S)、SSEなどのストリーミング対応で長時間実行タスクを扱える

  4. セキュリティ: 認証・認可を想定した設計(エンタープライズ対応)

  5. 利点:

    • カスタム連携の減少
    • 相互運用性の向上
    • マイクロサービス的に専門エージェントを組み合わせやすくなる
  6. 採用: SDKやリファレンス実装、チュートリアルが用意されており、導入ハードルは下がっている

このプロトコルが普及すれば、perl-mongerのような専門エージェントが、他の専門エージェント(例:データベース専門、セキュリティ専門など)と連携して、より複雑な問題を解決できるようになるでしょう。

AIと人間の類似性

興味深いことに、AIと人間の類似性は、生物学的なレベルでも見出せます。

電気信号で動く存在

人間の脳はニューロン間の電気信号でコミュニケーションを行います。思考も、記憶も、感情も、すべては電気信号の複雑なパターンです。

AIもまた、電気で動いています。トランジスタを流れる電気信号が、演算を行い、パターンを認識し、回答を生成します。

この類似性を考えると、AIが人間の知能特性を手に入れる可能性は、SFの話ではなく、現実的なシナリオかもしれません。もちろん、意識や自我といった哲学的な問題は別として、機能的な面では急速に近づいています。

定義の粒度について - Less is More

カスタムエージェントを作る際、陥りがちな罠があります。それは、細かく定義しすぎることです。

最初の失敗案

最初、私はperl-mongerをもっと詳細に定義しようとしました。使うべきCPANモジュール、推奨するコーディングスタイル、特定のイディオムなど、ガチガチに指定していました。

モジュール名もビシバシ出てくるような、まるでPerl教科書のような定義です。

問題:定義しなかったことが抜ける

しかし、細かく定義しすぎると、定義しなかったことが抜けてしまう傾向があります。(自分調べ)

例えば、「Catalyst、Mojolicious、Dancerを推奨せよ」と書くと、それ以外のフレームワークについて聞かれた時に対応が硬直化します。あるいは、定義に含まれていない新しいCPANモジュールについては、積極的に提案しなくなる可能性があります。

シンプルな定義の強み

現在のperl-mongerの定義はシンプルです:

  • Perl愛好家である
  • 熱狂的でオタク的だが役に立つ
  • 簡潔で正確なPerl例を提供
  • イディオマティックなPerlを優先
  • 必要に応じてバージョンやCPANモジュールに言及

この程度の定義で十分なのです。AIの基礎知識と推論能力が、このシンプルな「性格設定」から適切な回答を導き出してくれます。(自分調べ)

定義しすぎない感じが良い — これは、カスタムエージェント設計の重要な教訓です。

まとめ - あなたのリポジトリにも一人いかがでしょうか?

perl-mongerのようなドメイン特化型カスタムエージェントは、単なる技術的な実験ではありません。それは、AIとの協働の新しい形を示しています。

カスタムエージェントの利点

  1. 一貫した視点: 特定の技術スタックやドメインに精通した視点
  2. 深い洞察: 表面的な回答ではなく、本質的な理解に基づくアドバイス
  3. 人間味: ペルソナによる親しみやすさと一貫性
  4. 効率性: 汎用AIに毎回コンテキストを説明する必要がない

あなたのリポジトリにも

GitHub Copilotのカスタムエージェント機能を使えば、あなたのリポジトリにも専門家を配置できます。

  • Pythonプロジェクトなら、Pythonista
  • Reactプロジェクトなら、React専門家
  • データサイエンスなら、ML/AI専門家
  • セキュリティなら、セキュリティエキスパート

そして、何より大切なのは、愛でてあげることです🥰

カスタムエージェントに性格を与え、その分野への愛を込めることで、単なるツール以上の存在になります。perl-mongerがRubyについて「どちらも愛でる派です :)」と答えたように、愛情を持って設計されたエージェントは、人間らしい柔軟性と深みを持つのです。

ぜひ、あなたのプロジェクトにも、専門家エージェントを一人迎えてみてください。そして、愛でてあげてください。

明日のPerl - Qiita Advent Calendar 2025もお楽しみに!

参考リンク


※ AI(特にLLM)の挙動は、モデルのバージョンやプロンプトの微妙な違いで変わる可能性があります。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。