0d3cb498a3
CI / Shell Format Check (push) Has been cancelled
CI / Check Ruby (3.4) (push) Has been cancelled
CI / CI Config (push) Has been cancelled
CI / Test on Node ${{ matrix.node }} and ${{ matrix.os }}${{ matrix.shard && format(' (shard {0}/3)', matrix.shard) || '' }} (push) Has been cancelled
CI / Build on Node ${{ matrix.node }} (push) Has been cancelled
CI / Style Check (push) Has been cancelled
CI / Generate Assets (push) Has been cancelled
CI / Check Python (3.14) (push) Has been cancelled
CI / Check Python (3.9) (push) Has been cancelled
CI / Build Docs (push) Has been cancelled
CI / Code Scan Action (push) Has been cancelled
CI / Site tests (push) Has been cancelled
CI / webui tests (push) Has been cancelled
CI / Run Integration Tests (push) Has been cancelled
CI / Run Smoke Tests (push) Has been cancelled
CI / Go Tests (push) Has been cancelled
CI / Share Test (push) Has been cancelled
CI / Redteam (Production API) (push) Has been cancelled
CI / Redteam (Staging API) (push) Has been cancelled
CI / GitHub Actions Lint (push) Has been cancelled
CI / Check Ruby (3.0) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
release-please / build (push) Has been cancelled
release-please / publish-npm (push) Has been cancelled
release-please / publish-npm-backfill (push) Has been cancelled
release-please / docker (push) Has been cancelled
release-please / publish-code-scan-action (push) Has been cancelled
release-please / attest-code-scan-action (push) Has been cancelled
Deploy local.promptfoo.app / Deploy to Cloudflare Pages (push) Has been cancelled
Test and Publish Multi-arch Docker Image / test (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-amd64 platform:linux/amd64 runner:ubuntu-latest]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-arm64 platform:linux/arm64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / merge-docker-digests (push) Has been cancelled
Test and Publish Multi-arch Docker Image / Attest Multi-arch Image (push) Has been cancelled
Validate Renovate Config / Validate Renovate Configuration (push) Has been cancelled
78 lines
3.7 KiB
Markdown
78 lines
3.7 KiB
Markdown
# provider-quiverai (QuiverAI SVG Generation, Vectorization & Pipelines)
|
||
|
||
Compare QuiverAI's Arrow models — including [Arrow 1.1](https://docs.quiver.ai) and Arrow 1.1 Max — across three workflows: text-to-SVG generation, image-to-SVG vectorization, and a chained `GPT Image-2 → QuiverAI vectorize` pipeline. Every workflow is scored with an LLM-as-judge rubric so you can compare quality side-by-side.
|
||
|
||
## Setup
|
||
|
||
```bash
|
||
export QUIVERAI_API_KEY=your-api-key
|
||
export OPENAI_API_KEY=your-openai-key # Required for the pipeline + llm-rubric grader
|
||
npx promptfoo@latest init --example provider-quiverai
|
||
```
|
||
|
||
## Run the generation suite
|
||
|
||
```bash
|
||
npx promptfoo@latest eval
|
||
```
|
||
|
||
This compares Arrow 1.1, Arrow 1.1 Max, and an Arrow 1.1 variant with `instructions` style guidance side-by-side.
|
||
|
||
## Run the vectorize suite
|
||
|
||
```bash
|
||
npx promptfoo@latest eval -c promptfooconfig.vectorize.yaml
|
||
```
|
||
|
||
Converts raster reference images into SVGs with both Arrow 1.1 and Arrow 1.1 Max so you can compare fidelity.
|
||
The sample inputs are repo-hosted fixtures, which keeps the walkthrough stable
|
||
when third-party image hosts change behavior.
|
||
|
||
## Run the GPT Image-2 → QuiverAI pipeline
|
||
|
||
```bash
|
||
npx promptfoo@latest eval -c promptfooconfig.pipeline.yaml
|
||
```
|
||
|
||
Chains OpenAI `gpt-image-2` (high-quality raster) with the QuiverAI vectorize endpoint to produce a coherent red-panda icon set. The pipeline is a custom JS provider in [`pipeline-provider.js`](pipeline-provider.js); each call hits both APIs serially, so expect longer wall-clock times than a single-provider eval.
|
||
|
||
Example live cost reference from the May 2026 verification run:
|
||
|
||
| Step | Model | Credits / cost |
|
||
| -------------- | --------------- | -------------------- |
|
||
| Raster step | `gpt-image-2` | OpenAI image pricing |
|
||
| Vectorize step | `arrow-1.1` | 15 credits |
|
||
| Vectorize step | `arrow-1.1-max` | 20 credits |
|
||
|
||
Credits flow through to `result.metadata.credits` so you can budget evals. Check
|
||
`GET /v1/models` for the current `pricing_credits`; QuiverAI prices are
|
||
model- and operation-specific.
|
||
|
||
## What This Example Shows
|
||
|
||
- **Generation**: text → SVG with three side-by-side providers
|
||
- **Vectorization**: image → SVG with the `quiverai:vectorize:<model>` route
|
||
- **Pipeline**: a custom JS provider that chains GPT Image-2 + QuiverAI vectorize
|
||
- `is-xml` to validate SVG structure
|
||
- `llm-rubric` with a custom `rubricPrompt` for SVG-specific evaluation
|
||
- Streaming on by default for faster generation
|
||
|
||
## Common Configuration Options
|
||
|
||
| Option | Endpoint | Description |
|
||
| ------------------- | --------- | ------------------------------------------------------------ |
|
||
| `instructions` | generate | Style guidance separate from the prompt |
|
||
| `references` | generate | Reference images: URL string, `{ url }`, or `{ base64 }` |
|
||
| `n` | generate | Number of outputs per request (1–16) |
|
||
| `image` | vectorize | Override image input from prompt (`{ url }` or `{ base64 }`) |
|
||
| `auto_crop` | vectorize | Crop to the dominant subject before vectorization |
|
||
| `target_size` | vectorize | Square resize target in pixels (128–4096) |
|
||
| `temperature` | both | Randomness (0–2, default 1) |
|
||
| `max_output_tokens` | both | Output token cap (1–131,072) |
|
||
| `stream` | both | Set `false` to enable response caching |
|
||
|
||
## Learn More
|
||
|
||
- [QuiverAI Provider Documentation](https://www.promptfoo.dev/docs/providers/quiverai)
|
||
- [QuiverAI API Documentation](https://docs.quiver.ai)
|