Suggest Agent System Prompt
Generate a starter customInstructions block for the wizard.
Same two credential shapes as /agents/validate-llm:
- Inline - raw
apiKey(+ optionalbaseUrl) supplied directly. - Saved connection -
savedConnectionIdreferences a storedllmConnection; BE loads decryptedapiKey/baseUrl/providerserver-side so the browser never holds the plaintext.
Composes a meta-system-prompt + a structured user message describing
the agent (type, name, description, topics, fields, tools, output
schema, optional existing draft) and calls the user’s own LLM. The
runtime build_system_prompt already emits the per-agentType base
template + schema field listing + tool signatures at deploy time, so
the LLM is constrained to produce only the user-facing instructions
slot - the meta-prompt enforces that explicitly. Nothing is persisted.
Per-tenant rate limit: dedicated BUCKET_PROMPT_SUGGEST bucket
(30/min/tenant) separate from validate-llm, so heavy “Generate”
usage (humans iterating on prompt drafts) doesn’t eat into the
credential-check budget. Provider failures (timeouts, 4xx, schema
errors) surface as 400 with the provider’s error message so the FE’s
existing error-extraction works unchanged.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request body for POST /agents/system-prompt-suggestion.
Mirrors ValidateLlmRequest for the credential half (inline apiKey or
savedConnectionId, with the same XOR rule) and adds the agent-context
fields the meta-prompt needs to draft a starter customInstructions
block. The runtime build_system_prompt already injects the per-agentType
base template, schema field listing, and tool signatures - so the LLM is
asked to produce only the user-facing instructions slot, never the
boilerplate wrapper. See app.services.agent_prompt_suggester for the
meta-prompt that enforces that.
Unified LLM provider enum.
A single AgentLlmConnection row carries one provider and a set of
capabilities (chat / embedding). PROVIDER_CAPABILITIES below pins
which capabilities each provider can serve — picked by the FE Connections
drawer and re-validated server-side on every write.
anthropic, openai, openai-responses, ollama, azure, azure-openai, bedrock, qwen, openai-compatible Agent type (e.g. react, workflow)
1 - 50200Raw key - never stored
512512If set, BE resolves provider/apiKey/baseUrl from the tenant's saved llmConnection by id and ignores the inline apiKey / baseUrl.
1001005002050Tool name + description list. Replaces the older toolNames-only shape.
5050Active record-filter (matches AgentInputConfig.filterSQL). Anchors the LLM's prompt to the actual shape of records reaching the agent.
4000Existing draft to refine. Matches the FE textarea cap.
8000Optional one-line steer the user types into the wizard's 'Hint for AI' input. The meta-prompt already gets the agent's metadata, so this should carry use-case intent (tone, edge-case priority, what to emphasize) rather than restate the data shape.
500Response
Successful Response
Response body for POST /agents/system-prompt-suggestion.
Token counts come straight from the provider's usage block (zeroed
when the provider didn't return one). model / provider echo back
the resolved values so the FE can display "generated with anthropic /
claude-sonnet-4-5" alongside the suggestion.