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| Field | Required | Description |
|---|---|---|
executor | yes | Backend driver: openai or mock |
model | yes | Model identifier passed to the executor |
temperature | no | Sampling temperature (reasoning providers) |
max_tokens | no | Max completion tokens |
timeout | no | Request 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-miniMemories reference the embeddings provider:
memories:
customer_history:
embedding:
provider: embeddingsPrompts
# 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).| Placeholder | Source |
|---|---|
{{ 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
| Method | When to use |
|---|---|
| BYOK (recommended) | Production and staging — per-fork keys in Causet Cloud |
| Mock executor | Tutorials, 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-modelThe 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.jsonActivate the release on your fork in Causet Cloud so intents use the compiled decisions IR.
See also
- Secrets & Keys — configuring BYOK in Causet Cloud
- Defining Decisions — wiring providers and prompts into decisions
- Vector Memory — embeddings provider for ingestion
- Support Copilot — working provider + prompt setup