Ylevä arkisto

Kehote

opinion-argument v1 gpt-5.6-luna 11.8.2026 Kokeile artikkeliin →

JSON-skeema

{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "signals",
        "summary"
    ],
    "properties": {
        "signals": {
            "type": "object",
            "description": "Exactly one nullable field for each argumentative or rhetorical mechanism. Null means that the mechanism did not clearly exceed the high-precision reporting threshold.",
            "additionalProperties": false,
            "required": [
                "loaded_language",
                "support_gap",
                "inferential_overreach",
                "counterargument_treatment",
                "opponent_treatment",
                "certainty_calibration",
                "internal_consistency",
                "constrained_framing"
            ],
            "properties": {
                "loaded_language": {
                    "description": "A signal based specifically on wording in the author's own voice that adds a material evaluative characterization beyond its substantive content, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "support_gap": {
                    "description": "A signal for a thesis-essential conclusion or causal bridge that remains a wholly bare assertion throughout the text, with no relevant reason, example, experience, comparison, observation or source attribution, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "inferential_overreach": {
                    "description": "A signal for an internally demonstrable and precisely identifiable premise-to-conclusion overreach, without evaluating whether the premises are factually true, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "counterargument_treatment": {
                    "description": "A signal based specifically on distortion, displacement or non-responsive dismissal of an opposing argument that actually appears in the text, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "opponent_treatment": {
                    "description": "A signal based specifically on discrediting a person, group or organization instead of addressing the relevant claim, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "certainty_calibration": {
                    "description": "A signal for an epistemic claim or prediction whose stated certainty, necessity or inevitability exceeds the support and qualifications in the text; normative recommendations alone do not qualify, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "internal_consistency": {
                    "description": "A signal based specifically on materially incompatible claims, principles or evaluative standards within the text, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "constrained_framing": {
                    "description": "A signal based on at least two reinforcing textual choices that unjustifiably constrain a conclusion, opposition or set of alternatives, with the defect demonstrable from the text itself, or null.",
                    "anyOf": [
                        {
                            "$ref": "#/$defs/signal"
                        },
                        {
                            "type": "null"
                        }
                    ]
                }
            }
        },
        "summary": {
            "type": "string",
            "description": "Finnish summary of at most two short sentences containing only conclusions supported by non-null signal fields, or an explicit no-signal result when every signal field is null.",
            "maxLength": 500
        }
    },
    "$defs": {
        "signal": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "score",
                "target",
                "stance",
                "evidence",
                "reasoning"
            ],
            "properties": {
                "score": {
                    "type": "integer",
                    "description": "Mechanism strength and argumentative impact: 1 one local but unambiguous material instance; 2 one central reasoning chain or repetition in at least two distinct passages; 3 systematic repetition across several central stages that dominates the thesis or rhetorical presentation.",
                    "minimum": 1,
                    "maximum": 3
                },
                "target": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "The shortest unambiguous target name from the text without broadening its scope, or null when no clear target exists. A target may be a person, group, organization, position, measure or claim."
                },
                "stance": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "The author's direction toward the target. Must be null when target is null or the direction is not unambiguously positive or negative.",
                    "enum": [
                        "positive",
                        "negative",
                        null
                    ]
                },
                "evidence": {
                    "type": "array",
                    "description": "One to three exact contiguous quotations which together show every essential part of one mechanism, each tied to its input section and preserving all Markdown and characters exactly.",
                    "minItems": 1,
                    "maxItems": 3,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "part",
                            "quote"
                        ],
                        "properties": {
                            "part": {
                                "type": "string",
                                "description": "The input section containing the exact quote.",
                                "enum": [
                                    "title",
                                    "lead",
                                    "body"
                                ]
                            },
                            "quote": {
                                "type": "string",
                                "description": "One contiguous exact substring of the named input part, preserving all Markdown links, URLs, emphasis, punctuation, whitespace, spelling and inflection exactly.",
                                "minLength": 1
                            }
                        }
                    }
                },
                "reasoning": {
                    "type": "string",
                    "description": "Concise Finnish explanation of exactly one mechanism, showing it from the quotations, distinguishing adjacent fields, justifying the score and avoiding external assumptions or any broadening of the text's claims.",
                    "minLength": 1,
                    "maxLength": 700
                }
            }
        }
    }
}