はじめに
「AI エージェント」を使おう、とよく聞きます。その中で、Gemini に「Deep Research」機能が搭載されたと聞きました。これを友人(@digital24s さん)と一緒に試してみました。
進化した Gemini の Deep Research 機能でリサーチを効率化!プライベートからビジネスまで使い方を解説|Gemini - Google の AI
Deep Research とは
「Deep Research」は、AI が自ら複数の情報源を横断的に検索し、より深いレベルで情報を分析・統合してレポートを作成します。
Deep Researchとは? 従来のAI検索との違いも分かりやすく解説|ビジネスブログ|ソフトバンク
2024 年 12 月 に Gemini サービスに Deep Research 機能が加わりました。
2025 年 2 月 に ChatGPT サービスも Deep Research 機能が加わりました。
AIのDeep Researchを使い比べ--ChatGPT、Gemini、Perplexity、Grokの違いは? - ZDNET Japan
調べていくと、オープンソースで Deep Research 機能を実装したライブラリがあるようです。これを試してみたいと思います。
Open Deep Research を使う
オープンソースの Deep Research である Open Deep Research
は、HuggingFace
で公開されているものと、LangChain
で実装されたものがありました。
HuggingFace Open Deep Research
smolagents/examples/open_deep_research at main · huggingface/smolagents · GitHub
「Open Deep Research」技術解説 - (株)Qualiteg
LangChain Open Deep Research
GitHub - langchain-ai/open_deep_research
LangChain公式のOpen Deep Researchを触ってみる #LLM - Qiita
自分は LangChain
版を使います。以下 LangChain Deep Research
とします。
実行環境を用意する
LangChain Deep research
を実行できる環境を用意します。
LLM は Gemini API のようなクラウドサービスを使うので、CPU のみの環境で OK です。
Python は 3.11 以降が要求されています。
Google Colab で実行できました。
検索エンジンを用意する
LangChain Deep Research
はウェブ検索した結果を利用するので、検索エンジンを使います。Tavily
または ducduckgo
などが指定できるようです。自分は Tavily Search
を使ってみました。
Tavily Search を使う
Tavily Search
は、AI エージェント向けのウェブ検索エンジンです。
公式 Tavily
API サービスを Python などのプログラムから呼出できます。
LangChain の Tavily Serch API を試す|npaka
Tavily Search API を使う
まず、Tavily
の公式サイトにログインして、API キーを取得します。
取得したキーを環境変数 TAVILY_API_KEY
にセットします。
TAVILY_API_KEY=(予め取得した API キー)
必要なライブラリをインストールします。
$ pip install tavily-python langchain_community
Python プログラムで API を呼出してみます。
import langchain_community.retrievers
# レトリーバーを準備
retriever = langchain_community.retrievers.TavilySearchAPIRetriever(k=3)
# レトリーバーを呼出
result = retriever.invoke("なごや個人開発者の集いとは何ですか?")
# 結果を表示
print(result)
RAG してみる
上記のレトリーバーを使って RAG してみます。
参考 LangChain を使って RAG を試してみた #AI - Qiita
LLM は Gemini API を使いたいと思います。API キーを環境変数にセットしておきます。
GOOGLE_API_KEY=(予め取得した API キー)
import langchain_google_genai
# モデルを用意する
llm = langchain_google_genai.ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
)
チェーンを準備して実行します。
import langchain_core.prompts
import langchain_core.runnables
import langchain_core.output_parsers
# 質疑応答チェーンを準備
prompt = langchain_core.prompts.ChatPromptTemplate.from_template(
"""Answer the question based only on the context provided.
Context: {context}
Question: {question}"""
)
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = (
{"context": retriever | format_docs, "question": langchain_core.runnables.RunnablePassthrough()}
| prompt
| llm
| langchain_core.output_parsers.StrOutputParser()
)
# 質疑応答チェーンを実行
result = chain.invoke("なごや個人開発者の集いとは何ですか?")
print(result)
Function Call してみる
Function Call も試してみます。
参考 LangChain を使って Function Call してみた #AI - Qiita
関数を用意します。
import langchain_tavily
# 関数を用意
tavily_search_tool = langchain_tavily.TavilySearch(
max_results=5,
topic="general",
)
tools = [tavily_search_tool]
エージェントを用意して実行します。
import langchain.agents
import langchain_core.prompts
# プロンプトを準備
prompt = langchain_core.prompts.chat.ChatPromptTemplate.from_template(
"""Question: {query}
Thought: Let's think step by step.
Use one of registered tools to answer the question.
Answer: {agent_scratchpad}"""
)
# エージェントを用意
agent = langchain.agents.create_tool_calling_agent(llm, tools, prompt)
executor = langchain.agents.AgentExecutor(agent=agent, tools=tools)
query = "なごや個人開発者の集いとは何ですか?"
# 経過を表示
for step in executor.stream({"query": query}):
print(step)
# 推論を実行
output = executor.invoke({"query": query})
print(output)
LangChain Deep Research を使う
さて LangChain Deep Resarch
を使ってみましょう。
公式サイトのリポジトリをクローンして LangGraph を走らせる手順が紹介されていますが、以下の記事を見つけました。
LangChainのOpen Deep Researchを動かしてみた - SEが最近起こったことを書くブログ
公式サイトに Jupyter のノートがありました。これなら実行しやすいですね。
上記の記事は Ollama を使っていますが、Gemini API
を使うことにします。検索エンジンは Tavily Search
を使います。予め Gemini API
と Tavily API
の API キーを環境変数にセットしておきます。
レポート構造を準備します。
検索エンジンに Tavily
、LLM に Gemini
を指定します。
import langgraph.checkpoint.memory
import open_deep_research.graph
memory = langgraph.checkpoint.memory.MemorySaver()
graph = open_deep_research.graph.builder.compile(checkpointer=memory)
REPORT_STRUCTURE = """ユーザー提供のトピックに基づいてレポートを作成するためにこの構造を使用してください:
1. はじめに(調査不要)
- トピック領域の簡単な概要
2. 本文セクション:
- 各セクションはユーザー提供のトピックのサブトピックに焦点を当てるべきです
3. 結論
- 本文セクションを要約する1つの構造要素(リストまたは表)を目指す
- レポートの簡潔な要約を提供する
レポートは日本語で作成して下さい。"""
import uuid
thread = { 'configurable': {
'thread_id': str(uuid.uuid4()),
'search_api': "tavily",
'planner_provider': "google_genai",
'planner_model': "gemini-2.0-flash",
'writer_provider': "google_genai",
'writer_model': "gemini-2.0-flash",
'max_search_depth': 1,
'report_structure': REPORT_STRUCTURE,
}}
トピックを用意して、処理を開始します。
まずプランが作成されます。
# トピックを用意する
topic = """ギブソンの「ニューロマンサー」を読みました。サイバーパンクの代表作とのことです。
サイバーパンクとは何でしょうか。代表的な作品にどんなものがありますか。"""
# 中断するまでグラフを実行する
async for event in graph.astream(
{'topic': topic},
thread,
stream_mode='updates'
):
if '__interrupt__' in event:
interrupt_value = event['__interrupt__'][0].value
print(interrupt_value) # レポートプランが表示される
Gemini の Deep Research では、ここで一旦止まってユーザが承認します。今回はソースコードで承認します。
# レポートプランを承認して処理を実行する
async for event in graph.astream(
open_deep_research.graph.Command(resume=True),
thread,
stream_mode='updates'
):
print(event) # 処理状況が表示される
print('\n')
# 最終的なレポートを表示する
final_state = graph.get_state(thread)
report = final_state.values.get('final_report')
print(report)
async で呼出しないといけないメソッドがあるので、全体を asyncio.run()
で実行します。
import asyncio
async def main():
(中略)
asyncio.run(main())
実行した結果↓
# ギブソンの「ニューロマンサー」とサイバーパンクの世界
本レポートでは、サイバーパンクの代表作とされるウィリアム・ギブソンの小説『ニューロマンサー』を読み解き、サイバーパンクというジャンルについて考察します。サイバーパンクとは何か、その定義、起源、そして主要なテーマを明らかにし、『ニューロマンサー』がなぜサイバーパンクの代表作とみなされるのかを掘り下げます。
さらに、小説、映画、アニメなど、様々なメディアにおけるサイバーパンクの代表的な作品を紹介し、それぞれの作品がどのようにサイバーパンクのテーマや要素を表現しているのかを解説します。
## サイバーパンクとは
サイバーパンクは、退廃的で高度な技術社会に閉じ込められた、反体制的なアンチヒーローを特徴とするSFのサブジャンルです [4]。このジャンルは、1960年代のカウンターカルチャーや1970年代のニューウェーブSF運動から生まれました [1]。作家や映画製作者は、未来を形作り始めた技術的な風景に焦点を当て、より暗いテーマを探求し始めました [1]。
ウィリアム・ギブソンの小説『ニューロマンサー』は、1984年に発表され、パンク・サブカルチャーや初期のハッカー文化から影響を受け、サイバーパンクをジャンルとして確立するのに貢献しました [5]。『ニューロマンサー』は、ディストピア的な世界観でサイバーパンクの世界を鮮やかに描き出しています [6]。この小説はサイバーパンク運動を触媒し、映画、文学、ビジュアルアート、ファッション、ビデオゲームなど、ほぼすべてのメディアのアーティストに影響を与えました [8]。
Sources
[1] What Is Cyberpunk: History, Examples & Overview [Ultimate Guide]: https://filmlifestyle.com/what-is-cyberpunk/ [2] Exploring the Cyberpunk Genre: Origins, Themes, and Influences: https://www.madmattdesign.com/post/exploring-the-cyberpunk-genre-origins-themes-and-influences [3] What is Cyberpunk — Genre Definition, Origins & Examples: https://www.studiobinder.com/blog/what-is-cyberpunk-definition/ [4] Cyberpunk | Neo-noir, Sci-Fi, Dystopia | Britannica: https://www.britannica.com/art/cyberpunk [5] Cyberpunk - Wikipedia: https://en.wikipedia.org/wiki/Cyberpunk [6] The Influence of Neuromancer on Cyberpunk - sabukaru: https://sabukaru.online/articles/how-neuromancer-birthed-cyberpunk [7] The Influence of Neuromancer on Cyberpunk - Hacker News: https://news.ycombinator.com/item?id=30918411 [8] Neuromancer - Wikipedia: https://en.wikipedia.org/wiki/Neuromancer [9] So the story is basically Neuromancer. (Book and game spoilers).: https://www.reddit.com/r/cyberpunkgame/comments/l0ogaq/so_the_story_is_basically_neuromancer_book_and/ [10] How William Gibson's Neuromancer shaped our vision of technology: https://rossdawson.com/futurist/best-futurists-ever/william-gibson-neuromancer/
## サイバーパンクの代表的な作品
サイバーパンク作品は、高度な技術と退廃的な社会を組み合わせた世界観が特徴です [2, 8]。多くの場合、巨大企業が支配するディストピア的な都市が舞台となり、社会にテクノロジーが深く浸透しています [1, 4]。
アニメ作品では、『サイバーシティ OEDO 808』や『バブルガムクライシス』などが代表的です [6, 7]。また、Netflixの『オルタード・カーボン』やアニメ『サイバーパンク:エッヂランナーズ』も人気があります [7]。これらの作品は、犯罪者的な主人公、混沌とした秩序、そして人間性を再定義するテクノロジーといったテーマを扱っています [3]。
Sources
[1] What is Cyberpunk — Genre Definition, Origins & Examples: https://www.studiobinder.com/blog/what-is-cyberpunk-definition/ [2] Cyberpunk - Wikipedia: https://en.wikipedia.org/wiki/Cyberpunk [3] What are the defining characteristics of a 'cyberpunk' story, aside ...: https://www.quora.com/What-are-the-defining-characteristics-of-a-cyberpunk-story-aside-from-being-set-in-a-futuristic-city-with-advanced-technology-and-societal-issues [4] A short guide to cyberpunk science fiction - First Draft Pro: https://www.firstdraftpro.com/blog/a-short-guide-to-cyberpunk-science-fiction [6] Cyberpunk: Films, books, anime | NeoGAF: https://www.neogaf.com/threads/cyberpunk-films-books-anime.1581345/ [7] What are some good cyberpunk shows/movies/anime? - Reddit: https://www.reddit.com/r/Cyberpunk/comments/18znut3/what_are_some_good_cyberpunk_showsmoviesanime/ [8] List of cyberpunk works - Wikipedia: https://en.wikipedia.org/wiki/List_of_cyberpunk_works
## 結論
サイバーパンクは、退廃的な社会と高度な技術が融合したSFのサブジャンルであり、そのルーツは1960年代のカウンターカルチャーにまで遡ります。ウィリアム・ギブスンの『ニューロマンサー』は、このジャンルの確立に大きく貢献し、その後の映画、文学、アニメ、ゲームなど、多くのメディアに影響を与えました。
サイバーパンク作品は、巨大企業が支配するディストピア的な都市を舞台に、テクノロジーが社会の隅々まで浸透した世界を描き出します。アニメ作品では、『サイバーシティ OEDO 808』や『バブルガムクライシス』などが代表作として挙げられ、近年の作品では『サイバーパンク:エッヂランナーズ』も人気を集めています。
サイバーパンク作品は、単なる未来を描いた物語ではなく、現代社会における技術の進歩や社会構造の問題に対する警鐘とも言えるでしょう。今後、テクノロジーがさらに進化していく中で、サイバーパンク作品が提起する問題は、ますます重要性を増していくと考えられます。
Gemini Deep Research でも見られる形式のレポートが作成されました。↑
Deep Research を制御しているのは LLM サービスです。上記は Gemini 2.0 Flash
を使いましたが、Gemini 2.5 Flash
を使うとどうなるでしょうか。
thread = { 'configurable': {
'thread_id': str(uuid.uuid4()),
'search_api': "tavily",
'planner_provider': "google_genai",
'planner_model': "gemini-2.5-flash",
'writer_provider': "google_genai",
'writer_model': "gemini-2.5-flash",
'max_search_depth': 1,
'report_structure': REPORT_STRUCTURE,
}}
結果は↓
# サイバーパンク概説レポート
ウィリアム・ギブスンの代表作『ニューロマンサー』を読んだことをきっかけに、サイバーパンクというジャンルに強い関心を持ちました。本作はサイバーパンクの金字塔とされていますが、その具体的な定義や、他にどのような作品があるのかを深く知りたいと感じました。
本レポートでは、このサイバーパンクというSFジャンルがどのような特徴を持つのかを解説し、さらに『ニューロマンサー』を含む主要な代表作品について概説します。
## サイバーパンクの定義と主な特徴
サイバーパンクは、1980年代に成立したサイエンス・フィクション(SF)のサブジャンル、または特定の運動や思想を指します [1, 5]。この名称は「cyber」と「punk」を組み合わせたもので、1980年に執筆されたSF短編小説のタイトルが語源とされます [2, 6]。フィリップ・K・ディックの作品に起源を持ち、「ハイテクとディストピア(暗い未来)」をテーマにジャンルが確立されました [2, 7]。
主な特徴として、日系企業アラサカなどの巨大企業が社会を支配する世界観が描かれます [3, 8]。高度なテクノロジーが日常生活に深く浸透し、人工知能(AI)、機械拡張、仮想現実(VR)が一般的です [9]。人工四肢や移植回路といったサイバーウェアによる身体改造も広く行われ、技術進歩は基本的な義肢から高度な強化へと移行します [2, 10, 11]。物語の中心には、権力に抗い自由を求める反体制的なハッカーやアウトローが登場します [4]。
Sources
[1] サイバーパンク - ピクシブ百科事典: https://dic.pixiv.net/a/%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%83%91%E3%83%B3%E3%82%AF [2] サイバーパンク - Wikipedia: https://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%83%91%E3%83%B3%E3%82%AF [3] サイバーパンク2077 - Wikipedia: https://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%83%91%E3%83%B3%E3%82%AF2077 [4] サイバーパンクとは?|AkihikoKayaba1031 - note: https://note.com/ak1031/n/na9774b6ae2cf [5] サイバーパンクとは?由来・特徴・作品 - 人間と機械が融合した世界: https://boxil.jp/mag/a3334/ [6] サイバーパンクという言葉の流行りは終わったのか|キツネツキ - note: https://note.com/kitsunetsuki/n/n9e1a6cf89faa [7] サイバーパンクの起源と発展:アメリカと日本が生んだ近未来の ...: https://aijidai1216.com/2348/ [8] サイバーパンクとエッジランナーズの元ネタ完全解説!物語と ...: https://kiset-season.com/archives/24188 [9] サイバーパンクな美学:テクノロジーとファッションの融合: https://www.toolify.ai/ja/ai-news-jp/%E7%BE%8E%E5%AD%A6%E8%9E%8D%E5%90%88-3416031 [10] ワールド・オブ・サイバーパンク2077章の要約 | Marcin Batylda: https://www.bookey.app/ja/book/%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89%E3%83%BB%E3%82%AA%E3%83%96%E3%83%BB%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%83%91%E3%83%B3%E3%82%AF2077 [11] サイバーパンクとは何か、その本質的特徴を、古典的代表作と現代 ...: https://huyukiitoichi.hatenadiary.jp/entry/2021/02/04/080000
## サイバーパンクの代表的な作品
サイバーパンクの代表作として、ウィリアム・ギブスンの小説『ニューロマンサー』(1984年)が挙げられます[1, 2]。この作品は「電脳空間(サイバースペース)」や「マトリックス」といった概念を世に広め、ネビュラ賞、フィリップ・K・ディック賞、ヒューゴー賞というSF小説の主要三冠を史上初めて達成しました[2, 3]。『ニューロマンサー』は「スプロール」三部作の第一作であり、続編に『カウント・ゼロ』、『モナリザ・オーヴァドライヴ』があります[1, 3]。
また、日本の作品では士郎正宗による『攻殻機動隊』がサイバーパンクSFの金字塔として知られています[8, 9]。同作は『ニューロマンサー』に影響を受けたと誤解されがちですが、原作者は『攻殻機動隊』連載開始後に『ニューロマンサー』を読んだと述べています[4]。他にも、リドリー・スコット監督の映画『ブレードランナー』や、日本のアニメ映画『AKIRA』もサイバーパンクの文脈で語られる代表的な作品です[1, 7]。
Sources
[1] 最初にハマった小説がギブスン『ニューロマンサー』だった人間の ...: https://pikabia.hatenablog.com/entry/2022/06/24/011020 [2] 後世のサイバーパンクに影響を与えた小説『ニューロマンサー』: https://news.yahoo.co.jp/articles/b565d0e93a7b32ca250a30fdd4194f70a0765c11 [3] 『SFマガジン』でサイバーパンクの巨匠ウィリアム・ギブスン特集 ...: https://kai-you.net/article/92683 [4] ニューロマンサー - Wikipedia: https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%AD%E3%83%9E%E3%83%B3%E3%82%B5%E3%83%BC [5] ニューロマンサー読み始めました(随時更新)|モリンゲン - note: https://note.com/bb_28/n/nccf240c56b2a [6] サイバーパンク流セカイ系「攻殻機動隊SAC2045」|yoh - note: https://note.com/yoh160/n/n13c0cfb28227 [7] 日本のサイバーパンク - Wikipedia: https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%83%91%E3%83%B3%E3%82%AF [8] サイバーパンクSFの金字塔|新作TVアニメーション『攻殻機動隊 ...: https://theghostintheshell.jp/news/the-ghost-in-the-shell-hajime-sorayama [9] 士郎正宗によるサイバーパンクSFの金字塔「攻殻機動隊」新作TV ...: https://animedb.jp/2024/05/14941
## 結論
本レポートでは、サイバーパンクが1980年代に確立されたSFのサブジャンルであり、「ハイテクとディストピア」をテーマとすることを解説しました。その主な特徴は以下の通りです。
* 世界観: 巨大企業が支配する近未来のディストピア
* テクノロジー: AI、VR、サイバーウェアなど高度な技術が普及
* 登場人物: 権力に抗う反体制的なハッカーやアウトロー
ウィリアム・ギブスンの『ニューロマンサー』は「電脳空間」概念を広め、SF界に多大な影響を与えました。また、『攻殻機動隊』、『ブレードランナー』、『AKIRA』といった作品もこのジャンルの代表として挙げられます。サイバーパンクは、技術進歩の光と影、そして人間の存在意義を問い続けることで、現代社会にも深く響く魅力的なジャンルであり続けています。
Deep Research とは
「Deep Research」は、以下の手順で実行されます。
①ユーザから与えられたトピック
と、用意してあるレポート構造
に基づいて、「プランナー」プログラムが LLM に指示してプラン
を作成する
作成したプランは、必要に応じてユーザに承認を貰う
②上記のプランに基づいて、「リサーチャー」プログラムが LLM に指示を仰いで、検索エンジンを呼出して、検索結果を取得する
得られた検索結果を参照して、必要に応じてさらに検索を続ける
③必要な検索結果が得られたら、LLM に指示してレポート
を作成する