# AIPerf 3-Scenario Benchmark Suite Template
# Copy and customize per target endpoint.
# Usage: aiperf profile -c <this-file>
#
# Environment variables expected:
#   API_KEY       - Bearer token for the target endpoint
#   API_BASE_URL  - e.g. https://ai.noris.de

# ═══════════════════════════════════════════════════════════════
# SCENARIO 1: Sales (Representative Load)
# ═══════════════════════════════════════════════════════════════
scenarios:
  - name: sales-low
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 1
    request-count: 50
    dataset: sharegpt
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/sales/concurrency-1"
    ui: simple

  - name: sales-moderate
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 5
    request-count: 50
    dataset: sharegpt
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/sales/concurrency-5"
    ui: simple

  - name: sales-realistic
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 10
    request-count: 50
    dataset: sharegpt
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/sales/concurrency-10"
    ui: simple

# ═══════════════════════════════════════════════════════════════
# SCENARIO 2: Capacity (Breakpoint Discovery)
# ═══════════════════════════════════════════════════════════════
  - name: capacity-10
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 10
    request-count: 100
    dataset: synthetic
    input-tokens-mean: 512
    output-tokens-mean: 128
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/capacity/concurrency-10"
    ui: none

  - name: capacity-25
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 25
    request-count: 100
    dataset: synthetic
    input-tokens-mean: 512
    output-tokens-mean: 128
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/capacity/concurrency-25"
    ui: none

  - name: capacity-50
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 50
    request-count: 100
    dataset: synthetic
    input-tokens-mean: 512
    output-tokens-mean: 128
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/capacity/concurrency-50"
    ui: none

  - name: capacity-100
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 100
    request-count: 100
    dataset: synthetic
    input-tokens-mean: 512
    output-tokens-mean: 128
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/capacity/concurrency-100"
    ui: none

# ═══════════════════════════════════════════════════════════════
# SCENARIO 3: Steady-State (Long-Term Stability)
# ═══════════════════════════════════════════════════════════════
  - name: steady-state
    model: vllm/moonshotai/kimi-k2.6
    url: "${API_BASE_URL}"
    endpoint-type: chat
    streaming: true
    tokenizer: moonshotai/kimi-k2.6
    concurrency: 20
    duration: 600
    dataset: sharegpt
    extra-headers:
      Authorization: "Bearer ${API_KEY}"
    output-directory: "results/${DATE}/steady-state"
    ui: none
    # Enable timeslice metrics for drift detection:
    # timeslice: 60
