OSVauco/agents/core-logic/agent.py

55 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""
agent.py — OSVauco root agent using ADK 1.x.
Requires: google-adk >= 1.0.0,<2.0.0
google-cloud-aiplatform >= 1.112.0
"""
import os
import logging
from google.adk.agents import Agent
logger = logging.getLogger(__name__)
PROJECT_ID = os.environ.get("GOOGLE_CLOUD_PROJECT", "propane-will-491900-m5")
LOCATION = os.environ.get("GOOGLE_CLOUD_LOCATION", "us-central1")
# RAG corpus resource name — injected via Secret Manager as env-var RAG_CORPUS
RAG_CORPUS = os.environ.get("RAG_CORPUS", "")
rag_tool = None
if RAG_CORPUS:
try:
# ADK 1.x: VertexAiRagRetrieval lives in google.adk.tools.retrieval
from google.adk.tools.retrieval.vertex_ai_rag_retrieval import VertexAiRagRetrieval
from vertexai.preview import rag
rag_tool = VertexAiRagRetrieval(
name="retrieve_knowledge",
description="Retrieve relevant documentation and context from the OSVauco knowledge base.",
rag_resources=[rag.RagResource(rag_corpus=RAG_CORPUS)],
similarity_top_k=10,
vector_distance_threshold=0.6,
)
logger.info(f"RAG tool initialised with corpus: {RAG_CORPUS}")
except ImportError as e:
logger.warning(f"VertexAiRagRetrieval not available — running without RAG: {e}")
rag_tool = None
else:
logger.warning("RAG_CORPUS env var not set — running without RAG retrieval")
# Root agent
root_agent = Agent(
model="gemini-2.5-flash",
name="osvauco_root",
description="OSVauco enterprise agent for propane-will-491900-m5",
instruction=(
"You are OSVauco, a GCP knowledge and workflow agent. "
"Use the retrieve_knowledge tool to answer questions from the knowledge base. "
"Always prefer grounded, documented answers over speculation. "
"Always respond in Norwegian (Bokmål) regardless of the language used in the query."
),
tools=[rag_tool] if rag_tool else [],
)