AIProviders & Prompts

Providers & Prompts

Providers name the LLM backends your app uses. Prompts are reusable instruction templates. Decisions and memories reference both by logical key — never hardcode model IDs inside actions.


Providers

# providers/ai.providers.causet
providers:
  reasoning:
    executor: openai
    model: gpt-4o-mini
    temperature: 0.2
    max_tokens: 1024
    timeout: 30s
 
  embeddings:
    executor: openai
    model: text-embedding-3-small
FieldRequiredDescription
executoryesBackend driver: openai or mock
modelyesModel identifier passed to the executor
temperaturenoSampling temperature (reasoning providers)
max_tokensnoMax completion tokens
timeoutnoRequest timeout (e.g. 30s)

Logical names

Use descriptive keys (reasoning, embeddings, moderation) rather than model names. Decisions reference provider: reasoning; you can swap models in one place without touching actions.

decisions:
  triage_ticket:
    provider: reasoning    # not gpt-4o-mini

Memories reference the embeddings provider:

memories:
  customer_history:
    embedding:
      provider: embeddings

Prompts

# prompts/triage.prompts.causet
prompts:
  triage_v1:
    instructions: |
      You are a support triage assistant. Classify the ticket and suggest priority.
 
      Customer ID: {{ customer_id }}
      Subject: {{ subject }}
      Body:
      {{ body }}
 
      Relevant customer history (most recent first):
      {{ memories.customer_history }}
 
      Respond with JSON fields: priority (low|normal|high|urgent),
      category (billing|shipping|product|account|general),
      summary (one sentence), confidence (0.0-1.0).
PlaceholderSource
{{ field }}Decision input: bindings (customer_id, subject, …)
{{ memories.<name> }}Vector memory retrieval for each ref in decisions.*.memories

Prompts are plain text with {{ mustache }} variables. The runtime renders them immediately before the LLM call.

Ask for JSON output in the prompt when your decision defines an output: schema. The runtime parses and validates the response against that schema before emitting the event.


Authentication: BYOK in Causet Cloud

Provider API keys are not stored in your Product DSL. Configure them in the control plane:

Platform → Application → Settings → AI Providers

MethodWhen to use
BYOK (recommended)Production and staging — per-fork keys in Causet Cloud
Mock executorTutorials, CI, local dev — executor: mock in spec

Resolution order at runtime: application BYOK → fork-wide BYOK → platform environment fallback.

Full setup guide: Secrets & Keys.


Mock executor (local dev)

Run the full decision pipeline without API keys:

providers:
  reasoning:
    executor: mock
    model: mock-model
  embeddings:
    executor: mock
    model: mock-model

The mock executor returns deterministic placeholder output that passes schema validation — useful for CI, playground tutorials, and integration tests.


Compile and deploy

Providers and prompts are compiled into causet.decisions.json alongside decisions and memories. Include them in your release artifact bundle:

causet build compile --runtime path/to/support-copilot --out build/out
# → build/out/causet.decisions.json

Activate the release on your fork in Causet Cloud so intents use the compiled decisions IR.


See also