61 lines
3.3 KiB
Markdown
61 lines
3.3 KiB
Markdown
# Promptkit Integration
|
|
|
|
Weatherreporter uses Promptkit for all generated-text reports. The four logical
|
|
prompts are `weather.daily_generated_text`, `weather.today_generated_text`,
|
|
`weather.tomorrow_generated_text`, and `weather.hourly_generated_text`, each at
|
|
version `1.1.0`. Their prompt assets, generated-text JSON Schemas, and
|
|
Weatherreporter profile catalog are embedded by `internal/promptassets`.
|
|
|
|
## Logical profile catalog
|
|
|
|
Prompt definitions select a stable Weatherreporter profile ID. The embedded
|
|
definitions currently use Promptkit's `openrouter` backend:
|
|
|
|
| Profile ID | Model | Reasoning effort | Timeout | Service tier | Default reports |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| `weather-light` | `deepseek/deepseek-v4-flash` | Provider default | 180 seconds | `flex` | Hourly |
|
|
| `weather-balanced` | `~google/gemini-flash-latest` | `high` | 240 seconds | `flex` | Daily, Today, Tomorrow |
|
|
| `weather-deep` | `~anthropic/claude-sonnet-latest` | `high` | 240 seconds | `flex` | None |
|
|
|
|
The `~` prefix is part of each OpenRouter rolling-alias model ID. The embedded
|
|
profiles intentionally omit endpoints, credentials, temperature, `top_p`, and
|
|
output-token limits.
|
|
|
|
## Selection, lookup, and active execution
|
|
|
|
Before collection, Weatherreporter inspects the exact prompt version and output
|
|
contract. A nonblank `promptkit.profile` selects one profile ID for every
|
|
report in the command; otherwise the prompt's declared default selects it.
|
|
Promptkit resolves the selected definition in this order:
|
|
|
|
1. explicit in-memory profiles used by an embedding consumer or test;
|
|
2. the configured `profile_file` or `profile_dir`;
|
|
3. Weatherreporter's embedded fallback profiles; and
|
|
4. Promptkit's built-in catalog.
|
|
|
|
A source falls through only when the selected ID is absent. Each source
|
|
supplies a complete definition, so profile fields are not merged. A malformed
|
|
matching operator definition is an error and does not fall back.
|
|
|
|
Profiles that require a direct API key are unsupported; a profile that reports
|
|
`APIKeyEnv` requires a nonblank value in that environment variable. Inspection,
|
|
preparation, and execution retain the selected logical profile ID and resolved
|
|
backend and model through Weatherreporter's project-owned contract. Ordinary
|
|
errors, summaries, logs, and workspace state exclude endpoints, credentials,
|
|
rendered messages, schemas, request bodies, response bodies, and complete
|
|
parameter maps.
|
|
|
|
Execution receives the already-persisted YAML package, prepares it once, and returns structured
|
|
JSON that Weatherreporter validates before rendering its own Markdown template. Preparation and
|
|
execution receipts are project-owned, safe provenance records. Content-rich diagnostics are
|
|
opt-in through `--llm-debug-dir`; see [operations](../operations.md) for retention and permissions.
|
|
|
|
The generated-text schemas require `summary`, `forecast_discussion`, and
|
|
`precipitation_timing`, and reject additional properties. Prompts return an empty string for
|
|
`precipitation_timing` when the deterministic package contains no precipitation windows.
|
|
|
|
Prompt/profile configuration and the maintained local override example are
|
|
owned by the [configuration reference](../config.md). Adapter construction and
|
|
mapping are documented in the [Promptkit adapter internals](../internal/promptkit-adapter.md).
|
|
Durable metadata compatibility is described in [state internals](../internal/state.md).
|