Stability: CPU fix with psutil interval and LLM timeouts

This commit is contained in:
Marcos
2026-03-22 14:36:20 -03:00
parent fde085835b
commit 64731a24a5
9 changed files with 2073 additions and 13 deletions

View File

@@ -11,21 +11,30 @@ def get_llm_response(prompt: str, provider: str, cfg: dict) -> str:
api_key = cfg.get("gemini_api_key") or os.getenv("GEMINI_API_KEY")
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={api_key}"
payload = {"contents": [{"parts": [{"text": prompt}]}]}
res = requests.post(url, json=payload)
if res.status_code == 200:
return res.json()["candidates"][0]["content"]["parts"][0]["text"]
return f"Erro Gemini: {res.text}"
try:
res = requests.post(url, json=payload, timeout=30)
if res.status_code == 200:
data = res.json()
if "candidates" in data and len(data["candidates"]) > 0:
return data["candidates"][0]["content"]["parts"][0]["text"]
return f"Erro Gemini (Dados Vazios): {res.text}"
return f"Erro Gemini (Status {res.status_code}): {res.text}"
except Exception as e:
return f"Erro de Conexão Gemini: {str(e)}"
elif provider == "ollama":
ollama_host = os.getenv("OLLAMA_HOST", "http://ollama-lw4s8g4gc8gss4gkc4gg0wk4:11434")
res = requests.post(f"{ollama_host}/api/generate", json={
"model": os.getenv("OLLAMA_MODEL", "qwen2.5-coder:1.5b"),
"prompt": prompt,
"stream": False
})
if res.status_code == 200:
return res.json().get("response", "")
return f"Erro Ollama: {res.text}"
try:
res = requests.post(f"{ollama_host}/api/generate", json={
"model": os.getenv("OLLAMA_MODEL", "qwen2.5-coder:1.5b"),
"prompt": prompt,
"stream": False
}, timeout=30)
if res.status_code == 200:
return res.json().get("response", "")
return f"Erro Ollama (Status {res.status_code}): {res.text}"
except Exception as e:
return f"Erro de Conexão Ollama: {str(e)}"
return "Provedor desconhecido."
@@ -92,6 +101,8 @@ Resposta: A memória RAM está operando com 20% de uso.
print(f"--- INICIANDO AGENTE ({provider}) ---")
for i in range(max_loops):
import time
time.sleep(0.5) # Respiro para a CPU
print(f"\n[LOOP {i+1}/{max_loops}]")
full_prompt = system_prompt + current_iteration_history
response = get_llm_response(full_prompt, provider, cfg)