반응형

먼저 필자는 코딩테스트 블로그를 만들고, 코딩테스트와 관련된 내용을 chatGPT에 질문하고, 코딩테스트 문제를 생성하는 서비스를 만드려고 한다.

사용하는 유저 혹은 문제 마다 다 다른 대화내용일텐데,
chatGPT를 사용하는 것처럼 질의응답 내용을 다 파악하여 답할 수 있을까?

 

결론은 그렇지 않다.

 

해당 내용을 기억하지 못하기 떄문에, 기존 대화 내용을 프롬프트에 담아 제공을 해준다.

이를 통해 chatGPT로 하여금 이전 내용을 숙지하여 의도에 맞는 답을 전달해줄 수 있도록 할 수 있는것이다. (물론 토큰 비용은 더 나가겠지만.. 좋은 서비스를 제공하기 위해서는 감안해야 할 듯 하다.)


따라서 나는 경우를 세가지로 나누게 되었다.

  1. 신규 사용자의 첫 질문
  2. 기존 사용자의 첫 코딩테스트 질문
  3. 기존 사용자의 연속된 코딩테스트 질문

경우마다 다 다르게 나누어 프롬프트를 설정한다.

프롬프트는 다음과 같다.

  1. 해당 언어를 주력 기술로 가지고 있는 사용자
  2. 기존 대화에서 현재 질문한 것과 가장 유사한 질문 및 가장 유사하지 않은 질문을 제시한다.
  3. 캐시 메모리를 이용하여, 가장 최근 두 질의응답을 저장해 이를 반환한다.

그렇다면 해당 행동은 RAG라고 볼 수 있을까?

RAG(Retrieval-Augmented Generation)는 외부의 정보를 검색하거나 불러와서 생성 모델의 입력으로 제공하는 방식으로, 본질적으로 검색(검색 및 불러오기) + 생성 접근 방식을 의미한다.

 

유의미한 결과를 도출하기 위해 정보를 다듬어 다시 제공한다는 점에서 RAG라고 볼 수 있다. 물론 주로 사용되고 있는 기술이 외부의 정보를 한데 모아 정보를 통합하여 질문하는 방식이다. 허나 유창한 기술을 사용하지 않더라도 (원칙에 부합하기도 하고) 사용자 입장에서 더 좋은 결과를 획득할 수 있다면 그것도 올바른 방법이지 않을까 필자는 생각한다. 

 

물론 2번 프롬프트에서 BERT모델을 사용하여 벡터화 한 값을 통해 유사한 질문과 가장 유사하지 않은 질문을 제시하기는 한다.

그렇다면 RAG를 어떻게 사용하게 되는지 확인해 보자.

 

  1. Retrieval (검색 및 불러오기)
    • 사용자가 이전에 했던 질문과 답변, 문제 정보 등을 DB(2번 프롬프트)나 캐시(3번 프롬프트)에서 불러온다.
    • 필요한 경우 중요한 부분만 요약하여 정보를 효율적으로 구성한다.(2번 프롬프트)
  2. Augmentation(정보 강화)
    • 불러온 대화 이력이나 문제와 관련된 정보를 프롬프트에 추가하여, 모델이 이전 대화 맥락을 인식할 수 있게 한다.
    • 요약된 이력, 사용자 성향, 특정 질문 패턴 등이 프롬프트에 포함되므로 사용자 맞춤형 답변을 생성하도록 도와준다.
  3. Generation(응답 생성)
    • 최종적으로 강화된 프롬프트를 모델에 입력하여 답변을 생성한다.
    • 이때, 모델은 전달된 프롬프트에 포함된 정보를 참고하여 맥락에 맞는 답변을 하게된다.

이렇게 발전에 흐름에 전지전능하다고 생각되는 GPT도 다 해주는 건 아니기에, 해당내용을 참고하여 API를 잘 다뤄보기 바란다.

 

 

반응형
반응형

Azure에서는 학생 인증을 진행 할 경우 100달러를 무료 지급하는 서비스를 진행하고 있다.

OpenAI를 이용한 API를 만들어보고 싶거나, 서비스를 맛보고 싶은 경우 진행하도록 하자.

채팅 플레이 그라운드 - chatGPT에 대한 설정을 진행할 수 있다.

MarketPlace에서 OpenAI를 검색하여 리소스를 생성하고 생성된 리소스에 들어온다.
이후 개요 탭에서 Azure OpenAI studio 이동을 누르면 해당 사진인 채팅 플레이 그라운드에 접속할 수 있게 된다.

해당 채팅 플레이 그라운드에서 지침 및 컨텍스트 제공을 통해 클라이언트에 답할 양식등을 지정할 수 있다.

 

배포를 해보도록 하자.

기본 모델과 미세 조정된 모델을 선택

배포 시, 기본 모델과 미세 조정된 모델을 선택할 수 있는데 나는 chatGPT의 기본모델을 선택하기로 하겠다.

제공하는 chatGPT 모델 종류

여기서 모델을 설정할 수 있다. 나는 가장 무난한 gpt-4를 사용하기로 했다.

모델 배포 상세 페이지

gpt-4 모델을 선택해서 배포유형에 따라 선택할 수 있으며, 리소스 위치 및 모델 버전 또한 사용자 지정으로 선택할 수 있다.

 

배포 유형은 총 네가지이다.

 

1. 글로벌 표준(Global Standard):

 전 세계적으로 서비스가 필요한 경우 선택하는 배포 유형입니다.

 다양한 지역에 걸쳐 안정적인 성능을 제공해야 할 때 유용합니다.

 글로벌하게 빠르고 일관된 응답 시간을 보장해야 하는 서비스, 예를 들어 전 세계적인 사용자 기반을 가진 서비스에 적합합니다.

2. 표준(Standard):

 특정 지역 또는 로컬 서비스에 적합한 배포 유형입니다.

 주로 지역적인 사용자 대상이거나 글로벌 성능이 필요 없는 경우 선택합니다.

 적은 비용으로 적절한 성능을 제공할 수 있습니다.

3. 전체 일괄 처리(Batch Processing):

 데이터를 한꺼번에 처리하는 작업에 적합한 배포 유형입니다.

 실시간 처리보다는 대규모 데이터를 일괄적으로 처리하는 것이 필요한 경우에 유용합니다. 예를 들어, 매일 밤 대량의 데이터를 처리하거나 로그 분석에 사용됩니다.

 실시간 성능보다는 작업 완료 시간이 중요한 경우에 선택합니다.

4. 프로비저닝 된 관리(Provisioned Management):

 사전에 리소스를 할당하고 관리하는 배포 유형입니다.

 특정 트래픽 패턴이 예측 가능하거나 고정된 리소스 할당이 필요한 경우 적합합니다.

 리소스 사용량을 미리 예상하고 설정할 수 있어, 필요에 따라 성능을 관리할 수 있습니다.

모델 배포 사용자 지정

 

이 중 한국에서 서비스할 예정이므로 표준을 선택하는 것이 일반적이다. 그래서 표준을 선택했으나, 남은 리소스가 오스트레일리아 혹은 캐나다 등과 같이 한국과 먼쪽에 위치하고 있으므로, 글로벌 표준으로 사용 하기로 한다.

 

글로벌 표준을 통한 chatGPT 모델 생성은 다음 포스팅에 기록하겠다.

반응형

'BackEnd > OpenAI chatGPT' 카테고리의 다른 글

chatGPT API를 사용할 때 유의할 점 (RAG)  (12) 2024.11.03
OpenAI chatGPT playground  (0) 2024.11.03

+ Recent posts