GoogleのAIコーディングアシスタントJulesを試してみます。題材はDeep Researchもどきです。OpenAIなりのAPIを使わずにローカルのgemma3:4b-it-qatを利用してテストします。UIはstreamlitを使って実装します。それなりに利用できるようなものを目指します。
ざっくり言うと・・・。
0. 自動モードで検索→吟味→検索・・・と所定の回数loopして調査を行います。
1. PDFを読み込んで参照します。
2. ナレッジグラフで可視化機能を盛り込みます。
3. Follow upの質問が出来るようにします。
まず、Deep ReasarchのOSS版はきっと誰か実装しているはずです。そこで調べてみると、すでにLangchain-aiで実装されているものが公開されています。
Open Deep Research: https://github.com/langchain-ai/open_deep_research
Local Deep Researcher: https://github.com/langchain-ai/local-deep-researcher
これらを参考に設計します。ChatGPTを使いながら、まとめていきます。例えば、Core Logic部は以下のようになりました。このままそっくり作るのではありません。必要な機能を分解して理解して、自分に必要な機能を選択したり入れ込んで設計していきました。実際に組み上げる時にはコードレベルで参照せずに、考え方を整理して構成したものをベースにjulesと組み上げていきます。
Both repos automate multi-step research by interleaving search and generation:
Planning/Outline: (open_deep_research only) The assistant first creates a report plan. An LLM planner analyzes the topic and breaks it into sections or sub-questions. In the graph mode, this plan is shown to the user for feedback (accept or refine) before proceeding.
Search Query Generation: For each section or iteration, an LLM generates one or more web search queries tailored to the sub-topic. In Local Deep Researcher, the LLM uses the topic (and later the current summary) to form a query. In Open Deep Research, per-section queries may be generated by a chain or agent prompt.
Document Retrieval: The system uses web search tools to retrieve relevant pages. LocalDeepResearcher defaults to DuckDuckGo (no API key needed) but can be configured to use SearXNG, Tavily, or Perplexity. OpenDeepResearch (Graph) supports multiple APIs (Tavily, Perplexity, Exa, ArXiv, PubMed, LinkUp). OpenDeepResearch (Multi-agent) currently uses only the Tavily API for its researcher agents.
Summary Generation: Retrieved documents are passed to an LLM to summarize relevant information. In graph-based OpenDeepResearch, this happens sequentially for each section, often with “reflection” steps between search iterations. In LocalDeepResearcher, each loop uses the LLM to produce an updated summary of all findings so far.
Reflection and Iteration: After summarizing, the assistant (via the LLM) examines the summary to find what was missed. It then generates a follow-up query to dig deeper. The Local Deep Researcher explicitly “reflects on the summary to identify knowledge gaps” and creates a refined query. The graph-based OpenDeepResearch workflow similarly iterates per section (controlled by parameters like max_search_depth) to deepen research.
Aggregation: Finally, the gathered information is combined into a single report. In the graph workflow, the final markdown report is assembled from section outputs. In multi-agent mode, the Supervisor concatenates or formats each researcher’s section into the final document. In local mode, all collected sources are formatted into a markdown summary with citations.
Julesを使います。
最初は順調でした。まずはCLIで基本機能を実装した後にStreamlitでUIまで、さほど問題なく実装してくれました。Webページをスクレイピングしたテキストをチャンクさせ、その設定を設定ファイルで行えるようにしたり、対象のデータの最大量を制限したり、と細かいところを指示していけば、淡々とコードをしてくれます。待ち時間で動画見た後に作業もできるくらいに余裕です。無料のためか、待ち時間は長めです。止まったようになったときには、どうなんってんの?と茶々を入れるとはっと気づいたように再開することもありました。
大きくコケそうになったのはStreamlitでボタンを押すとUIがクラッシュする案件でした。最終的には原因は分かったのですが、それまでに何度もテストし、その結果をjulesに教えてあげて・・・を繰り返します。streamlitは癖が強いので、Coplotでもハマると解決できないことがありますが、julesは十分に経緯を遡って考えるため、千日手のようなループに入ることは少ないように感じました。自分で手を出そうかと思ったのですが、時々、可能性を助言する程度でとどめました。結果、このFixだけ丸一日くらい時間のロス。(だけど、ながら対応なので、苦にはならず)
その機能を達成するために、どのライブラリを選定するか、も重要です。pythonだけで実装してあって環境に左右されにくいのがいいのか、バイナリも提供されてて速さ優先させるのか、等です。具体的に実装させる前に議論するような指示を与えたのは正解でした。
そうして出来上がったものは、利用したLLMは、gemma3:4b-it-qatでしたが、予想より良好な出力が得られました。テストのためループ数5、検索はTOP3と少なめの設定です。また、基本は英語で出力させています。
「日本の最近のコメ不足について」についての調査出力例(冒頭の日本語訳)
要約:
日本は現在、深刻な米不足に直面しており、それは価格の大幅な上昇と農業の変化によって明らかになっています。米先物取引の復活、消費者の嗜好の変化、そして農家の戦略的な方向転換が、この不安定な状況の主な要因となっています。本報告は、米不足に関する最近の調査結果を統合し、その要因、国内農業への影響、そして政府の対応を明らかにしています。
1. 問題の根源: 価格の上昇と米先物取引の再開
現在の米不足の直接的な原因は、米価格の急騰です。2024年9月までに、5kgの米袋の価格が約2,000~3,000円に上昇しました。この価格高騰は、大阪堂島取引所 (ODEX) における米先物取引の再開と密接に関連しています。この市場は2016年以前は休止していましたが、最近の再開によって市場の不安定化と価格の変動を引き起こしています。この動きが価格の上昇を大きく促進し、国内市場および輸出市場に関する懸念を増幅させています。加えて、国際市場の変動、特に人民元の価値上昇が世界的な米価格にも影響を及ぼしていますが、日本国内における核心的な問題は、米先物市場の復活にあると考えられています。
(以下略)
結論:
現在の日本の米不足は、市場の動向、消費者の嗜好の変化、そして農家の戦略的適応が重なり合った結果として発生しています。特に、米先物取引の復活は、この危機の中心的な要因となっており、価格設定や生産判断、さらには消費者への供給状況に大きな影響を及ぼしています。今後も継続的な監視と分析、そして積極的な対策——農家への的確な支援や長期的な需要への対応戦略——が、この困難な状況を乗り越え、日本の重要な米市場の安定を確保するために不可欠となるでしょう。
(以下、参考リンクが続く)
しっかり、無料でお試しできました。非同期コーディングも楽で良かった。有料化時の価格も気になるところです。
良くを言えば、VS Codeと連携がしっかりできたら・・・。これから期待ですね。