Lilli Logo

Simile believes in the following: simulating our lives will transform how we make decisions.

We're in currently stealth mode.
Reach us at hi-team at simile.ai.

Human decisions are filled with uncertainty. How will our messages be received? How will our actions shape our surroundings? How will our strategy connect to the future we desire? Simulations that searches through not of what has been, but of what will be, can lift these uncertainties.

Who we are

We are a team of leading AI scientists, engineers, and builders who have created AI technologies you might have used. We introduced agents and simulations powered by generative AI to the field, developed some of the most widely adopted open-source projects and benchmarks, and coined concepts that have shaped the foundations of today's generative AI paradigms.

Join us

At Simile, we are building simulation engines powered by generative AI that enable you to explore tomorrow. Our team is passionate about bridging groundbreaking research with a bold product vision (and perhaps with a touch of artistic flair). We're looking for colleagues to help shape this vision.

If you think you might be a fit, please get in touch.

Today, simulation is at its GPT-3.5 moment—ready to deliver real value that can transform how people make decisions, while also ripe for continued research breakthroughs as we move closer to simulating our entire world.

At Simile, we believe that the best way to advance our simulations is through collaboration with the broader research community and builders. Our team is at the forefront of research in generative AI, agents, and trustworthy simulations of human behavior. Rooted in a culture of open science, we will be regularly publishing technical blog posts, research papers, and open-source code here.

We believe that sharing our work not only benefits the public but also strengthens our research culture—driving better ideas, deeper insights, and greater impact.

Simile is building simulation engines powered by generative AI that enable you to explore tomorrow. If you are passionate about bridging AI research with impactful real-world applications, reach out. We are looking to add a small number of people to our team. We work together in person in Palo Alto, CA.

Below, we’ve listed the roles we're currently hiring for:

  • Product Engineer: We are looking for full-stack engineers who can rapidly develop products from 0 to service-ready. Successful candidates will have strong technical fundamentals and excellent implementation skills (full-stack), with a keen eye for creating compelling user experiences.
  • Research Scientist/Engineer: We are looking for a research scientist or engineer with a strong track record in machine learning, agents, and simulation research. Successful candidates will have both excellent theoretical foundations and strong implementation skills. We welcome applications from academic researchers as well as those with unconventional backgrounds.

If you are interested in joining, please send an email hi-team at simile.ai with the subject line: "Candidate Application: <name-of-the-role>" (e.g., Candidate Application: Product Engineer). If you have a unique skill set you'd like us to consider, please apply with the subject line: "Candidate Application: <insert-role-you-excel-at>."


© 2025 by Simile.

Simile: Full Documentation

Simile is a Python client library for creating and managing generative agents (along with their associated data) and for grouping these agents into populations. It provides a simple and consistent interface that wraps asynchronous server operations in synchronous calls—meaning you generally get the final result back without manually handling polling or tasks.

This page describes each module, function, and class in the Simile package. If you are new to Simile, see the Quick Start for a more streamlined introduction.

Jump to a specific section:

Installation

You can install Simile from PyPI:

pip install simile

Requirements:

  • Python 3.7+
  • requests library
  • urllib3 library

Configuration (simile/config.py)

The config.py module keeps track of two main variables:

  • api_key – must be set before making any requests
  • api_base – the base URL for all API calls (default is https://agentbank-f515f1977c64.herokuapp.com/agents/api)

configure(key=None, base=None)

A convenience function to set api_key in one shot.

import simile
 
# Option A: Set directly
simile.api_key = "YOUR_API_KEY"
Python

If simile.api_key is missing, calls to the server will raise an ApiKeyNotSetError.

Agent Class (simile/resource_agent.py)

The Agent class encapsulates everything related to individual “agents.” Internally, it handles asynchronous tasks by polling until complete, returning the final data as a synchronous result to you.

Agent.retrieve_details(agent_id) → dict

Agent.retrieve_details("a_12345")  # returns a dict with agent details
Python

Synchronously retrieves details about the specified agent. Raises RequestError on failure.

Agent.generate_response(agent_id, question_type, question_payload) → dict

Asks an agent a question of type "categorical", "numerical", or "chat", returning the final result (blocking).

  • agent_id: The agent to query
  • question_type: One of "categorical", "numerical", or "chat"
  • question_payload: A dictionary containing the question details

For "categorical", typically has {"question": "...", "options": [...]}. For "numerical", typically {"question": "...", "range": [min, max]}. For "chat", typically {"dialogue": [...], "context": "..."}.

Agent.generate_response(
    agent_id="a_12345",
    question_type="chat",
    question_payload={
        "dialogue": [
            ["user", "Hello!"],
            ["agent", "Hi there!"]
        ],
        "context": "Friendly greeting"
    }
)
Python

Returns a dictionary with the generated answer or relevant data. Raises RequestError if the server fails.

Population Class (simile/resource_population.py)

The Population class manages groups of agents.

Population.get_agents(population_id) → dict

agents_data = Population.get_agents("p_abc123")
# e.g. { "agent_ids": ["a_1", "a_2"] }
Python

Retrieves the list of agents in the given population. Raises RequestError on failure.

Population.get_sub_population(population_id="", n=1) → dict

This method samples n agents from the specified population (or from all agents if population_id is empty), creating a new population. Internally it’s asynchronous, but the function blocks until complete, returning the final data.

subpop_data = Population.get_sub_population("p_abc123", n=5)
# e.g. { "new_population_id": "p_xyz789", ... }
Python

You can then call Population.get_agents("p_xyz789") to see which agents were included.

Usage Examples

For a step-by-step usage guide and sample code, please visit the Quick Start.

294 Pageviews
Mar. 06th - Apr. 06th