# Instrucciones para el agente: OASIS: simula interacciones sociales entre agentes

Pega este texto a tu agente (Claude Code, Codex, OpenCode, Hermes o el que uses) y dile «ayúdame a montarlo». Son los pasos para ponerlo en marcha; el porqué de cada pieza está en la guía completa.

- Dificultad: avanzado
- Proyecto: https://github.com/camel-ai/oasis (licencia Apache-2.0)
- Guía completa: https://lab.wisd.ai/hub/oasis-social-agent-simulation

---

## Para el agente: cómo acompañar al usuario

1. Pregunta primero para qué lo quiere. Si su objetivo no necesita algún paso, sáltalo.
2. Antes de instalar, comprueba lo que ya tiene (versiones, claves, sistema operativo).
3. Avanza un paso cada vez: explica en una frase qué vas a hacer y deja que el usuario lo ejecute o lo apruebe.
4. Tras cada paso, comprueba que funcionó antes de seguir. Si falla, para y explica el error.
5. No inventes comandos ni opciones: si la documentación del proyecto contradice estos pasos, manda la documentación.
6. Al terminar, haz una prueba real con el objetivo del usuario y dile dónde profundizar.

---

## Pasos de configuración

Comprueba que tu entorno tiene Python ≥3.10 y <3.12 con pip, según el [pyproject.toml oficial](https://github.com/camel-ai/oasis/blob/main/pyproject.toml). Usa una carpeta de ensayo nueva: el ejemplo borra `./data/reddit_simulation.db` si existe. Antes de instalar, prepara un entorno de Python 3.10 o 3.11 con `python -m venv .venv` y `source .venv/bin/activate` en macOS/Linux.

Instala el paquete del README:

```sh
pip install camel-oasis
```

Carga `OPENAI_API_KEY` desde tu entorno privado con acceso a `gpt-4o-mini`, el modelo usado por la receta. Prepara los perfiles:

```sh
mkdir -p data/reddit
curl -L https://raw.githubusercontent.com/camel-ai/oasis/main/data/reddit/user_data_36.json -o data/reddit/user_data_36.json
```

Guarda el ejemplo oficial completo en `simulacion.py` en esa carpeta:

```python
import asyncio
import os

from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType

import oasis
from oasis import (ActionType, LLMAction, ManualAction,
                   generate_reddit_agent_graph)


async def main():
    # Define the model for the agents
    openai_model = ModelFactory.create(
        model_platform=ModelPlatformType.OPENAI,
        model_type=ModelType.GPT_4O_MINI,
    )

    # Define the available actions for the agents
    available_actions = [
        ActionType.LIKE_POST,
        ActionType.DISLIKE_POST,
        ActionType.CREATE_POST,
        ActionType.CREATE_COMMENT,
        ActionType.LIKE_COMMENT,
        ActionType.DISLIKE_COMMENT,
        ActionType.SEARCH_POSTS,
        ActionType.SEARCH_USER,
        ActionType.TREND,
        ActionType.REFRESH,
        ActionType.DO_NOTHING,
        ActionType.FOLLOW,
        ActionType.MUTE,
    ]

    agent_graph = await generate_reddit_agent_graph(
        profile_path="./data/reddit/user_data_36.json",
        model=openai_model,
        available_actions=available_actions,
    )

    # Define the path to the database
    db_path = "./data/reddit_simulation.db"

    # Delete the old database
    if os.path.exists(db_path):
        os.remove(db_path)

    # Make the environment
    env = oasis.make(
        agent_graph=agent_graph,
        platform=oasis.DefaultPlatformType.REDDIT,
        database_path=db_path,
    )

    # Run the environment
    await env.reset()

    actions_1 = {}
    actions_1[env.agent_graph.get_agent(0)] = [
        ManualAction(action_type=ActionType.CREATE_POST,
                     action_args={"content": "Hello, world!"}),
        ManualAction(action_type=ActionType.CREATE_COMMENT,
                     action_args={
                         "post_id": "1",
                         "content": "Welcome to the OASIS World!"
                     })
    ]
    actions_1[env.agent_graph.get_agent(1)] = ManualAction(
        action_type=ActionType.CREATE_COMMENT,
        action_args={
            "post_id": "1",
            "content": "I like the OASIS world."
        })
    await env.step(actions_1)

    actions_2 = {
        agent: LLMAction()
        for _, agent in env.agent_graph.get_agents()
    }

    # Perform the actions
    await env.step(actions_2)

    # Close the environment
    await env.close()


if __name__ == "__main__":
    asyncio.run(main())
```

Desde la carpeta de ensayo, con el entorno activado:

```sh
python simulacion.py
```

Crea `data/reddit_simulation.db` con publicaciones y comentarios simulados, incluidos `Hello, world!` y `Welcome to the OASIS World!` del primer paso manual y las acciones del modelo del siguiente. Consulta esa base con un visor SQLite para contrastar el registro. No publica en Reddit real.

## Comprobación

Confirma que los agentes y acciones coinciden con la configuración. Revisa los eventos producidos y registra el modelo y las condiciones de la prueba.

## Si algo falla

Si faltan perfiles, comprueba la ruta del archivo. Si el modelo no responde, revisa proveedor y cuota antes de aumentar el tamaño del experimento.

Consulta [el README oficial](https://github.com/camel-ai/oasis#readme) para requisitos y variantes de instalación.
