Spaces:
Runtime error
Runtime error
Download utils.py from airsltd/base-teams: direct link, hf CLI and curl.
- Browser
- Download file 6.15 kB
-
https://huggingface.co/spaces/airsltd/base-teams/resolve/ed001da170dab349974a2b10e69eca40edd14463/utils.py
- Command line
-
hf download hf://spaces/airsltd/base-teams@ed001da170dab349974a2b10e69eca40edd14463/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/airsltd/base-teams/resolve/ed001da170dab349974a2b10e69eca40edd14463/utils.py
6.15 kB
| from google.adk.agents import Agent | |
| from google.adk.agents.invocation_context import InvocationContext | |
| from google.adk.tools import google_search | |
| from supabase import create_client, Client | |
| import logging # 导入 logging 模块 | |
| import os,json | |
| # 配置日志 | |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(name)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| class Base_Agent(Agent): | |
| def __init__(self, agent_id: str): | |
| logger.info("Base_Agent __init__ started.") | |
| # 从环境变量加载 Supabase URL 和 Key | |
| url: str = os.environ.get("SUPABASE_URL") | |
| key: str = os.environ.get("SUPABASE_KEY") # 从环境变量获取 Supabase Key | |
| if not url or not key: | |
| logger.error("Supabase URL or Key not set in environment variables.") | |
| # 如果环境变量未设置,可以使用默认配置 | |
| logger.warning("Supabase URL and Key not set. Using default agent configuration.") | |
| super().__init__( | |
| name="基础助手", | |
| model="gemini-2.0-flash-exp", | |
| instruction="执行基本指令", | |
| tools=[google_search], | |
| description="一个执行基本通用命令的基础助手" | |
| ) | |
| logger.info("Base_Agent initialized with default configuration.") | |
| return # Exit __init__ if using default config | |
| logger.info("Supabase URL and Key loaded from environment variables.") | |
| # 创建 Supabase 客户端 | |
| try: | |
| supabase: Client = create_client(url, key) | |
| logger.info("Supabase client created successfully.") | |
| except Exception as e: | |
| logger.error(f"Error creating Supabase client: {e}") | |
| # 如果创建客户端失败,使用默认配置 | |
| logger.warning("Error creating Supabase client. Using default agent configuration.") | |
| super().__init__( | |
| name="基础助手", | |
| model="gemini-2.0-flash-exp", | |
| instruction="执行基本指令", | |
| tools=[google_search], | |
| description="一个执行基本通用命令的基础助手" | |
| ) | |
| return # Exit __init__ if using default config | |
| # 从数据库加载 agent 配置信息 | |
| try: | |
| logger.info(f"Attempting to load agent configuration from Supabase for id: {agent_id}") | |
| # 查询 airs_agents 表,获取对应的 agent 配置 | |
| data, count = supabase.table('airs_agents').select('*').eq('id', agent_id).execute() | |
| if not data or not data[0]: | |
| logger.error(f"Agent configuration for id '{self.agent_id}' not found in Supabase table 'airs_agents'.") | |
| # 如果配置未找到,使用默认配置 | |
| logger.warning("Agent configuration not found. Using default agent configuration.") | |
| super().__init__( | |
| name="基础助手", | |
| model="gemini-2.0-flash-exp", | |
| instruction="执行基本指令", | |
| tools=[google_search], | |
| description="一个执行基本通用命令的基础助手" | |
| ) | |
| return # Exit __init__ if using default config | |
| print('\n\n\n\ndata',data) | |
| print('**************************') | |
| print('data[0]',data[0]) | |
| print('data[1]',data[1]) | |
| print('data[1][0]',data[1][0]) | |
| config = data[1][0] # 假设查询结果是列表中的第一个字典 | |
| logger.info("Agent configuration data fetched from Supabase. config: ",) | |
| # 解析 tools 字段(假设存储为 JSONB) | |
| tools_list = [] | |
| if config.get("tools"): | |
| logger.info("Processing tools field.") | |
| try: | |
| stored_tools = json.loads(config["tools"]) if isinstance(config["tools"], str) else config["tools"] | |
| # 示例:如果存储的是工具名称列表,查找对应的工具对象 | |
| available_tools = {"google_search": google_search} # 假设可用的工具映射 | |
| tools_list = [available_tools.get(tool_name) for tool_name in stored_tools if available_tools.get(tool_name)] | |
| print('\n\n\n\ntools_list',tools_list) | |
| # logger.info(f"Tools processed: {[tool.__name__ for tool in tools_list if tool]}") | |
| except Exception as tool_e: | |
| logger.error(f"Error parsing or mapping tools: {tool_e}") | |
| # 如果解析或映射工具失败,可以使用默认工具或空列表 | |
| tools_list = [google_search] # 默认使用 google_search | |
| logger.warning("Using default tool: google_search") | |
| # 使用从数据库获取的配置初始化 Base_Agent 实例自身 | |
| print('\n\n\n\nconfig: ',config) | |
| super().__init__( | |
| name=config.get("name", "基础助手"), | |
| model=config.get("model", "gemini-2.0-flash-exp"), | |
| instruction=config.get("instruction", "执行基本指令"), | |
| tools=tools_list, # 使用从数据库加载并解析的工具列表 | |
| description=config.get("description", "一个执行基本通用命令的基础助手") | |
| ) | |
| logger.info("Base_Agent initialized successfully with Supabase configuration.") | |
| except Exception as e: | |
| logger.error(f"Error loading agent configuration from Supabase: {e}") | |
| # 如果从数据库加载失败,使用默认配置 | |
| logger.warning("Error loading agent configuration from Supabase. Using default agent configuration.") | |
| super().__init__( | |
| name="基础助手", | |
| model="gemini-2.0-flash-exp", | |
| instruction="执行基本指令", | |
| tools=[google_search], | |
| description="一个执行基本通用命令的基础助手" | |
| ) | |
| logger.info("Base_Agent __init__ finished.") | |