इसे छोड़कर कंटेंट पर जाएं

स्ट्रीमिंग

스트리밍을 사용하면 에이전트가 LLM이 생성하는 대로 토큰별로 응답을 전송할 수 있습니다. 사용자는 전체 응답을 기다리지 않고 실시간으로 텍스트가 나타나는 것을 볼 수 있습니다.

StreamSession API

agent.stream()으로 스트림을 시작합니다:

interface StreamSession {
delta(chunk: string): Promise<void>; // 청크 전송
done(finalPayload: SendPayload): Promise<void>; // 스트림 완료
abort(): void; // 스트림 취소
}

기본 사용법

const session = agent.stream(conversationId);
// SDK가 멱등성 키와 함께 stream.start 프레임을 전송
for await (const chunk of llmStream) {
await session.delta(chunk);
// 각 delta는 독립적으로 암호화되어 전송됨
}
await session.done({
type: "text",
content: fullText,
});
// SDK가 영속화를 위해 전체 암호화된 페이로드와 함께 stream.done을 전송

OpenAI와 함께 사용

agent.onMessage(async (msg) => {
const session = agent.stream(msg.conversation_id);
const stream = await openai.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: msg.content }],
stream: true,
});
let fullText = "";
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content ?? "";
if (delta) {
fullText += delta;
await session.delta(delta);
}
}
await session.done({
type: "text",
content: fullText,
});
});

스트림 중단

사용자가 새 메시지를 보내거나 오류가 발생하면 스트림을 취소합니다:

session.abort();
// SDK가 stream.abort 프레임을 전송; 클라이언트가 부분 내용을 폐기

암호화

delta 프레임은 독립적으로 암호화됩니다. 즉, 각 청크는 자체 포함된 암호화 페이로드입니다. 최종 done 프레임은 서버 측 영속화를 위한 완전한 암호화 메시지를 전달합니다.

제한 사항

제약 조건
최대 스트림 지속 시간5분
고아 감지 타임아웃30초 (delta 없음)
대규모 그룹 (201-500명)스트리밍 비활성화

서버가 스트림 타임아웃을 감지하면 stream.error 프레임을 전송합니다. SDK가 세션을 중단하고 onEvent를 통해 오류를 발생시킵니다. 에이전트가 재시작 여부를 결정합니다.

다음 단계