본문으로 건너뛰기

채팅경로()

AI SDK 형식을 사용하여 스트리밍 Agent 대화를 위한 채팅 경로 핸들러를 만듭니다. 이 함수는 HTTP를 등록합니다.POST메시지를 수락하고, Agent를 실행하고, AI SDK 호환 형식으로 클라이언트에 응답을 다시 스트리밍하는 엔드포인트입니다. 내부에서 사용해야합니다.커스텀 API 경로.

프레임워크에 구애받지 않는 핸들러가 필요하면 handleChatStream()을 사용하세요. chatRoute()기존 AI SDK v5/기본 동작을 유지합니다. 앱이 AI SDK v6에 대해 입력된 경우 다음을 통과하세요.version: 'v6'.

연결 끊기 동작

chatRoute()는 들어오는 요청의 AbortSignalagent.stream()에 전달합니다. 클라이언트 연결이 끊어지면 Mastra가 진행 중인 생성을 중단합니다. 연결이 끊어진 후에도 서버가 생성을 계속하고 최종 응답을 유지하게 하려면 agent.stream()을 감싸는 사용자 지정 API 경로를 만들고 반환된 MastraModelOutput에서 consumeStream()을 호출하세요.

사용예
사용예에 대한 직접 링크

이 예제는 ID가 weatherAgent인 Agent를 사용하는 /chat 엔드포인트에 채팅 경로를 설정하는 방법을 보여줍니다.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { chatRoute } from '@mastra/ai-sdk'

export const mastra = new Mastra({
server: {
apiRoutes: [
chatRoute({
path: '/chat',
agent: 'weatherAgent',
}),
],
},
})

agentId를 기반으로 런타임에 정의되는 Agent 라우팅을 사용할 수도 있습니다. URL /chat/weatherAgent는 ID가 weatherAgent인 Agent로 확인됩니다.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { chatRoute } from '@mastra/ai-sdk'

export const mastra = new Mastra({
server: {
apiRoutes: [
chatRoute({
path: '/chat/:agentId',
}),
],
},
})

매개변수
매개변수에 대한 직접 링크

version?:

'v5' | 'v6'
= 'v5'
내보낼 AI SDK 스트림 계약을 선택합니다. 기존 기본 동작을 사용하려면 생략하거나 'v5'를 전달하세요. 앱이 AI SDK v6 응답 헬퍼에 맞게 타입이 지정된 경우 'v6'을 전달하세요.

path:

string
= '/chat/:agentId'
경로 패스입니다(예: /chat 또는 /chat/:agentId). 동적 Agent 라우팅에는 :agentId를 포함하세요.

agent?:

string
이 채팅 경로에 사용할 Agent의 ID입니다. 패스에 :agentId가 포함되지 않은 경우 필수입니다.

agentVersion?:

{ versionId: string } | { status?: 'draft' | 'published' }
특정 Agent 버전을 선택합니다. 정확한 버전을 대상으로 지정하려면 { versionId: '<id>' }를 전달하고, 상태로 확인하려면 { status: 'draft' } / { status: 'published' }를 전달하세요. 경로가 호출되면 쿼리 매개변수 ?versionId=<id> 또는 ?status=draft|published가 이 정적 값보다 우선합니다. Editor가 구성되어 있어야 합니다.

defaultOptions?:

AgentExecutionOptions
Agent 실행에 전달되는 기본 옵션입니다. 지침, Memory 구성, maxSteps 및 기타 실행 설정을 포함할 수 있습니다.

sendStart?:

boolean
= true
스트림에서 시작 이벤트를 전송할지 여부입니다.

sendFinish?:

boolean
= true
스트림에서 완료 이벤트를 전송할지 여부입니다.

sendReasoning?:

boolean
= false
스트림에 추론 단계를 포함할지 여부입니다.

sendSources?:

boolean
= false
스트림에 출처 인용을 포함할지 여부입니다.

heartbeatMs?:

number
유휴 시간 제한이 있는 인프라에서도 연결을 활성 상태로 유지하기 위한 SSE 하트비트 간격(밀리초)입니다.

추가 구성
추가 구성에 대한 직접 링크

prepareSendMessagesRequest를 사용하면 Agent에 추가 구성을 전달하는 등의 방식으로 채팅 경로에 전송되는 요청을 사용자 지정할 수 있습니다.

const { error, status, sendMessage, messages, regenerate, stop } = useChat({
transport: new DefaultChatTransport({
api: 'http://localhost:4111/chat',
prepareSendMessagesRequest({ messages }) {
return {
body: {
messages,
// Pass memory config
memory: {
thread: 'user-1',
resource: 'user-1',
},
},
}
},
}),
})