AI 문서 생성
POST
/api/document/complete-stream
AI를 사용하여 문서 내용을 생성하거나 수정합니다. 스트리밍 응답을 반환합니다.
요청
Body
interface CompleteStreamRequest {
prompt: string;
content: string;
conversation_id?: string;
referenceContext?: {
text: string;
html: string;
range?: { start: number; end: number };
};
referenceMaterials?: ReferenceMaterial[];
guide?: string;
glossary?: string;
provider: "anthropic" | "openai";
model: string;
documentId: string;
}
예시
{
"prompt": "첫 문단을 더 격식있게 바꿔줘",
"content": "<p>안녕하세요. 반갑습니다.</p>",
"provider": "anthropic",
"model": "claude-sonnet-4-20250514",
"documentId": "doc_abc123"
}
응답
스트리밍 형식
Server-Sent Events (SSE) 형식으로 응답합니다.
Content-Type: text/event-stream
이벤트 타입
thinking
{ "type": "thinking", "content": "문서를 분석하고 있습니다..." }
start
{ "type": "start", "content": "" }
delta
{ "type": "delta", "content": "생성된 텍스트 조각" }
complete
{
"type": "complete",
"xmlContent": "<deletion>안녕하세요</deletion><addition>안녕하십니까</addition>",
"userMessage": "더 격식있는 표현으로 수정했습니다.",
"citations": [],
"conversation_id": "conv_xxx"
}
error
{ "type": "error", "error": "Error message" }
XML Diff 형식
AI는 문서 변경사항을 XML 태그로 표현합니다:
추가
<addition>새로 추가할 내용</addition>
삭제
<deletion>삭제 할 내용</deletion>
대체
<deletion>기존 내용</deletion><addition>새 내용</addition>
코드 예시
const response = await fetch("/api/document/complete-stream", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
prompt: "요약해줘",
content: documentContent,
provider: "anthropic",
model: "claude-sonnet-4-20250514",
documentId: "doc_abc123",
}),
});
const reader = response.body?.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split("\n").filter(Boolean);
for (const line of lines) {
const event = JSON.parse(line);
switch (event.type) {
case "delta":
console.log("Received:", event.content);
break;
case "complete":
console.log("Done:", event.userMessage);
break;
}
}
}
출처 추적
참고자료를 사용한 경우 citations 배열이 포함됩니다:
{
"citations": [
{
"id": "1",
"refId": "ref_abc",
"refTitle": "참고자료.pdf",
"quotedText": "인용된 원문 텍스트",
"pageNumber": 5
}
]
}