단계 수업
Step 클래스는 Workflow 내의 개별 작업 단위를 정의하여 실행 논리, 데이터 유효성 검사 및 입력/출력 처리를 캡슐화합니다. Tool나 Agent를 매개변수로 사용하여 자동으로 단계를 생성할 수 있습니다.
사용예사용예에 대한 직접 링크
import { createWorkflow, createStep } from '@mastra/core/workflows'
import { z } from 'zod'
const step1 = createStep({
id: 'step-1',
description: 'passes value from input to output',
inputSchema: z.object({
value: z.number(),
}),
outputSchema: z.object({
value: z.number(),
}),
execute: async ({ inputData }) => {
const { value } = inputData
return {
value,
}
},
})
스키마 정의스키마 정의에 대한 직접 링크
표준 JSON 스키마를 지원하는 모든 라이브러리로 단계의 inputSchema와 outputSchema를 정의할 수 있습니다. 여기에는 Zod, Valibot, ArkType과 같은 라이브러리가 포함됩니다.
- Zod
- Valibot
- ArkType
import { createStep } from '@mastra/core/workflows'
import { z } from 'zod'
const step1 = createStep({
id: 'step-1',
inputSchema: z.object({
message: z.string(),
}),
outputSchema: z.object({
formatted: z.string(),
}),
execute: async ({ inputData }) => {
const { message } = inputData
return {
formatted: message.toUpperCase(),
}
},
})
import { createStep } from '@mastra/core/workflows'
import * as v from 'valibot'
import { toStandardJsonSchema } from '@valibot/to-json-schema'
const step1 = createStep({
id: 'step-1',
inputSchema: toStandardJsonSchema(
v.object({
message: v.string(),
}),
),
outputSchema: toStandardJsonSchema(
v.object({
formatted: v.string(),
}),
),
execute: async ({ inputData }) => {
const { message } = inputData
return {
formatted: message.toUpperCase(),
}
},
})
import { createStep } from '@mastra/core/workflows'
import { type } from 'arktype'
const step1 = createStep({
id: 'step-1',
inputSchema: type({
message: 'string',
}),
outputSchema: type({
formatted: 'string',
}),
execute: async ({ inputData }) => {
const { message } = inputData
return {
formatted: message.toUpperCase(),
}
},
})
Agent에서 단계 만들기Agent에서 단계 만들기에 대한 직접 링크
Agent에서 직접 단계를 생성할 수 있습니다. 이 단계에서는 Agent 이름을 ID로 사용합니다.
기본 Agent 단계기본 Agent 단계에 대한 직접 링크
import { testAgent } from '../agents/test-agent'
const agentStep = createStep(testAgent)
// inputSchema: { prompt: string }
// outputSchema: { text: string }
구조화된 출력이 포함된 Agent 단계구조화된 출력이 포함된 Agent 단계에 대한 직접 링크
Agent가 형식이 지정된 구조화 데이터를 반환하도록 하려면 structuredOutput을 전달하세요.
const articleSchema = z.object({
title: z.string(),
summary: z.string(),
tags: z.array(z.string()),
})
const agentStep = createStep(testAgent, {
structuredOutput: { schema: articleSchema },
})
// inputSchema: { prompt: string }
// outputSchema: { title: string, summary: string, tags: string[] }
Agent 단계 옵션Agent 단계 옵션에 대한 직접 링크
structuredOutput:
onFinish:
생성자 매개변수생성자 매개변수에 대한 직접 링크
id:
description:
inputSchema:
outputSchema:
resumeSchema:
suspendSchema:
stateSchema:
requestContextSchema:
execute:
inputData:
resumeData:
suspendData:
mastra:
getStepResult:
getInitData:
suspend:
state:
setState:
runId:
requestContext?:
retryCount?:
scorers:
{ [name]: { scorer, sampling? } } 맵이나 이를 반환하는 함수를 제공하세요. 채점은 비동기적으로 실행되며 Workflow를 차단하지 않습니다. 단계 출력 채점을 참조하세요.retries:
execute 함수가 예외를 던질 경우 재시도할 횟수입니다.metadata:
채점 단계 출력채점 단계 출력에 대한 직접 링크
Workflow의 최종 답변만 채점하는 대신 실행 시점에 해당 단계의 출력을 자동으로 평가하려면 단계에 scorers를 연결하세요. 이는 어느 단계에서 품질이 저하되었는지 확인하려는 다단계 및 RAG Workflow에 유용합니다. 예를 들어 이후 단계에서 추론하기 전에 검색 단계가 관련 청크를 반환했는지 확인할 수 있습니다.
각 채점기는 해당 단계 자체의 input과 output을 받습니다. 채점은 단계가 성공한 후 비동기적으로 실행되며, 결과는 단계의 Trace에 저장됩니다. sampling을 사용하여 채점기의 실행 빈도를 제어하세요.
다음 예에서는 모든 실행에 점수가 매겨지도록 채점자를 검색 단계에 연결합니다.
import { createStep } from '@mastra/core/workflows'
import { z } from 'zod'
import { retrievalRelevanceScorer } from '../scorers/retrieval-relevance'
const retrievalStep = createStep({
id: 'retrieval',
inputSchema: z.object({ query: z.string() }),
outputSchema: z.object({ query: z.string(), chunks: z.array(z.string()) }),
scorers: {
retrievalRelevance: {
scorer: retrievalRelevanceScorer(),
sampling: { type: 'ratio', rate: 1 },
},
},
execute: async ({ inputData }) => {
const chunks = await retrieve(inputData.query)
return { query: inputData.query, chunks }
},
})
측정하려는 각 단계에 채점자를 연결하여 다단계 Workflow 전반에 걸쳐 단계별 점수를 구축하세요. 채점 범위는 단일 단계로 지정되므로 품질이 변경되는 위치를 확인하기 위해 전용 교차 단계 측정항목이 필요하지 않습니다.
Workflow.agent() 및 Workflow.tool()으로 추가한 Agent와 Tool 단계도 단계 옵션에서 동일한 scorers 옵션을 지원합니다.
:::참고
실시간 평가의 실행 방식과 결과 저장 위치를 알아보려면 채점기 개요를, 직접 채점기를 만들려면 사용자 정의 채점기를 참조하세요.
:::