v02-smoke-loop-llm
v1.0 activeSmoke test for loop step with an llm body — classifies each item in a list
Start a new run
Owner
opensop-core
SLA
—
Trigger
api
Tags
None
Inputs
messages
object · required
Array of { id, text } items to classify
Outputs
classifications
string
Steps
-
1
Source the messages
sourceautomatedInputsmessages ←process.inputs.messagesOutputsmessages (object)script:steps/v02_passthrough_messages.rb -
2
Classify each message
classify-eachloopOutputsclassifications (object)
Raw definition
---
opensop: '0.2'
process:
name: v02-smoke-loop-llm
owner: opensop-core
steps:
- id: source
run: steps/v02_passthrough_messages.rb
name: Source the messages
type: automated
inputs:
- from: process.inputs.messages
name: messages
outputs:
- name: messages
type: object
collection: true
item_schema:
id: string
text: string
validation: lenient
- id: classify-each
body:
- id: classify
name: Classify one message
type: llm
model: claude-sonnet-4-7
tools: []
inputs:
- from: loop.msg
name: msg
prompt: |
Classify this message as one of: question, task, complaint.
Return JSON only.
Message: {{ msg }}
outputs:
- name: intent
type: enum
values:
- question
- task
- complaint
- name: confidence
type: number
max_retries: 2
retry_on_incomplete: true
expected_output_schema:
intent: enum[question, task, complaint]
confidence: number
loop:
as: msg
for_each: steps.source.outputs.messages[*]
aggregate:
classifications: concat
max_iterations: 1000
name: Classify each message
type: loop
outputs:
- name: classifications
type: object
collection: true
item_schema:
intent: string
confidence: number
inputs:
- name: messages
type: object
required: true
description: Array of { id, text } items to classify
outputs:
- from: steps.classify-each.outputs.classifications
name: classifications
trigger:
type: api
version: '1.0'
description: Smoke test for loop step with an llm body — classifies each item in
a list