Skip to main content

QuiverAI

The QuiverAI provider generates SVG vector graphics from text prompts using the Arrow model. Output is raw SVG markup, which works with text-based assertions like is-xml, contains, and llm-rubric.

Setup

  1. Create an API key at app.quiver.ai
  2. Set the environment variable:
export QUIVERAI_API_KEY=your-api-key

Provider Format

quiverai:<model-name>

The default model is arrow-preview.

Configuration

providers:
- id: quiverai:arrow-preview
config:
temperature: 0.7
max_output_tokens: 8192
instructions: 'flat design, minimal color palette'

With reference images:

providers:
- id: quiverai:arrow-preview
config:
references:
- url: https://example.com/style-reference.png
instructions: 'Match the style of the reference image'

Configuration Options

ParameterTypeDefaultDescription
instructionsstringStyle guidance separate from the prompt
referencesarrayUp to 4 reference images: [{ url }] or [{ base64 }]
temperaturenumber1Randomness (0–2)
top_pnumber1Nucleus sampling (0–1)
presence_penaltynumber0Penalize repeated patterns (-2 to 2)
max_output_tokensintegerMaximum output tokens (1–131,072)
ninteger1Number of SVGs to generate (1–16)
streambooleantrueSet false to enable response caching
apiKeystringAPI key (overrides environment variable)
apiBaseUrlstringCustom API base URL

When n > 1, multiple SVGs are joined with double newlines.

Example

promptfooconfig.yaml
prompts:
- 'Create a simple SVG icon of: {{subject}}'

providers:
- id: quiverai:arrow-preview
config:
max_output_tokens: 8192

tests:
- vars:
subject: a red heart
assert:
- type: is-xml
- type: llm-rubric
value: Contains a heart shape in red color

- vars:
subject: a yellow star
assert:
- type: is-xml
- type: llm-rubric
value: Contains a star shape in yellow/gold color
note

llm-rubric assertions require a grading provider. By default this uses OpenAI, so set OPENAI_API_KEY or configure a different grader.

Troubleshooting

ErrorCauseFix
insufficient_creditsAccount has no creditsAdd credits at app.quiver.ai
invalid_api_keyKey is missing or invalidCheck QUIVERAI_API_KEY is set correctly
rate_limit_exceededToo many requestsReduce --max-concurrency or add delays between requests
model_not_foundInvalid model nameUse arrow-preview (the default)

Error messages include a request_id for debugging with QuiverAI support.

Environment Variables

VariableDescription
QUIVERAI_API_KEYAPI key (required)

See Also