Require precipitation timing in generated text
This commit is contained in:
@@ -8,8 +8,7 @@ Return these fields:
|
||||
|
||||
- `summary`: required. One or two sentences summarizing the main weather story for the valid period.
|
||||
- `forecast_discussion`: required. Three paragraphs explaining the broader setup, trend, or forecast reasoning most relevant to the valid period.
|
||||
- `precipitation_timing`: optional. Include only when the deterministic `precip_timing` module contains precipitation windows.
|
||||
- `confidence`: optional. Include only if uncertainty, timing spread, or conflicting signals materially affect how the reader should interpret the forecast.
|
||||
- `precipitation_timing`: required. When the deterministic `precip_timing` module contains precipitation windows, provide the supported timing prose described below. Otherwise, return an empty string (`""`).
|
||||
|
||||
Return JSON only.
|
||||
|
||||
@@ -27,7 +26,7 @@ In most cases, include three paragraphs: a two-to-four sentence relevant local o
|
||||
|
||||
# Precipitation timing
|
||||
|
||||
Include this only if precipitation is forecast. Use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration.
|
||||
When precipitation windows are present, use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration. When no precipitation windows are present, return an empty string (`""`) for `precipitation_timing`.
|
||||
|
||||
# Narrative source selection
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
id: weather.daily_generated_text
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
default_profile: gemini-flash-latest
|
||||
description: Daily weather report analysis prompt.
|
||||
inputs:
|
||||
|
||||
@@ -8,8 +8,7 @@ Return these fields:
|
||||
|
||||
- `summary`: required. One or two sentences summarizing the main weather story for the valid period.
|
||||
- `forecast_discussion`: required. Two or three sentences explaining the broader setup, trend, or forecast reasoning most relevant to the valid period.
|
||||
- `precipitation_timing`: optional. Include only when the deterministic `precip_timing` module contains precipitation windows.
|
||||
- `confidence`: optional. Include only if uncertainty, timing spread, or conflicting signals materially affect how the reader should interpret the forecast.
|
||||
- `precipitation_timing`: required. When the deterministic `precip_timing` module contains precipitation windows, provide the supported timing prose described below. Otherwise, return an empty string (`""`).
|
||||
|
||||
Return JSON only.
|
||||
|
||||
@@ -25,4 +24,4 @@ Use narrative products to explain the “why” behind the local forecast when u
|
||||
|
||||
# Precipitation timing
|
||||
|
||||
Include this only if precipitation is forecast. Use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration.
|
||||
When precipitation windows are present, use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration. When no precipitation windows are present, return an empty string (`""`) for `precipitation_timing`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
id: weather.hourly_generated_text
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
default_profile: gemini-flash-latest
|
||||
description: Hourly weather report analysis prompt.
|
||||
inputs:
|
||||
|
||||
@@ -8,8 +8,7 @@ Return these fields:
|
||||
|
||||
- `summary`: required. One or two sentences summarizing the main weather story for the valid period.
|
||||
- `forecast_discussion`: required. Three paragraphs explaining the broader setup, trend, or forecast reasoning most relevant to the valid period.
|
||||
- `precipitation_timing`: optional. Include only when the deterministic `precip_timing` module contains precipitation windows.
|
||||
- `confidence`: optional. Include only if uncertainty, timing spread, or conflicting signals materially affect how the reader should interpret the forecast.
|
||||
- `precipitation_timing`: required. When the deterministic `precip_timing` module contains precipitation windows, provide the supported timing prose described below. Otherwise, return an empty string (`""`).
|
||||
|
||||
Return JSON only.
|
||||
|
||||
@@ -27,4 +26,4 @@ In most cases, include three paragraphs: a two-to-four sentence relevant local o
|
||||
|
||||
# Precipitation timing
|
||||
|
||||
Include this only if precipitation is forecast. Use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration.
|
||||
When precipitation windows are present, use one to four sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration. When no precipitation windows are present, return an empty string (`""`) for `precipitation_timing`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
id: weather.today_generated_text
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
default_profile: gemini-flash-latest
|
||||
description: Today's weather report analysis prompt.
|
||||
inputs:
|
||||
|
||||
@@ -8,8 +8,7 @@ Return these fields:
|
||||
|
||||
- `summary`: required. One or two sentences summarizing the main weather story for the valid period.
|
||||
- `forecast_discussion`: required. Three paragraphs explaining the broader setup, trend, or forecast reasoning most relevant to the valid period.
|
||||
- `precipitation_timing`: optional. Include only when the deterministic `precip_timing` module contains precipitation windows.
|
||||
- `confidence`: optional. Include only if uncertainty, timing spread, or conflicting signals materially affect how the reader should interpret the forecast.
|
||||
- `precipitation_timing`: required. When the deterministic `precip_timing` module contains precipitation windows, provide the supported timing prose described below. Otherwise, return an empty string (`""`).
|
||||
|
||||
Return JSON only.
|
||||
|
||||
@@ -27,4 +26,4 @@ In most cases, include three paragraphs: a two-to-four sentence relevant local o
|
||||
|
||||
# Precipitation timing
|
||||
|
||||
Use one or two sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration.
|
||||
When precipitation windows are present, use one or two sentences to give practical context about a supported frontal, convective, or stratiform setup; expected type, intensity, and duration; and uncertainty in onset or duration. When no precipitation windows are present, return an empty string (`""`) for `precipitation_timing`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
id: weather.tomorrow_generated_text
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
default_profile: gemini-flash-latest
|
||||
description: Tomorrow's weather report analysis prompt.
|
||||
inputs:
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
"title": "Daily GeneratedText",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["summary", "forecast_discussion"],
|
||||
"required": ["summary", "forecast_discussion", "precipitation_timing"],
|
||||
"properties": {
|
||||
"summary": {"type": "string"},
|
||||
"forecast_discussion": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||||
"precipitation_timing": {"type": "string"},
|
||||
"confidence": {"type": "string"}
|
||||
"precipitation_timing": {"type": "string"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
"title": "Hourly GeneratedText",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["summary", "forecast_discussion"],
|
||||
"required": ["summary", "forecast_discussion", "precipitation_timing"],
|
||||
"properties": {
|
||||
"summary": {"type": "string"},
|
||||
"forecast_discussion": {"type": "string"},
|
||||
"precipitation_timing": {"type": "string"},
|
||||
"confidence": {"type": "string"}
|
||||
"precipitation_timing": {"type": "string"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
"title": "Today GeneratedText",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["summary", "forecast_discussion"],
|
||||
"required": ["summary", "forecast_discussion", "precipitation_timing"],
|
||||
"properties": {
|
||||
"summary": {"type": "string"},
|
||||
"forecast_discussion": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||||
"precipitation_timing": {"type": "string"},
|
||||
"confidence": {"type": "string"}
|
||||
"precipitation_timing": {"type": "string"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
"title": "Tomorrow GeneratedText",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["summary", "forecast_discussion"],
|
||||
"required": ["summary", "forecast_discussion", "precipitation_timing"],
|
||||
"properties": {
|
||||
"summary": {"type": "string"},
|
||||
"forecast_discussion": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||||
"precipitation_timing": {"type": "string"},
|
||||
"confidence": {"type": "string"}
|
||||
"precipitation_timing": {"type": "string"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,8 +67,8 @@ func TestPromptAssetsDeclareTheFourGeneratedTextPrompts(t *testing.T) {
|
||||
if err := yaml.Unmarshal(data, &definition); err != nil {
|
||||
t.Fatalf("decode prompt definition: %v", err)
|
||||
}
|
||||
if definition.ID != tc.id || definition.Version != "1.0.0" || definition.DefaultProfile != "gemini-flash-latest" {
|
||||
t.Fatalf("definition = %#v, want %s version 1.0.0 and gemini-flash-latest", definition, tc.id)
|
||||
if definition.ID != tc.id || definition.Version != "1.0.1" || definition.DefaultProfile != "gemini-flash-latest" {
|
||||
t.Fatalf("definition = %#v, want %s version 1.0.1 and gemini-flash-latest", definition, tc.id)
|
||||
}
|
||||
if len(definition.Inputs) != 1 || definition.Inputs[0].Name != "data_package" || !definition.Inputs[0].Required || definition.Inputs[0].ContentType != "application/yaml" {
|
||||
t.Fatalf("inputs = %#v, want one required YAML data_package", definition.Inputs)
|
||||
@@ -101,11 +101,11 @@ func TestSchemasAreCanonicalAndIndependent(t *testing.T) {
|
||||
if err := json.Unmarshal(data, &schema); err != nil {
|
||||
t.Fatalf("decode schema: %v", err)
|
||||
}
|
||||
if schema.Type != "object" || schema.AdditionalProperties || strings.Join(schema.Required, ",") != "summary,forecast_discussion" {
|
||||
if schema.Type != "object" || schema.AdditionalProperties || strings.Join(schema.Required, ",") != "summary,forecast_discussion,precipitation_timing" {
|
||||
t.Fatalf("schema = %#v, want strict generated-text object", schema)
|
||||
}
|
||||
if _, ok := schema.Properties["confidence"]; !ok {
|
||||
t.Fatalf("schema properties = %#v, want confidence", schema.Properties)
|
||||
if _, ok := schema.Properties["confidence"]; ok {
|
||||
t.Fatalf("schema properties = %#v, do not want retired confidence field", schema.Properties)
|
||||
}
|
||||
if id == "daily" && (schema.ID != "weatherreporter.daily.generated_text.schema.json" || schema.Title != "Daily GeneratedText") {
|
||||
t.Fatalf("daily schema identity = %q/%q, want corrected Daily identity", schema.ID, schema.Title)
|
||||
@@ -129,11 +129,11 @@ func TestPromptkitInspectsEmbeddedPromptsOffline(t *testing.T) {
|
||||
}
|
||||
for _, id := range []string{"weather.daily_generated_text", "weather.today_generated_text", "weather.tomorrow_generated_text", "weather.hourly_generated_text"} {
|
||||
t.Run(id, func(t *testing.T) {
|
||||
inspection, err := engine.InspectPrompt(context.Background(), id, "1.0.0")
|
||||
inspection, err := engine.InspectPrompt(context.Background(), id, "1.0.1")
|
||||
if err != nil {
|
||||
t.Fatalf("InspectPrompt() error = %v", err)
|
||||
}
|
||||
if inspection.PromptID != id || inspection.PromptVersion != "1.0.0" || inspection.DefaultProfileID != "gemini-flash-latest" {
|
||||
if inspection.PromptID != id || inspection.PromptVersion != "1.0.1" || inspection.DefaultProfileID != "gemini-flash-latest" {
|
||||
t.Fatalf("inspection = %#v", inspection)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user