Fix: Restored full agent capabilities and fixed server variables
This commit is contained in:
42
ai_agent.py
42
ai_agent.py
@@ -34,34 +34,38 @@ def get_llm_response(prompt: str, provider: str, cfg: dict, temp: float = 0.7, c
|
|||||||
return "Provedor desconhecido."
|
return "Provedor desconhecido."
|
||||||
|
|
||||||
def query_agent(prompt: str, override_provider: str = None, chat_history: list = None) -> str:
|
def query_agent(prompt: str, override_provider: str = None, chat_history: list = None) -> str:
|
||||||
"""
|
# 1. Ajuste de Provedor e Configuração
|
||||||
Motor Agente em Loop (ReAct): Pensamento -> Ação -> Observação -> Resposta Final.
|
|
||||||
"""
|
|
||||||
# Ajuste de Provedor e Contexto
|
|
||||||
cfg = get_config()
|
cfg = get_config()
|
||||||
provider = override_provider or cfg.get("active_provider", "gemini")
|
provider = override_provider or cfg.get("active_provider", "gemini")
|
||||||
|
|
||||||
# Contexto de Ferramentas
|
|
||||||
tools_desc = "\n".join([f"- {k}: {v['description']}" for k,v in AVAILABLE_TOOLS.items()])
|
tools_desc = "\n".join([f"- {k}: {v['description']}" for k,v in AVAILABLE_TOOLS.items()])
|
||||||
|
|
||||||
# REGRAS DO SYSADMIN (Base)
|
# 2. Prompt especializado (O manual de elite)
|
||||||
system_prompt_base = """Você é o [Antigravity VPS Agent], SysAdmin de elite do Marcos.
|
system_prompt_base = """Você é o [Antigravity VPS Agent], SysAdmin de elite do Marcos.
|
||||||
REGRAS: 1. Aja como root na VPS (/host_root). 2. Use [TOOL:nome] arg [/TOOL] para ferramentas. 3. Responda em Português.
|
Você tem acesso root completo à VPS e deve agir de forma profissional e precisa.
|
||||||
FERRAMENTAS: {TOOLS_LIST}"""
|
|
||||||
|
|
||||||
# Prompt dinâmico por Provedor
|
### REGRAS DE OURO:
|
||||||
if provider == "ollama":
|
1. Responda em PORTUGUÊS (Brasil).
|
||||||
system_prompt = "Você é o [BotVPS], o SysAdmin do Marcos. Se ele pedir uma imagem ou arquivo, use OBRIGATORIAMENTE [TOOL:nome] arg [/TOOL] para agir na VPS. Não dê conselhos teóricos, aja agora. Responda em Português."
|
2. Se o usuário pedir o status da VPS, SEMPRE use a ferramenta 'get_system_health'.
|
||||||
num_context = 2048
|
3. Se o usuário pedir algo sobre containers, use 'get_docker_stats'.
|
||||||
else:
|
4. Antes de decidir que um arquivo não existe, use 'run_bash_command' com 'ls' para verificar o diretório.
|
||||||
|
5. NUNCA invente links fictícios. Se localizar um arquivo, use `read_vps_file`.
|
||||||
|
6. O disco da VPS está focado em `/host_root`. Use este caminho para buscar arquivos.
|
||||||
|
7. Use [TOOL:nome] arg [/TOOL] para ações. Rode UMA por vez.
|
||||||
|
|
||||||
|
### RESPOSTA FINAL:
|
||||||
|
- Deve ter um resumo técnico e uma seção <REFINED> com Markdown.
|
||||||
|
- Se localizou imagem, use  dentro do <REFINED>.
|
||||||
|
|
||||||
|
### FERRAMENTAS:
|
||||||
|
{TOOLS_LIST}"""
|
||||||
system_prompt = system_prompt_base.replace("{TOOLS_LIST}", tools_desc)
|
system_prompt = system_prompt_base.replace("{TOOLS_LIST}", tools_desc)
|
||||||
num_context = 4096
|
|
||||||
|
|
||||||
# Limpeza de Contexto (Remove echos de 'U:' e 'A:')
|
# 3. Contexto e Memória Otimizada
|
||||||
hist_list = chat_history[-3:] if chat_history else []
|
num_context = 2048 if provider == "ollama" else 4096
|
||||||
hist_txt = "\n".join([f"Anteriores:\nU: {m['user']}\nA: {m['bot']}" for m in hist_list])
|
hist_list = chat_history[-4:] if chat_history else []
|
||||||
|
hist_txt = "\n".join([f"U: {m['user']}\nA: {m['bot']}" for m in hist_list])
|
||||||
|
|
||||||
execution_context = f"{hist_txt}\n\nPERGUNTA ATUAL: {prompt}\nRESPOSTA DO AGENTE:"
|
execution_context = f"\n{hist_txt}\nU: {prompt}\nA:"
|
||||||
current_reasoning = ""
|
current_reasoning = ""
|
||||||
|
|
||||||
max_loops = 12
|
max_loops = 12
|
||||||
|
|||||||
Reference in New Issue
Block a user