Cómo crear un espacio de trabajo para agentes de QwenPaw con habilidades personalizadas, proveedores de modelos, acceso a la consola y pruebas de API de transmisión
si no (WORKING_DIR / “config.json”).exists(): run(qwenpaw_cmd(“init”, “–defaults”), check=False) else: print(“El directorio de trabajo de QwenPaw ya está inicializado:”, WORKING_DIR) proveedor_candidatos = [
{
“env”: “OPENAI_API_KEY”,
“provider_id”: “openai”,
“name”: “OpenAI”,
“base_url”: “https://api.openai.com/v1”,
“model”: os.environ.get(“QWENPAW_MODEL”, “gpt-4o-mini”),
“chat_model”: “OpenAIChatModel”,
“prefix”: “sk-“,
},
{
“env”: “OPENROUTER_API_KEY”,
“provider_id”: “openrouter”,
“name”: “OpenRouter”,
“base_url”: “https://openrouter.ai/api/v1”,
“model”: os.environ.get(“QWENPAW_MODEL”, “openai/gpt-4o-mini”),
“chat_model”: “OpenAIChatModel”,
“prefix”: “sk-or-“,
},
{
“env”: “DASHSCOPE_API_KEY”,
“provider_id”: “dashscope”,
“name”: “DashScope”,
“base_url”: “https://dashscope.aliyuncs.com/compatible-mode/v1”,
“model”: os.environ.get(“QWENPAW_MODEL”, “qwen-plus”),
“chat_model”: “OpenAIChatModel”,
“prefix”: “sk-“,
},
{
“env”: “DEEPSEEK_API_KEY”,
“provider_id”: “deepseek”,
“name”: “DeepSeek”,
“base_url”: “https://api.deepseek.com”,
“model”: os.environ.get(“QWENPAW_MODEL”, “deepseek-chat”),
“chat_model”: “OpenAIChatModel”,
“prefix”: “sk-“,
},
{
“env”: “GEMINI_API_KEY”,
“provider_id”: “gemini”,
“name”: “Google Gemini”,
“base_url”: “https://generativelanguage.googleapis.com”,
“model”: os.environ.get(“QWENPAW_MODEL”, “gemini-2.5-flash”),
“chat_model”: “GeminiChatModel”,
“prefix”: “”,
},
{
“env”: “GOOGLE_API_KEY”,
“provider_id”: “gemini”,
“name”: “Google Gemini”,
“base_url”: “https://generativelanguage.googleapis.com”,
“model”: os.environ.get(“QWENPAW_MODEL”, “gemini-2.5-flash”),
“chat_model”: “GeminiChatModel”,
“prefix”: “”,
},
]
seleccionado = Ninguno para candidato en proveedor_candidatos: api_key = colab_secret_or_env(candidato[“env”]) si api_key: seleccionado = {**candidato, “api_key”: api_key} break def read_json(ruta, predeterminado): intente: si ruta.exists(): devuelve json.loads(ruta.read_text(encoding=”utf-8″)) excepto Excepción: pasar devuelve el valor predeterminado def write_json(ruta, datos): ruta.parent.mkdir(parents=True, exist_ok=True) path.write_text(json.dumps(data, indent=2, sure_ascii=False), encoding=”utf-8″) config_path = WORKING_DIR / “config.json” config = read_json(config_path, {}) config.setdefault(“agents”, {}) config[“agents”].setdefault(“active_agent”, “predeterminado”) configuración[“agents”].setdefault(“orden_agente”, [“default”]) configuración[“agents”].setdefault(“perfiles”, {}) configuración[“agents”][“profiles”].setdefault(“predeterminado”, {}) configuración[“agents”][“profiles”][“default”].update( { “id”: “default”, “name”: “Colab Research Assistant”, “description”: “Un agente QwenPaw configurado para tutoriales de Google Colab, archivos locales, habilidades personalizadas y pruebas de API.”, “workspace_dir”: str(WORKSPACE_DIR), “enabled”: True, } ) config[“last_api”] = {“host”: “127.0.0.1”, “puerto”: PUERTO} configuración[“show_tool_details”] = Configuración verdadera[“user_timezone”] = “Asia/Calcuta” write_json(config_path, config)