Skip to main content
POST
/
api
/
v1
/
online
/
sessions
from synth_ai.sdk.optimization import OfflineJob

job = await OfflineJob.create(
    algorithm="mipro",
    container_url="https://tunnel.example.com",
    container_api_key="sk_env_...",
    policy={"model": "gpt-4o-mini", "provider": "openai"},
    mipro={
        "mode": "offline",
        "bootstrap_train_seeds": [0, 1, 2, 3, 4],
        "val_seeds": [100, 101, 102]
    }
)

# Wait for completion
result = await job.wait()
print(f"Best prompt: {result.best_prompt}")
{
  "job_id": "po_abc123",
  "status": "running"
}
MIPRO Offline lets the backend orchestrate all rollouts by calling your container. You provide the config, backend handles execution.
Offline mode is fire-and-forget—submit the job and poll for results. Backend handles everything.
Set algorithm: "mipro" and mipro.mode: "offline" in your request.

MIPRO Offline Configuration

mipro.mode
string
required
Must be "offline" for this mode.
mipro.bootstrap_train_seeds
array
required
Initial training seeds for the bootstrap phase.
mipro.val_seeds
array
required
Validation seeds for evaluation.
mipro.proposer
object
required
Proposer configuration.
from synth_ai.sdk.optimization import OfflineJob

job = await OfflineJob.create(
    algorithm="mipro",
    container_url="https://tunnel.example.com",
    container_api_key="sk_env_...",
    policy={"model": "gpt-4o-mini", "provider": "openai"},
    mipro={
        "mode": "offline",
        "bootstrap_train_seeds": [0, 1, 2, 3, 4],
        "val_seeds": [100, 101, 102]
    }
)

# Wait for completion
result = await job.wait()
print(f"Best prompt: {result.best_prompt}")
{
  "job_id": "po_abc123",
  "status": "running"
}

Full Example

Request
{
  "policy_optimization": {
    "algorithm": "mipro",
    "container_url": "https://tunnel.example.com",
    "container_api_key": "sk_env_...",
    "policy": {
      "model": "gpt-4o-mini",
      "provider": "openai"
    },
    "mipro": {
      "mode": "offline",
      "bootstrap_train_seeds": [0, 1, 2, 3, 4],
      "val_seeds": [100, 101, 102],
      "proposer": {
        "mode": "instruction_only",
        "model": "gpt-4o-mini",
        "provider": "openai",
        "temperature": 0.7
      }
    }
  }
}

How Offline Mode Works

  1. Set up container — Make your container publicly accessible
  2. Create job — Submit MIPRO job with mode: "offline"
  3. Backend orchestrates — Backend calls your container, collects rewards, generates proposals
  4. Poll for results — Check job status until completion
Offline mode requires your container to be publicly accessible. Use SynthTunnel or Cloudflare for local development.

MIPRO Online

For local control where you drive the rollout loop—no tunneling required.