Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions server/services/gptService.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 - 채팅 메시지 배열
Expand Down Expand Up @@ -131,7 +144,7 @@ export const streamChat = async (
}
} else {
functionResults.push({
role: 'user',
role: 'developer',
content: `${functionName} 함수가 성공적으로 실행되었습니다.`,
});
}
Expand Down Expand Up @@ -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 (
Expand Down
5 changes: 5 additions & 0 deletions server/socket/socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -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, {
Expand Down Expand Up @@ -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', []);
});
Expand Down
Loading