ai.chat는 AI 챗 서비스와 상호 작용하기 위한 여러 메서드와 속성을 제공하는 객체입니다.
1. 메서드
prompt (AI 챗 프롬프트)
import { eliceContents } from'src/constants';eliceContents.ai.chat.prompt('초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', { systemInstruction:'...' })// { session: '550e8400-e29b-41d4-a716-446655440000', contentResponse: '초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...' }
이 메서드를 사용하여 AI 채팅 응답을 생성할 수 있습니다. 프롬프트를 설정하여 응답을 생성할 수 있습니다. 첫 번째 인자는 프롬프트 내용이고, 두 번째 인자는 구성입니다. 구성은 선택 사항이며 다음과 같은 옵션을 제공합니다:
systemInstruction: 시스템 지시사항을 설정할 수 있으며, 이 인자를 전달하면 시스템 지시사항을 항상 재정의합니다.
⚠️ 응답의 경우 세션 ID와 AI 콘텐츠 응답을 반환합니다. 사용자가 페이지를 새로 고침해도 채팅 메시지를 다시 로드하려면 이 세션 ID를 KV 스토어 또는 로컬 스토리지에 저장해야 합니다.
load (AI 챗 로드)
import { eliceContents } from'src/constants';constinitChat=async () => {constsessions=awaiteliceContents.getKeyValue({ key:'sessions' });constfirstSession= sessions[0];if(firstSession) { eliceContents.ai.chat.load(firstSession); // [{ role: 'system', content: '초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', ts: 1634025600000 }, ...]
}}
이 메서드를 사용하여 AI 채팅 서비스에서 채팅 메시지를 로드할 수 있습니다. 첫 번째 인자는 prompt 메서드에서 얻은 세션 ID입니다.
응답으로 챗 메시지 배열을 반환합니다. 각 챗 메시지에는 role, content, ts가 포함됩니다.
role은 현재 3가지로 구분됩니다:
system: 시스템 지침 내용
assistant: AI 응답 내용
user: 사용자 입력 내용
clear (AI 챗 지우기)
서버에 저장된 특정 세션의 챗 메시지를 지우려면 이 메서드를 사용할 수 있습니다. 첫 번째 인자는 prompt 메서드에서 얻은 세션 ID입니다.
이 메서드는 현재 세션의 챗 메시지를 재설정하는데 사용됩니다. 현재 sessionId와 메시지의 로컬 데이터를 초기화합니다.
import { eliceContents } from'src/constants';conststartNewChat= () => {eliceContents.ai.chat.reset();eliceContents.ai.chat.prompt('초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', { systemInstruction:'...' });}
subscribes (AI 챗 구독)
subscribe는 여러 챗 이벤트를 청취할 수 있게 하는 메서드입니다. 이벤트가 발생할 때 실행될 이벤트 리스너를 첫 번째 인자로 전달합니다.
import { eliceContents } from'src/constants';eliceContents.ai.chat.subscribe((event) => { console.log(event); // { type: 'comment', payload: { role: 'assistant', content: '초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', ts: 1634025600000 } }
});
이벤트는 type과 payload로 구성되며 다음과 같이 구분됩니다:
comment: 챗 메시지가 추가될 때 이벤트가 발생합니다. payload는 chatMessage입니다.
clear: 챗 세션이 제거될 때 이벤트가 발생합니다. payload는 sessionId입니다.
reset: 현재 챗 세션이 재설정될 때 이벤트가 발생합니다. payload는 null입니다.
load: 챗 메시지가 로드될 때 이벤트가 발생합니다. payload는 chatMessage 배열입니다.
import { eliceContents } from'src/constants';const { unsubscribe } =eliceContents.ai.chat.subscribe(/* 이벤트 리스너 */);unsubscribe(); // 이벤트 리스너 구독 취소
이 메서드는 unsubscribe 메서드를 포함하는 객체를 반환합니다. 이 메서드를 사용하여 이벤트 리스너 구독을 취소할 수 있습니다.
2. 속성
sessionId (세션 ID)
이 속성은 AI 채팅의 고유 식별자입니다. 초기에는 null입니다. prompt 또는 load 메서드를 호출하여 채팅 메시지를 불러오면 세션 ID가 생성됩니다.
이 속성은 채팅 메시지 배열입니다. 현재 세션의 채팅 메시지를 포함하고 있습니다. 초기에는 빈 배열입니다. load 또는 prompt 메서드를 호출하면 채팅 메시지로 채워집니다. reset 메서드를 호출하면 비워집니다.
import { eliceContents } from'src/constants';eliceContents.subscribe((event) => {switch(event.type) {case'load': console.log(eliceContents.ai.chat.chatMessages); // [{ role: 'system', content: '초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', ts: 1634025600000 }, ...]
break;case'comment': console.log(eliceContents.ai.chat.chatMessages); // [{ role: 'system', content: '초등학생이 쉽게 풀 수 있는 문제를 만들겠습니다...', ts: 1634025600000 }, ...]
break;case'clear':console.log(eliceContents.ai.chat.chatMessages); // []break;case'reset':console.log(eliceContents.ai.chat.chatMessages); // []break; }});