diff --git a/server/services/gptService.js b/server/services/gptService.js index 40aca31..63df792 100644 --- a/server/services/gptService.js +++ b/server/services/gptService.js @@ -19,6 +19,19 @@ const FOLLOWUP_TOOLS = GPT_TOOLS.filter((tool) => ); let usedTotalTokens = 0; +/** + * 토큰 카운트를 초기화합니다. (새 채팅 시작 시 호출) + */ +export const resetTokenCount = () => { + usedTotalTokens = 0; + console.log('🔄 Token count reset to 0'); +}; + +/** + * 현재 사용된 총 토큰 수를 반환합니다. + */ +export const getTotalTokens = () => usedTotalTokens; + /** * GPT 스트림 채팅을 처리합니다. * @param {Array} messages - 채팅 메시지 배열 @@ -131,7 +144,7 @@ export const streamChat = async ( } } else { functionResults.push({ - role: 'user', + role: 'developer', content: `${functionName} 함수가 성공적으로 실행되었습니다.`, }); } @@ -326,7 +339,7 @@ const streamChatForFollowUp = async (messages, socket, model) => { const functionCallMap = {}; // { [item_id]: { ... } } const functionCalls = []; // 최종 실행용 배열 let hasTextContent = false; // 텍스트 응답이 있는지 확인 - usedTotalTokens = 0; + for await (const event of stream) { // 1. 함수 호출 item 추가 if ( diff --git a/server/socket/socket.js b/server/socket/socket.js index 39e98c4..8d283c2 100644 --- a/server/socket/socket.js +++ b/server/socket/socket.js @@ -3,6 +3,7 @@ import { v4 as uuidv4 } from 'uuid'; import { handlePlanRecommend } from '../controllers/planSocketController.js'; import { ChatSession } from '../models/ChatSession.js'; import { conditionByPlanGuide, InputRoleEnum } from '../utils/constants.js'; +import { resetTokenCount } from '../services/gptService.js'; export const setupSocket = (server) => { const io = new Server(server, { @@ -34,6 +35,10 @@ export const setupSocket = (server) => { socket.on('reset-session', async ({ sessionId }) => { // MongoDB 작업 제거 - 로컬스토리지에서 관리 const newId = uuidv4(); + + // 토큰 카운트 초기화 + resetTokenCount(); + socket.emit('session-id', newId); socket.emit('session-history', []); });