Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- whisper-1
- 자바스크립트문법 #노마드코더 #
- ime란
- Realtime
- gpt-4o-transcribe
- OpenAI
- javascript문법
- interable
- chatGPT
- AI
- 이터러블프로토콜
- 자바객체 #자바인스턴스 #객체와인스턴스차이점
- 음성채팅
- iterationprotocol
- flex사용법
- 이터레이터프로토콜
- flexgrid차이점
- 자바스크립트filter
- tts-1
- 바닐라JS #바닐라JS로크롭앱만들기 #
- ES6란
- DestructuringAssignment
- 이터레이션프로토콜
- flex특징
- 레이아웃모델
- 자바스크립트sort함수
- JAVA #Swing #자바스윙 #스윙
- 배열재정렬함수
- ime일본어처리
- realtimeapi
Archives
- Today
- Total
끄적끄적 개발기록
로컬state를 만들어 서버 부하 줄이기 본문
챗봇을 개발하면서 assistant api를 사용했다.
노출되는 api-key로 인해 프록시 서버를 만들어 openai 의 api를 사용했다.
기존에는 질문을 던지고 대답을 받으면 다시 메시지리스트를 refetch하여 사용했는데 그럼 메시지 답변을 주고 받을 때마다 refetch가 일어나 성능상 좋지 못할 것 같았다.
따라서 useEffect로 localMessageList를 만들어 저장한 뒤 챗봇 탭이 (gpt로 치면 채팅방) 변경될 때에만 refetch 로 메시지 리스트를 가져오게 변경했다. 따라서 탭이 변경되지 않는다면 서버 부하가 훨~씬 줄어들게 된다.
useEffect(() => {
if (!isAnswerLoading && streamingAnswer) {
const userMessage: LocalMessagesListDataType = {
id: String(Math.random()),
created_at: Math.floor(Date.now() / 1000),
role: 'user',
content: [{ text: { value: query } }],
attachments: [],
};
const assistantMessage: LocalMessagesListDataType = {
id: String(Math.random()),
created_at: Math.floor(Date.now() / 1000),
role: 'assistant',
content: [{ text: { value: streamingAnswer } }],
attachments: [{ file_id: streamingFileId }],
};
setLocalMessageList(prev => [...prev, userMessage, assistantMessage]);
clearStreamingAnswer();
clearQuery();
}
}, [isAnswerLoading, streamingAnswer, streamingFileId, clearStreamingAnswer, query, setQuery]);'개발 > Problem&Solution' 카테고리의 다른 글
| 브라우저에서 비밀번호로 인식하게 만들기 (0) | 2024.09.12 |
|---|---|
| 불필요한 상태 삭제하기 + enabled (0) | 2024.07.27 |
| Typescript 인덱싱 에러 (0) | 2024.07.15 |
| IME과 textarea enter처리 (0) | 2024.07.09 |
| react-query, retetchOnWindowFocus (0) | 2024.06.26 |