0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ADKでVertex AI RAG Engineを参照するAIエージェントを開発する

Posted at

初めに

以前書いたGoogleのAgent Development KitでAIエージェント開発に入門するの続きです。今回はVertex AI RAG Engineに構築したRAGを参照するAIエージェントを作成してみようと思います。

ADKとは

ADKとはAgent Development Kitの略で、AIエージェントを作成するためのフレームワークです。
このフレームワークはGoogleから提供されており、現在はPythonとJavaの2言語で利用することができます。

LLMはGoogleが提供しているモデルをオンラインで利用することが可能です。
Vertex AI、もしくはGoogle AI Studioのモデルを利用することができます。

Vertex AI RAG Engine

Vertex AI RAG EngineとはRAGを構築するGoogleのサービスの一つです。
GCS上にアップロードした資料を取り込み、RAGエンジンとしてデプロイしてくれます。

開発してみる

というわけで開発してみましょう。
今回はこちらのサンプルプロジェクトを参考に構築してみます。

RAGの構築

Vertex AI RAG EngineのUI上から構築可能です。
今回はPHPのWebフレームワークFlowの公式ドキュメントをアップロードしました。
※細かい方法は割愛します。

ADKの実装

以前こちらの記事で初歩的な構築方法をまとめました。
環境などは同じものを利用します。

ディレクトリ構成も同じです。

parent_folder/
    multi_tool_agent/
        __init__.py
        agent.py
        .env

修正内容はこちら。

  • agent.pyにRAGを参照するツールを作成
  • .envにRAGの情報を記載

agent.pyにRAGを参照するツールを作成

VertexAiRagRetrieval

ask_vertex_retrieval = VertexAiRagRetrieval(
    name="flow_rag_documentation",
    description=(
        'This is documentation od PHP web Framework Flow'
    ),
    rag_resources=[
        rag.RagResource(
            rag_corpus= os.environ.get("RAG_CORPUS"),
        )
    ],
    similarity_top_k=1,
    vector_distance_threshold=0.6,
)

作成したツールはLlmAgent作成のtoolsに追加しましょう。

root_agent = LlmAgent(
    name="flow_rag_agent",
    model=os.environ.get("MODEL"),
    instruction=instruction,
    tools=[ask_vertex_retrieval],
)

実際に作成したagent.pyの全体がこちら

Agents.pyの全体
import os

from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools.retrieval.vertex_ai_rag_retrieval import VertexAiRagRetrieval
from vertexai.preview import rag

from dotenv import load_dotenv

load_dotenv()


ask_vertex_retrieval = VertexAiRagRetrieval(
    name="flow_rag_documentation",
    description=(
        'This is documentation od PHP web Framework Flow'
    ),
    rag_resources=[
        rag.RagResource(
            rag_corpus= os.environ.get("RAG_CORPUS"),
        )
    ],
    similarity_top_k=1,
    vector_distance_threshold=0.6,
)

instruction = """
    あなたはPHPフレームワークFlowに関する質問に答えるエージェントです。
    必要に応じてflow_rag_documentationを見て、質問に答えてください。
"""


root_agent = LlmAgent(
    name="flow_rag_agent",
    model=os.environ.get("MODEL"),
    instruction=instruction,
    tools=[ask_vertex_retrieval],
)

.envにRAGの情報を記載

RAG_CORPUSとしてRAGのURLのリソース名を追加しました。
リソース名はVertex AI RAG EngineのUI上から確認できます。

GOOGLE_GENAI_USE_VERTEXAI=TRUE
GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
GOOGLE_CLOUD_LOCATION=LOCATION

MODEL=gemini-2.5-flash
RAG_CORPUS=projects/hogehoge/locations/us-central1/ragCorpora/fuga

動作確認

前回同様、adk webコマンドでAIエージェントを立ち上げます。

$ adk web
INFO:     Started server process [24864]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Flowについて質問してみると、ちゃんと答えが返ってきました!

image.png

終わりに

今回はADKでVertex AI RAG Engineを参照する方法を解説しました。
本当はVertex AI Agent Engineへデプロイしるところまでやりたかったのですが、デプロイしたエージェントからRAGが呼び出せず詰まってしまったので、それはまた今度にします。

ここまでご覧いただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?