lab
Esc

Prueba con

↑↓ para moverte · Enter para abrir · también en /buscar?q= para agentes

sistema avanzado pythonmultiagentesimulacion

OASIS: simula interacciones sociales entre agentes

Construye experimentos con perfiles de agentes, publicaciones e interacciones en una red social simulada.

✓ verificado el 26 oct 2026

Instrucciones para tu agente

Esto es lo que se copia. Pégaselo a tu agente y te lo monta paso a paso.

O ábrelo directamente en ClaudeChatGPT

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.


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. 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:

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:

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:

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:

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 para requisitos y variantes de instalación.

ver en .md ¿Prefieres el recurso entero?

Qué es

OASIS es un entorno de simulación de interacciones sociales con agentes. Permite definir perfiles y acciones para estudiar comportamientos dentro de una plataforma simulada.

Para qué te sirve

  • Cuando quieres observar cómo una publicación genera respuestas bajo condiciones controladas.
  • Cuando comparas reglas o perfiles de agentes sin experimentar sobre usuarios reales.

Cómo funciona

El entorno crea un grafo de agentes y un conjunto de acciones disponibles. Los agentes pueden producir publicaciones, comentarios y otras interacciones según el modelo y configuración elegidos.

Antes de empezar

Necesitas Python ≥3.10 y <3.12 con pip, y un proveedor de modelos para los agentes del ejemplo. Prepara los perfiles y limita el tamaño del experimento: más agentes y turnos pueden aumentar mucho el consumo de inferencia y recursos.

Límites y alternativas

Una simulación no predice de forma fiable la respuesta de una audiencia real. Frente a un análisis de redes con datos históricos, permite controlar condiciones, pero sus conclusiones dependen de perfiles, prompts y modelos.

Recursos