【ITニュース解説】My Journey into Agentic AI Development: AI Newsroom
2025年09月14日に「Dev.to」が公開したITニュース「My Journey into Agentic AI Development: AI Newsroom」について初心者にもわかりやすく解説しています。
ITニュース概要
トレンドをWeb検索し、政治や技術など得意分野を持つAI記者が記事を自動作成する「AIニュースルーム」を開発。複数のAIエージェントをLangGraphで連携させたが、AIのツール呼び出しや意図しない挙動に開発者は苦労も経験した。
ITニュース解説
AI Newsroomプロジェクトは、人工知能(AI)を活用してニュース記事の生成プロセスを自動化・効率化するシステムを構築することを目指している。このシステムは、Web上の最新トレンドを自動で特定し、多様な専門性を持つ複数のAIエディターがそれぞれの視点から記事を執筆する。システムエンジニアを目指す人々にとって、このプロジェクトはAIエージェントの設計、ワークフロー管理、そしてツール連携といった、現代のAI開発において不可欠な要素を実践的に学ぶ機会を提供する。
このAI Newsroomでは、複数のAIエージェントが協調して機能する。エージェントとは、特定の目的を達成するために自律的に判断し行動するAIプログラムのことで、以下のような役割を持つ。Web検索エージェントは、インターネットを巡回し、政治、テクノロジー、エンターテイメント、金融など多岐にわたるカテゴリの最新トレンドトピックを特定する。チーフエディターエージェントは、検出されたトレンドトピックの中から、各エディターに記事執筆トピックを割り当て、複数のエディターが同じトピックを希望した場合の競合解決も行う。エディターエージェントは、それぞれに個性(ペルソナ)と専門分野が設定されたAIで、割り当てられたトピックについて独自の執筆スタイルで記事を作成する。
これらのAIエージェント間の複雑な連携と処理の流れは、LangGraphというフレームワークを使って管理される。LangGraphは、複数のAIエージェントやツールが連携するワークフローを定義し、実行するための強力なツールである。プロジェクトでは「NewsroomState」という共有状態オブジェクトが定義され、トレンドトピック、エディター情報、トピック割り当て、最終的な記事など、ワークフロー全体で共有される情報を一元的に管理する。
ワークフローは以下のステップで進む。まず、トレンドトピックの収集から始まる。Web検索エージェントはTavilySearchのようなウェブ検索ツールを用いて、最新のトレンドトピックを収集する。この検索は、一般的なバイラルコンテンツから、ニュース、テクノロジー、金融、エンターテイメントといった特定の分野に特化したものまで、多様なツールを使いこなす。検索結果は「trending_topics」としてシステムの状態に保存される。
次に、チーフエディターエージェントが、収集されたトレンドトピックをエディターエージェントに割り当てる。各エディターエージェントは、自身の専門性や興味に基づき、執筆したいトピックを主張する。例えば、政治に強い「Andrew」は国際紛争を、テクノロジー好きの「Bob」は最新ガジェットを選びたいと表明する。この「主張」は、各エディターのAIモデルに特定のプロンプト(指示文)を与えることで行われる。チーフエディターはこれらの主張を分析し、トピックの割り当てを確定する。複数のエディターが同じトピックを主張した場合、チーフエディターは最初の主張者にそのトピックを割り当てるなどのルールに基づいて解決する。また、どのトピックも主張しなかったエディターには、まだ割り当てられていないトピックを自動で割り当てる。この割り当てロジックは、LLM(大規模言語モデル)ではなく、通常のプログラミングコードで実装されている。これは、割り当てルールが明確であり、LLMに判断させるよりも確実で効率的だと判断されたためである。
トピックが割り当てられると、各エディターエージェントは記事の執筆に取り掛かる。記事執筆の前に、エディターエージェントは割り当てられたトピックについて、さらに「in-depth search(詳細な調査)」を行う。これは、再度ウェブ検索ツール(TavilySearch)を使い、より深く、多角的な情報を収集するプロセスである。この詳細検索は、create_openai_tools_agentという機能を使って、AIモデル自身がどのツールをいつ使うべきか判断し、実行する形で実現されている。収集した詳細情報と、エディター自身のペルソナ(個性や執筆スタイル)に基づいて、記事が生成される。例えば、金融専門の「Edward」はデータに基づいた分析的な記事を、エンターテイメント担当の「Susan」は読者の心を掴む魅力的な物語を紡ぎ出す。
このプロジェクトを通じて、AI開発におけるいくつかの重要な教訓が得られた。特に「ツール呼び出し」の難しさが浮き彫りになった。当初、チーフエディターエージェントにもLLMを使ってツール(トピック分配機能など)を呼び出させることを考えていたが、LLMがツールの引数を正確に生成することが困難であるという問題に直面した。LLMが生成する引数が間違っていたり、不足していたりすることが頻繁に発生し、システム全体の信頼性を損なう可能性があったため、チーフエディターのロジックは従来のプログラミングで記述された。また、記事執筆時の詳細検索においては、LLMに直接ツール呼び出しの指示をさせるのではなく、AgentExecutorという仕組みを使って、LLMが内部でツールを使用するかどうかを判断し、実行させる方法が採用された。これは、開発者がより多くの制御権を持ち、システムの堅牢性を高めるための現実的な解決策と言える。もし完全な制御が必要な場合は、LLMの応答からtool_callsという情報を手動で解析し、それに従ってツールを呼び出すという、より手間のかかる方法も存在することが示唆された。さらに、エディターのトピック選択の精度や、チーフエディターの競合解決ロジックなど、改善の余地がある点も挙げられている。AI開発は常に試行錯誤と改善が必要な分野であることがわかる。
筆者は、長年の経験を持つソフトウェア開発者として、AIが自身の仕事を奪うかもしれないという不安を感じつつも、AIツール(Cursor、Claude、Grok、Perplexityなど)を積極的に活用している。これらのツールは、コード生成やデバッグ、情報検索において非常に強力な助けとなる一方で、不正確なコードや矛盾する情報を提供することもあり、開発者は常にその出力を検証し、修正する必要がある。AIは万能ではなく、開発者の専門知識や判断力が依然として不可欠である。AIツールとの協調作業は、時にはフラストレーションを感じることもあるが、新しい技術を学び、使いこなすことの喜びも大きい。AIが進化しても、人間の開発者が直面する課題を解決し、より良いシステムを構築する役割は変わらない。