
6월 16일에 OpenAI가 업데이트 되었다. 몇 가지 모델이 업데이트 되었고, 토큰 수 증가와 함께 Function calling이란 기능도 함께 추가되었다. 이전 포스팅에서 토큰 수 증가로 대화 유지를 원활하게 할 수 있다는 것에 대해 다뤘으니, 이번에는 Function calling에 대해 알아보자. Function calling이란? Open AI reference에서 Function calling의 일부를 발췌했다. API 호출에서, 사용자가 gpt-3.5-turbo-0613, gpt-4-0613 모델에 함수를 설명할 수 있습니다. 모델이 이러한 함수를 호출하기 위한 인수가 포함된 JSON 개체를 출력하도록 지능적으로 선택하도록 할 수 있습니다. Chat Completions API는 함수를 호..

JPA를 사용해 DB insert를 하던 중 뜬금없이 아래와 같은 에러가 났다. java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement 흠 DB가 어떤 이유에서인지 read-only 설정이 되어 있군. 인프라 개발자에게 연락해야지. 라고 끝났으면 좋았겠지만, 인프라는 DB 설정을 변경한게 없다고 한다. 웃긴건, 같은 프로젝트의 다른 서비스 내에서의 DB insert는 정상적으로 수행되고 있다는 점이다. 다른 서비스와 차이점을 뜯어보던 중 @Transactional 이 빠져 있는걸 확인했다. @Transactional 어노테이션을 붙이니까 정상 동작했다. 그..

흔히 볼 수 있는 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) 에러... CORS를 간단히 정리하면 아래와 같다. CORS는 다른 도메인 간에 리소스를 공유할 때 발생하는 보안상의 이슈를 해결하기 위해 만들어진 매커니즘. 웹 브라우저에서는 보안상의 이유로 다른 출처(Origin)에 있는 리소스를 직접 요청할 수 없다. 자세히 정리된 곳은 많으니 따로 정리하진 않겠다. 스프링 프레임워크에서는 간단히 해결이 가능하다. @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registr..

매번 데이터를 저장하기 위해 데이터베이스를 거치는 것은 번거롭고 오버헤드가 발생하는 작업이다. 때문에, DB의 부하도 줄일 겸해서 인메모리에 짧은 시간, 작은 크기의 데이터를 저장해서 사용하는 경우가 많다. 대표적인 예가 Redis를 사용해서 캐싱을 하는건데, 스프링 자체에서도 캐시 기능을 제공한다. 이전에 비슷한 내용의 글을 작성했는데, 스프링부트에서 굉장히 쉽게 구현이 가능해서 정리해봤다. 사용법 별도의 gradle 설정이 필요 없다. 라이브러리도 딱히 받을 필요없음. 1. Config 설정 - Map형식으로 사용하고 싶어서 ConcurrentMapCacheManager 사용함 @Configuration @EnableCaching public class CacheConfig { @Bean public..
에러 원인 요약 : 요청을 받을 때, 요청 객체에 디폴트 생성자가 없어서 발생하는 문제 분명 요청을 보낼 때는 문제가 없는데, 서버에서 받을 때 아래와 같은 에러가 발생하는 경우가 있다. { "timestamp": "2023-04-26T08:26:19.146+00:00", "status": 400, "error": "Bad Request", "path": "/v1/message" } 대충 이렇게 생긴 객체가 하나 있다. 요청 객체로 쓰기에 별 문제가 없어보인다. @AllArgsConstructor @Getter @Setter public class RequestMessageDto { @NotNull @NotEmpty private String message; } 하지만 이 요청 객체도 위 에러를 발생시킨..
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는 이전..

RestTemplate이란? 이 전에 썼던 글을 참고 다른 매서드에서도 반복적으로 RestTemplate을 사용한다면? RestTemplate 예시를 보면 아래와 같이 매번 객체를 새로 생성해서 사용한다. RestTemplate restTemplate = new RestTemplate(); String url = "http://example.com/users/{id}"; Map params = new HashMap(); params.put("id", "123"); User user = restTemplate.getForObject(url, User.class, params); 이렇게 사용하게 되면 모든 매서드에서 new를 써서 RestTemplate 객체를 생성해서 사용해야 한다. 트래픽이 작은 작업들에..

12월 초에 chatGPT를 처음 안 이후 꾸준히 써왔는데, 최근 갑자기 주목받으면서 특정 시간대 사람들이 몰려서 접속하기도 힘들고 자주 연결이 끊어지기 시작했다. 편하게 쓰고 싶은 마음에, 무슨 방법이 없을까 하다가 OpenAI에서 제공하는 API를 찾게 되었고, 바로 사용해봤다. 이런 저런 문제가 있어 오래걸렸지만, 결과도 괜찮게 나오고, EC2에 배포했는데도 생각보다는 응답이 빨랐다. 처음 설계는 AWS EC2 + Docker로 배포하려고 했지만, 어떤 이유에서인지 Docker에 코드를 올린 후, Tomcat에서 배포가 안됐다. 그래서 일단 AWS EC2만으로 배포해 사용해봤다. 제목에는 ChatGPT API라 작성했지만, 정확히는 OpenAI에서 제공하는 통합 API다. 때문에 학습 관련 API도..
- Total
- Today
- Yesterday
- 티스토리챌린지
- Kotlin
- ecs
- terraform
- Spring
- 람다
- AOP
- S3
- CloudFront
- 후기
- object
- lambda
- GIT
- cache
- java
- CORS
- serverless
- springboot
- Log
- 스프링부트
- ChatGPT
- 후쿠오카
- 오블완
- AWS EC2
- elasticsearch
- AWS
- EKS
- OpenAI
- docker
- JWT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |