🤖

Agente IA Autónomo

👨‍🍳👑 Master Chef⏱️ 60 minutos

📋 Prerequisitos sugeridos

  • Python
  • API de LLM (Gemini)

Lo que vas a construir

Un agente de IA autonomo que razona, decide que herramientas usar, y completa tareas por si mismo.

Le das una tarea como "investiga cuanto cuesta un vuelo a Tokio y guardalo en un archivo", y el agente piensa paso a paso: primero busca en web, luego calcula fechas, finalmente escribe el archivo. Sin que le digas como hacerlo.

Al terminar tendras un agente en Python usando el patron ReAct (Reasoning + Acting) con Gemini. Podras darle herramientas (busqueda web, calculadora, archivos) y pedirle tareas complejas que resuelve de forma autonoma.


El prompt para empezar

Crea un agente IA en Python con:

  1. Patrón ReAct (Reasoning + Acting)
  2. Herramientas: búsqueda web, calculadora, leer archivos
  3. Loop que ejecute hasta completar la tarea
  4. Usa Gemini como LLM

Lo que la IA creará

import google.generativeai as genai
import os
import json

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-1.5-flash")

# Definir herramientas
def search_web(query: str) -> str:
    """Simula búsqueda web"""
    return f"Resultados para '{query}': Info relevante encontrada..."

def calculate(expression: str) -> str:
    """Evalúa expresiones matemáticas"""
    try:
        return str(eval(expression))
    except:
        return "Error en cálculo"

def read_file(path: str) -> str:
    """Lee contenido de archivo"""
    try:
        with open(path) as f:
            return f.read()[:1000]
    except:
        return f"No se pudo leer {path}"

TOOLS = {
    "search_web": search_web,
    "calculate": calculate,
    "read_file": read_file,
}

SYSTEM_PROMPT = """Eres un agente que resuelve tareas paso a paso.

Para cada paso, responde en formato JSON:
{
  "thought": "Tu razonamiento",
  "action": "nombre_herramienta",
  "action_input": "parámetro"
}

O si terminaste:
{
  "thought": "Razonamiento final",
  "final_answer": "Tu respuesta"
}

Herramientas disponibles:
- search_web(query): Busca en internet
- calculate(expression): Calcula expresiones
- read_file(path): Lee archivos
"""

def run_agent(task: str, max_steps: int = 10):
    """Ejecutar agente hasta completar tarea"""
    messages = [
        {"role": "user", "parts": [SYSTEM_PROMPT + f"\n\nTarea: {task}"]}
    ]

    for step in range(max_steps):
        response = model.generate_content(messages)
        text = response.text

        # Parsear respuesta JSON
        try:
            data = json.loads(text.strip().strip("```json").strip("```"))
        except:
            print(f"Error parseando: {text}")
            continue

        print(f"\n--- Paso {step + 1} ---")
        print(f"Pensamiento: {data.get('thought')}")

        # ¿Terminó?
        if "final_answer" in data:
            print(f"\n✅ Respuesta: {data['final_answer']}")
            return data["final_answer"]

        # Ejecutar herramienta
        action = data.get("action")
        action_input = data.get("action_input")

        if action in TOOLS:
            result = TOOLS[action](action_input)
            print(f"Acción: {action}({action_input})")
            print(f"Resultado: {result}")

            messages.append({"role": "model", "parts": [text]})
            messages.append({"role": "user", "parts": [f"Observación: {result}"]})

    return "Máximo de pasos alcanzado"

# Uso
run_agent("¿Cuál es el resultado de 45 * 23 + 100?")

Siguiente nivel

Clasificador de Imágenes