top of page

BigQueryから直接特許データを調べる:ADKの新機能で自然言語クエリを実現

1.はじめに

  • 従来、Google CloudのBigQueryに格納されている広範な公開特許データセット(Google Patents Public Datasets)を調査するには、SQLの知識が不可欠でした。 [1]しかし、Agent Development Kit (ADK) のアップデートにより、自然言語を使って直接これらのデータに問い合わせることが可能になりました。[2]


  • 本記事では、ADKのask_data_insightsツールを利用して、google patents public datasetに自然言語でクエリを投げ、特許情報を取得する方法を解説します。[1][2]


2.使用する技術とデータセット

  • Agent Development Kit (ADK): Google製のAIエージェント開発フレームワークです。バージョン1.13.0で追加されたask_data_insightsツールは、BigQueryのConversational Analytics APIを利用して、自然言語によるデータ問い合わせを実現します。 [2]この機能は、大量のデータを扱う際にLLMのコンテキストウィンドウが溢れる問題を回避するのに役立ちます

  • Google Patents Public Datasets: BigQuery上で公開されている特許データセットで、世界各国の特許書誌事項などが含まれています。 [1]今回はpatents-public-data.patents.publicationsテーブルを対象とします。



3.実装手順

  • ADKでエージェントを作成

まず、adk createコマンドを使って、エージェントの雛形を作成します。

adk create patent_agent
  • モデルとかGoogleAPIキーなどを設定

ree


  • agent.pyの編集

生成されたpatent_agentディレクトリ内のagent.pyを編集し、BigQueryToolsetを設定します。 [2]ここでは、SQL実行ツールを除外し、自然言語クエリ用のask_data_insightsツールのみを利用するようにtool_filterで指定します。


from google.adk.agents.llm_agent import Agent
from google.adk.tools.bigquery import BigQueryToolset, BigQueryCredentialsConfig

import google.auth
from google.adk.tools.bigquery.config import BigQueryToolConfig, WriteMode

# 書き込みを拒否する設定
tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED)

# Application Default Credentialを利用した認証設定
application_default_credentials, _ = google.auth.default()
credentials_config = BigQueryCredentialsConfig(
    credentials=application_default_credentials
)

# BigQueryToolsetのインスタンス化(ask_data_insightsツールのみ利用)

bigquery_toolset = BigQueryToolset(
    credentials_config=credentials_config,
    bigquery_tool_config=tool_config,
    tool_filter=["ask_data_insights"]
)


# エージェントの定義
root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for patent data research.',
    instruction="""
    You are a patent research agent.
    You have access to the ask_data_insights tool to query the BigQuery patents-public-data dataset.
    Use this tool to answer the user's questions about patent data.
    """,
    tools=[bigquery_toolset]
)

  • こんな感じでした。

ree

  • エージェントの起動

ターミナルで以下のコマンドを実行し、Web UIを起動します。

adk web .
  • チャット画面が出てきます!




4.特許データを自然言語で検索する

  • Web UIが起動したら、チャット画面から特許データに関する質問を自然言語で投げることができます。例えば、以下のようなプロンプトを試してみましょう。

プロンプト例:

「patents-public-data.patents.publications テーブルを利用して、「自動運転」に関連する日本の特許(publication_numberが'JP'で始まるもの)について、出願人(assignee)ごとの特許数を降順でトップ5を教えて。あなたのプロジェクトIDは [YOUR_PROJECT_ID] です。」

ree

下記のAPIを有効にして、と怒られて有効化

ree

  • できました!

  • ree

  • 人が指定した自然文から作成した実際のクエリはこんな感じです。ABSTとタイトルを指定して「自動運転」でやっています。英語でもやってほしかったですが、これは指示すれば良さそうです。

  • いやーすごいですね!読みやすさのために改行するとこんな感じです。

SELECT 
t0.name AS assignee_name, 
COUNT(DISTINCT t.publication_number) AS count_of_patents 
FROM `patents-public-data`.`patents`.`publications` AS t, UNNEST(t.assignee_harmonized) AS t0 

WHERE t.country_code = 'JP' AND 
( 
EXISTS( 
   SELECT 1 FROM UNNEST(t.title_localized) AS title 
   WHERE title.text LIKE '%自動運転%' ) 
OR 
EXISTS( 
   SELECT 1 FROM UNNEST(t.abstract_localized) AS abstract 
   WHERE abstract.text LIKE '%自動運転%' )) 

GROUP BY assignee_name ORDER BY COUNT(DISTINCT t.publication_number) DESC LIMIT 5;

  • BigQueryもSQLっぽいものを書かないといかなかったのですが、これでアナリスト寄りの人もガンガン使えそうです。


ree

 
 
 

最新記事

すべて表示
geminiのurl_context機能について

1.はじめに url_context がGAになり、便利だったので紹介します。 2.Google Patentsでの利用 特許で言えば一番使うと思われるgoogle patentsのURLを指定して取得するもの。今までだとうまく内容を取れなかったのですが、url_conte...

 
 
 

コメント


所在地 神奈川県横浜市都筑区中川中央1-30-1プレミアヨコハマ3階 49番

代表者 西尾啓

設立年月日 2017/11/1

資本金 100万円

事業内容 知的財産情報の収集加工提供

©2023 by enlighton,inc.

bottom of page