CANChat (SSC-Hosted)
Government-hosted conversational model with department-scoped isolation and audit logging.
Government-hosted conversational model with department-scoped isolation and audit logging.
Instruction-tuned LLM for summarization, RAG, and chat. English/French capable.
Reusable prompts for summarization, translation, classification. Peer-reviewed and tagged.
High-throughput embeddings for search and RAG. Tuned for EN/FR public-sector content.
Relevance re-ranking for retrieval pipelines; improves top-k precision for RAG and search.
Lightweight instruction-tuned model for chat and tooling. Great for pilot workloads.
Formal EN↔FR translation patterns with tone and register guidance for GC correspondence.
For evidence-based summaries: enforces citation extraction and coverage targets for RAG.
Intent detection + summarization + RAG hand-off for high-volume citizen inquiries.
For platform operations - health checks, policy enforcement (size/timeouts/concurrency), quotas, key management, route management, etc.
Department | Created | Status | Quota | Actions |
---|
Provider · Deployment · Sensitivity
Description…
View status and details of submitted access requests.
Request # | Model | Department | Status | Submitted | Action |
---|
Complete checks, record a decision, and (if approved) provision workspace + key.
https://api.ssc.gc.ca/ai/canchat/v1/chat
gcai_********************************
curl -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ https://api.ssc.gc.ca/ai/canchat/v1/chat \ -d '{ "model": "canchat-latest", "messages": [{"role":"user","content":"Hello CANChat"}], "temperature": 0.2 }'
import fetch from "node-fetch"; const res = await fetch("https://api.ssc.gc.ca/ai/canchat/v1/chat",{ method:"POST", headers:{"Authorization":`Bearer ${process.env.AI_KEY}`,"Content-Type":"application/json"}, body: JSON.stringify({ model:"canchat-latest", messages:[{role:"user", content:"Hello"}] }) }); const data = await res.json(); console.log(data.choices[0].message.content);
Guardrails, roles, and routines that let departments adopt AI quickly—without compromising privacy, security, or fiscal stewardship.
Enable safe, compliant, cost-effective AI usage across departments. Applies to Catalog, Gateway, My Services (keys), Usage analytics, and supporting controls for AI workloads.
Role | Owns | Examples |
---|---|---|
Platform (SSC) | Gateway policies, quotas, FinOps, incidents, provider contracts | Set size/timeout, throttle, vendor SLAs |
Departments | Keys, app guardrails, data stewardship | Key rotation, app-level filtering, business approvals |
Security & Privacy | Sensitivity approvals, exemptions, DPIA/TRA | Protected B pilot gates, compensating controls |
Finance/Procurement | Cost recovery, due diligence | Unit rates, budget variance review |
Steering committee | Risk/exception arbitration, roadmap | Pilot graduation, model retirement |
Default guardrails; exceptions are time-boxed and monitored.
Policy | Applies to | Default | Override path | Owner | Review |
---|---|---|---|---|---|
Request size limit | All routes | 1 MB | Exception form | Platform Sec | Quarterly |
Timeout | All routes | 60 s | Exception | Platform Ops | Quarterly |
Concurrency | Per key | 50 | Quota package | Platform Ops | Quarterly |
Data sensitivity | Workloads | PBMM; PB (pilot) | Steering approval | Privacy | Quarterly |
Logging & retention | Metadata | 90 days | Records schedule | Records | Annual |
Safety classifiers | Prompts/outputs | PII, toxicity | — | Platform Sec | Quarterly |
Repeated violations may trigger throttling until an owner acknowledges remediation.
Metric | Target / SLO | Alert threshold | Owner |
---|---|---|---|
Availability (route) | ≥ 99.9% monthly | < 99.5% (24h) | Platform Ops |
Latency p95 | ≤ 1.5 s | > 2.0 s (1h) | Platform Ops |
Error rate | < 1% | ≥ 2% (15 min) | Sec/Ops |
Spend variance | ≤ +10% vs forecast | > +15% (7d) | FinOps |
Safety flags | < 0.25% of calls | ≥ 0.5% (24h) | Platform Sec |
Control theme | Practice in Marketplace | Framework refs |
---|---|---|
Access control | Keys per dept/env, least privilege, rotation | ITSG-33; GC IAM |
Data protection | TLS, PII redaction, size limits, retention | ITSG-33; Privacy Act |
Monitoring | Usage KPIs, alerts, audit logs | ITSG-33; TBS Policy on Service |
Change mgmt | Version pinning, rollout gates, rollback | ITIL/GC Ops |
Procurement | Vendor due diligence, SLAs, exit terms | GC Contracting policy |
Note: Downloads are mocked; wire to your export endpoints as they become available.
Route | % of total | Sample |
---|
Provider/Route | Calls | Tokens (in/out) | Est. spend |
---|
Department | Calls used | RPS peak | Quota used |
---|
Safety category | Count |
---|
Developer quickstarts, endpoints, policies, and examples for the AI Marketplace (mock)
Links open in a new tab; adjust to your approved reference list as needed.
Buttons use file names and types you can wire to a CDN or export endpoint later.
This documentation is mock; use the Workspace view for live keys and quickstarts once approved.
Use a department-scoped API key with the Authorization: Bearer <KEY> header.
curl -H "Authorization: Bearer gcai_xxx" https://api.ssc.gc.ca/ai/v1/canchat/chat -d '{ ... }'
{ "model": "canchat-latest", "messages": [{"role":"user","content":"Hello CANChat"}], "temperature": 0.2 }
{ "model": "command-a", "messages": [{"role":"user","content":"Summarize this…"}], "max_tokens": 512 }
{ "model": "canembed-001", "input": ["Public datasets on benefits", "Employment insurance"] }
Enable streaming responses for token-by-token output.
curl -N -H "Accept: text/event-stream" -H "Authorization: Bearer gcai_xxx" \ -H "Content-Type: application/json" \ https://api.ssc.gc.ca/ai/v1/canchat/chat -d '{ "stream": true, "messages":[...]}'
Event format: data: {"id":"…","delta":"…"}\n\n
Policy | Default | Notes |
---|---|---|
Max payload | 1 MB | Reduce prompt size; use RAG for large sources. |
Timeout | 60 s | Consider streaming for long generations. |
Burst RPS | 50/key | See quotas in Gateway. |
Defaults match the Governance policy registry (mock). Exceptions require approval.
{ "error": { "type": "rate_limit_exceeded", "message": "Quota exceeded. Retry after 60s.", "request_id": "req_12345" } }
Class | Typical cause | Action |
---|---|---|
4xx | Validation, size limit, auth | Fix payload/headers; check key scope |
429 | Quota/RPS exceeded | Backoff or request more quota |
5xx | Upstream/provider timeout | Retry with jitter; check Usage |
curl -X POST https://api.ssc.gc.ca/ai/v1/canchat/chat \ -H "Authorization: Bearer $AI_KEY" -H "Content-Type: application/json" \ -d '{"model":"canchat-latest","messages":[{"role":"user","content":"Hi"}]}'
const r = await fetch("/ai/v1/provider/chat", { method:"POST", headers:{ "Authorization":`Bearer ${AI_KEY}`, "Content-Type":"application/json" }, body: JSON.stringify({ model:"command-a", messages:[{role:"user",content:"Hello"}] }) }); const data = await r.json();
import requests, os res = requests.post("https://api.ssc.gc.ca/ai/v1/canchat/chat", headers={"Authorization":f"Bearer {os.getenv('AI_KEY')}", "Content-Type":"application/json"}, json={"model":"canchat-latest","messages":[{"role":"user","content":"Salut"}]}) print(res.json())
curl -X POST https://api.ssc.gc.ca/ai/v1/embeddings \ -H "Authorization: Bearer $AI_KEY" -H "Content-Type: application/json" \ -d '{"model":"canembed-001","input":["text one","text two"]}'