mirror of
https://github.com/EvolutionAPI/adk-python.git
synced 2025-07-13 15:14:50 -06:00
96 lines
3.2 KiB
Python
96 lines
3.2 KiB
Python
# Copyright 2025 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import os
|
|
|
|
from dotenv import load_dotenv
|
|
from google.adk import Agent
|
|
from google.adk.auth import AuthCredential
|
|
from google.adk.auth import AuthCredentialTypes
|
|
from google.adk.auth import OAuth2Auth
|
|
from google.adk.tools.application_integration_tool.application_integration_toolset import ApplicationIntegrationToolset
|
|
from google.adk.tools.openapi_tool.auth.auth_helpers import dict_to_auth_scheme
|
|
from google.genai import types
|
|
|
|
# Load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
connection_name = os.getenv("CONNECTION_NAME")
|
|
connection_project = os.getenv("CONNECTION_PROJECT")
|
|
connection_location = os.getenv("CONNECTION_LOCATION")
|
|
client_secret = os.getenv("CLIENT_SECRET")
|
|
client_id = os.getenv("CLIENT_ID")
|
|
|
|
|
|
oauth2_data_google_cloud = {
|
|
"type": "oauth2",
|
|
"flows": {
|
|
"authorizationCode": {
|
|
"authorizationUrl": "https://accounts.google.com/o/oauth2/auth",
|
|
"tokenUrl": "https://oauth2.googleapis.com/token",
|
|
"scopes": {
|
|
"https://www.googleapis.com/auth/cloud-platform": (
|
|
"View and manage your data across Google Cloud Platform"
|
|
" services"
|
|
),
|
|
"https://www.googleapis.com/auth/calendar.readonly": (
|
|
"View your calendars"
|
|
),
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
oauth2_scheme = dict_to_auth_scheme(oauth2_data_google_cloud)
|
|
|
|
auth_credential = AuthCredential(
|
|
auth_type=AuthCredentialTypes.OAUTH2,
|
|
oauth2=OAuth2Auth(
|
|
client_id=client_id,
|
|
client_secret=client_secret,
|
|
),
|
|
)
|
|
|
|
calendar_tool = ApplicationIntegrationToolset(
|
|
project=connection_project,
|
|
location=connection_location,
|
|
tool_name_prefix="calendar_tool",
|
|
connection=connection_name,
|
|
actions=["GET_calendars/%7BcalendarId%7D/events"],
|
|
tool_instructions="""
|
|
Use this tool to list events in a calendar. Get calendarId from the user and use it in tool as following example:
|
|
connectorInputPayload: { "Path parameters": { "calendarId": "primary" } }. Follow the schema correctly. Note its "Path parameters" and not "Path_parameters".
|
|
""",
|
|
auth_scheme=oauth2_scheme,
|
|
auth_credential=auth_credential,
|
|
)
|
|
|
|
root_agent = Agent(
|
|
model="gemini-2.0-flash",
|
|
name="data_processing_agent",
|
|
description="Agent that can list events in a calendar.",
|
|
instruction="""
|
|
Helps you with calendar related tasks.
|
|
""",
|
|
tools=calendar_tool.get_tools(),
|
|
generate_content_config=types.GenerateContentConfig(
|
|
safety_settings=[
|
|
types.SafetySetting(
|
|
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
threshold=types.HarmBlockThreshold.OFF,
|
|
),
|
|
]
|
|
),
|
|
)
|