|
|
from google.adk import Agent, Runner |
|
|
from google.adk.sessions import InMemorySessionService |
|
|
from tools import create_plant_diagnosis_tool, create_chroma_db_search_tool, create_bigquery_search_tool |
|
|
|
|
|
def initialize_adk(vision_model, processor, retriever): |
|
|
""" |
|
|
Initializes the ADK agent, tools, and runner. |
|
|
|
|
|
Args: |
|
|
vision_model: The loaded vision model. |
|
|
processor: The model's processor. |
|
|
retriever: The RAG retriever (no longer used but kept for compatibility). |
|
|
|
|
|
Returns: |
|
|
A dictionary containing the ADK components, or None on error. |
|
|
""" |
|
|
print("Initializing ADK Tools and Agent...") |
|
|
try: |
|
|
if vision_model and processor: |
|
|
diagnosis_tool = create_plant_diagnosis_tool(model=vision_model, processor=processor) |
|
|
chroma_db_tool = create_chroma_db_search_tool() |
|
|
bigquery_tool = create_bigquery_search_tool() |
|
|
|
|
|
agent = Agent( |
|
|
name="AuraMindGlowAgent", |
|
|
model="gemini-2.0-flash", |
|
|
description="A farming assistant that can diagnose plant health and suggest remedies from local or cloud knowledge bases.", |
|
|
instruction="You are a friendly and intelligent farming assistant. Your primary goal is to help users identify plant health issues and find solutions. You have several tools at your disposal:\n" \ |
|
|
"- Use the 'diagnose_plant' tool when the user provides an image.\n" \ |
|
|
"- After diagnosing, use the 'search_chroma_db' tool to find a remedy in the local knowledge base.\n" \ |
|
|
"- If the user asks for cloud-based information or structured data, use the 'search_bigquery' tool.\n" \ |
|
|
"Always prioritize the local knowledge base (ChromaDB) for remedies unless the user specifies otherwise.", |
|
|
tools=[diagnosis_tool, chroma_db_tool, bigquery_tool] |
|
|
) |
|
|
|
|
|
session_service = InMemorySessionService() |
|
|
runner = Runner(agent=agent, app_name="AuraMindGlow", session_service=session_service) |
|
|
|
|
|
print("β
ADK Agent and Runner initialized successfully!") |
|
|
return { |
|
|
"agent": agent, |
|
|
"runner": runner, |
|
|
"diagnosis_tool": diagnosis_tool, |
|
|
"remedy_tool": chroma_db_tool, |
|
|
"session_service": session_service |
|
|
} |
|
|
else: |
|
|
print("β Skipping ADK setup due to errors in model or RAG loading.") |
|
|
return None |
|
|
except Exception as e: |
|
|
print(f"β CRITICAL ERROR during ADK setup: {e}") |
|
|
return None |
|
|
|