
이전 글에서 https://api.openai.com/v1/chat/completions API에 대해 간단히 다뤄보았다. 그런데 앞선 글이 너무 겉핥기라 정작 중요한 부분을 몇 가지를 놓친 것 같아서 추가적으로 정리해보려고 한다. 크게 두 가지 부분이 아쉬워서 내용을 보강해보려고 한다. 첫 번째는 GPT 프롬프트(Prompt)라고 알려진 메시지 프롬프트가 들어가는 message 배열 부분과 두 번째는 현재 GPT가 답변을 주는 것처럼 한 글자씩 내려주는 stream 부분이다. 하나씩 알아보자. 1. message 배열 먼저, user는 일반적인 사용자를 의미한다. 우리가 평소에 GPT를 사용할 때처럼 아래와 같이 작성하고 보내도, GPT는 정상적으로 답변을 보내준다. "messages": [ { "ro..
앞선 글에서는 캐시에 단순 String만 저장했다. 그런데 작업을 하다보면 한 줄의 단순한 String 보다는 더 많은 정보를 담고싶기 때문에 Object를 저장하고 싶을 것이다. 이 내용을 정리해봤다. 1. 저장하기 객체를 스트림으로 변환 후 Byte[] 형태로 저장한다. id는 기존 String을 저장하는 방식과 같이 UUID로 랜덤값을 생성했다. public String saveObjectCache(ObjectVo value) { Cache cache = cacheManager.getCache("myCache"); String id = UUID.randomUUID().toString(); byte[] bytes = null; try (ByteArrayOutputStream bos = new Byte..
앞선 글에서 캐시를 삭제하는 부분이 빠졌었다. 사실, 서버 입장에서는 캐시를 만드는 것 보다 캐시를 삭제하는게 더 중요하다. 캐시를 삭제하지않고 계속 쌓게되면 100% 확률로 서버는 언젠가 죽기 때문이다. 이를 방지하기 위해 캐시를 꼭 삭제해야한다. 캐시 삭제 전략 일단 캐시의 삭제 전략은 크게 세가지가 있다. (더 있으면 알려주세요..) 1. ID별로 만든 캐시를 하나씩 수동 삭제하기 2. 특정시간 마다 통으로 캐시 비우기 3. TTL(Time-to-Live)을 설정해 ID별 캐시가 살아있는 시간 설정 안정적으로 설계를 잘한다면 1번만으로 사용이 가능하겠지만, 예외 발생시 캐시를 삭제 안하고 넘어가는 경우가 분명 발생할 것이다. 때문에, 사용하지 않는 캐시를 주기적으로 삭제하는 2번 전략도 필요하다. ..

매번 데이터를 저장하기 위해 데이터베이스를 거치는 것은 번거롭고 오버헤드가 발생하는 작업이다. 때문에, DB의 부하도 줄일 겸해서 인메모리에 짧은 시간, 작은 크기의 데이터를 저장해서 사용하는 경우가 많다. 대표적인 예가 Redis를 사용해서 캐싱을 하는건데, 스프링 자체에서도 캐시 기능을 제공한다. 이전에 비슷한 내용의 글을 작성했는데, 스프링부트에서 굉장히 쉽게 구현이 가능해서 정리해봤다. 사용법 별도의 gradle 설정이 필요 없다. 라이브러리도 딱히 받을 필요없음. 1. Config 설정 - Map형식으로 사용하고 싶어서 ConcurrentMapCacheManager 사용함 @Configuration @EnableCaching public class CacheConfig { @Bean public..
Chat API란? https://platform.openai.com/docs/api-reference/chat 정확히는 OPEN API에서 제공하는 GPT 모델과 chat을 할 수 있게끔 요청하는 API다. 얼마전만해도 completion만을 이용해서 GPT에게 질문하고 결과를 받아올 수 있었는데, 조금 더 다양한 기능을 제공하는 API가 생겼다. 기존에 제공하던 completion보다 더 많은 파라미터를 전달 받고, 조금 더 다양한 데이터를 response에 담아준다. 이전에는 GPT와 메시지를 주고 받는 API로는 Completion만 제공했었다. 그런데 Completion API는 간단한 질답은 가능하지만, 바로 직전의 대화도 기억하지 못한다는 단점이 있었다. 웹에서 제공하는 ChatGPT는 이전..
- Total
- Today
- Yesterday
- Spring
- 티스토리챌린지
- JWT
- serverless
- AWS
- ChatGPT
- springboot
- AWS EC2
- MySQL
- GIT
- 스프링부트
- cache
- Log
- OpenAI
- object
- elasticsearch
- CloudFront
- S3
- Kotlin
- java
- openAI API
- docker
- AOP
- 후쿠오카
- 오블완
- EKS
- Elastic cloud
- terraform
- lambda
- 람다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |