🚀 Auto-deploy: BotVPS atualizado em 02/05/2026 15:37:40
This commit is contained in:
36
ai_agent.py
36
ai_agent.py
@@ -29,11 +29,22 @@ async def query_agent_async(prompt: str, override_provider=None, chat_history=No
|
||||
# Unifica ferramentas (agora centralizadas em core_tools)
|
||||
tools_desc = "\n".join([f"- {k}: {v.get('description', '')}" for k, v in AVAILABLE_TOOLS.items()])
|
||||
|
||||
# Identifica o modelo para o prompt do sistema
|
||||
current_model = cfg.get("model") or "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"
|
||||
# Identifica o modelo padrão baseado no provedor
|
||||
if provider == "minimax":
|
||||
current_model = cfg.get("minimax_model") or "abab7-preview"
|
||||
model_desc = f"**{current_model}** via Hermes (MiniMax API)"
|
||||
elif provider == "openrouter":
|
||||
current_model = cfg.get("openrouter_model") or "qwen/qwen-2.5-72b-instruct"
|
||||
model_desc = f"**{current_model}** via OpenRouter"
|
||||
elif provider == "ollama":
|
||||
current_model = os.getenv("OLLAMA_MODEL", "llama3.2:1b")
|
||||
model_desc = f"**{current_model}** (Local)"
|
||||
else:
|
||||
current_model = cfg.get("model") or "qwen/qwen-2.5-72b-instruct"
|
||||
model_desc = f"**{current_model}**"
|
||||
|
||||
system_prompt = f"""Você é o Antigravity, um assistente de IA de alto desempenho operando na VPS do Marcos.
|
||||
Seu modelo base atual é o **{current_model}** via OpenRouter.
|
||||
Seu modelo base atual é o {model_desc}.
|
||||
|
||||
Sua natureza é dual:
|
||||
1. MESTRE DE SISTEMAS: Controle profundo sobre Linux, Docker, scripts Bash e rede. Seja preciso, seguro e eficiente em tarefas técnicas.
|
||||
@@ -88,16 +99,17 @@ DIRETRIZES:
|
||||
try:
|
||||
res_dict = await call_llm(provider, current_model, system_prompt + current_history)
|
||||
|
||||
# Lógica de FALLBACK: Se o modelo atual falhar, tenta o Qwen e FIXA nele
|
||||
if (res_dict.get("content", "").startswith("Erro OpenRouter") or "error" in res_dict.get("content", "").lower()) and provider == "openrouter" and current_model != "qwen/qwen-2.5-72b-instruct":
|
||||
backup_model = "qwen/qwen-2.5-72b-instruct"
|
||||
print(f"⚠️ [FALLBACK] Falha no {current_model}. Migrando para {backup_model}...")
|
||||
res_dict = await call_llm("openrouter", backup_model, system_prompt + current_history)
|
||||
current_model = backup_model # Fixa no backup para as próximas iterações
|
||||
# Lógica de FALLBACK para OpenRouter
|
||||
if provider == "openrouter" and (res_dict.get("content", "").startswith("Erro OpenRouter") or "error" in res_dict.get("content", "").lower()):
|
||||
if current_model != "qwen/qwen-2.5-72b-instruct":
|
||||
backup_model = "qwen/qwen-2.5-72b-instruct"
|
||||
print(f"⚠️ [FALLBACK] Falha no {current_model}. Migrando para {backup_model}...")
|
||||
res_dict = await call_llm("openrouter", backup_model, system_prompt + current_history)
|
||||
current_model = backup_model
|
||||
|
||||
except Exception as e:
|
||||
# Lógica de EMERGÊNCIA: Se houver exceção, tenta o Qwen e fixa nele
|
||||
if current_model != "qwen/qwen-2.5-72b-instruct":
|
||||
# Lógica de EMERGÊNCIA para OpenRouter
|
||||
if provider == "openrouter" and current_model != "qwen/qwen-2.5-72b-instruct":
|
||||
backup_model = "qwen/qwen-2.5-72b-instruct"
|
||||
print(f"⚠️ [EMERGENCY FALLBACK] Exceção no {current_model} ({str(e)}). Migrando para {backup_model}...")
|
||||
try:
|
||||
@@ -105,6 +117,8 @@ DIRETRIZES:
|
||||
current_model = backup_model
|
||||
except:
|
||||
return f"RESUMO: ❌ Desculpe, instabilidade crítica no OpenRouter. Por favor, tente novamente."
|
||||
elif provider == "minimax":
|
||||
return f"RESUMO: ❌ Erro ao contatar a API do MiniMax (Hermes): {str(e)}"
|
||||
else:
|
||||
return f"Erro Crítico no Agente: {str(e)}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user