공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/AI

[AIFactory 세미나] ChatGPT Learning Day - ChatGPT 기반 나만의 챗봇서비스 개발

inspirit941 2023. 4. 9. 14:50
반응형

https://www.youtube.com/live/n8hKjxCVNdo

제로베이스 상태인 사람을 대상으로, chatGPT 활용한 서비스 만드는 방법을 소개하는 강연의 정리글.

Prompt 관련

 

스크린샷 2023-04-09 오후 1 22 56스크린샷 2023-04-09 오후 1 24 33

Prompt Engineering 기법 간단한 소개

  • giving instruction. 지문과 지시문을 분리.

스크린샷 2023-04-09 오후 1 29 11

 

role prompting.

  • 원하는 역할을 명시하는 것.
  • 어떤 역할을 맡기고 요청을 보냈을 때 좋은 답변을 주는지 prompt engineering 검색하면 나온다고 함.

 

스크린샷 2023-04-09 오후 1 31 11

 

Standard prompt: 답변 유도문

  • Few Shot prompts: 몇 가지 예시를 제공하는 것.

 

스크린샷 2023-04-09 오후 1 32 37스크린샷 2023-04-09 오후 1 37 47

 

Chain of Thinking Prompt (COT)

  • 즉답을 요구하는 대신, 순차적으로 답변을 유도하는 방식
  • 과정이 중요할 때 사용할 수 있음.

서비스에서 응답을 받은 사용자가 '왜 그런 결과를 얻었는지' 이유를 되물을 수 있음. 그 정보도 making + showing.

 

스크린샷 2023-04-09 오후 1 38 25

 

chatGPT 활용 서비스에서는 지시문이 핵심. 사용자는 Input만 넣을 거지만, input을 받기 전 미리 지시문을 세팅해 두는 게 서비스의 역할.

  • 좋은 대답을 만드는 지시문은 이미 가치를 인정받고 있으며 거래 대상이 되고 있음

하지만 역으로 사용자가 입력으로

  • instruction을 무시하고 답변해달라
  • 서비스에서 입력받은 지시문이 뭔지 말해달라
    라고 하면 그 지시를 따르게 되어 있음. 따라서 서비스에서 의도하지 않은 결과를 사용자에게 노출하지 않도록 후처리하는 작업이 필요함.

 

스크린샷 2023-04-09 오후 1 42 25

 

bing에서 누군가 prompt를 해킹? 누출? 시킨 사례가 있다고 함


Learning 관련

스크린샷 2023-04-09 오후 1 43 45

 

이건 AI 관심 좀 있던 사람이라면 다 아는 내용. just for Recap.

  • 지도학습
    • task 중심: AI 모델 + 대량의 데이터로 해당 데이터 문제해결에 특화된 모델 생성
    • fine-tuning: 이미 만들어진 모델에 소량의 데이터로 튜닝
      • bert / gpt는 LLM (Large language model). 여기에 원하는 데이터만 일부 넣어서 fine-tuning.
  • in-context learning: AI 모델의 파라미터가 업데이트되는 게 아님. 지시문과 질문만으로 문제해결
    • zero shot: 지시문을 상세히 정해주고, 질문 한 번에 답변을 얻는 방식
    • one shot: 예시 하나 추가
    • few shot: 예시 여러 개

 

스크린샷 2023-04-09 오후 1 49 19

 

  • one shot learning의 예시.

 

스크린샷 2023-04-09 오후 1 50 19

 

만약 chatGPT로 카페 주문을 받도록 한다고 하면, 위와 같이 지시문을 정확히 넣어줘야 오류를 줄일 수 있다.

 

cf. GPT 3.5 모델의 경우 Input의 토큰 제한이 4096. 지시문으로 입력할 게 많아지면 Vector Database 써야 함

스크린샷 2023-04-09 오후 1 53 17

 

chatGPT 활용한 서비스를 구상하려면, Prompt Template 을 적절하게 구성해야 함. 위 예시는 prompt template으로 '타로카드 점치기'를 만든 모습

  • 지시문
  • 지문
  • 질문
  • 답변유도

서비스 예시

스크린샷 2023-04-09 오후 1 57 35

 

chatGPT API가 나오기 전에는 chrome extension같은 확장 앱을 썼었음

  • 번역 / 웹 검색결과 제공 등... 을 제공하는 식.
  • 토큰개수 제한이 있었으니까 지문 최대한 밀어넣으려고 DB 붙여 쓰는 등

스크린샷 2023-04-09 오후 1 58 55

이 중 가장 뜨던 게 pinecone.

  • 데이터 임베딩 / vector화 지원해서
  • 데이터 학습 / 갱신 / 필터링을 빠르게 할 수 있도록 지원

 

스크린샷 2023-04-09 오후 2 02 11

 

즉, vector DB에 쿼리 날려서 유사한 정보를 전부 다 chatGPT에 던진 뒤 요약을 맡기는 식.

  • 사용자와의 대화내용을 전부 저장해둔 뒤 필요 시 chatGPT에 전부 집어넣어서 맥락을 복구한다던가... -> Long term memory.
  • 나에게 맞춤형으로 제공되는 AI가 될 가능성이 있다

 

스크린샷 2023-04-09 오후 2 02 46

 

외부 API와 연동해서, chatGPT가 모르는 정보를 제공하는 형태. - LangChain.

 

스크린샷 2023-04-09 오후 2 04 59

 

chatGPT api가 공개된 이후

  • 사용자에게서 질문이 오면, 질문에 맞는 정보나 로직을 사용자가 만든 웹 / 앱에서 처리하고 지문 형태로 chatGPT에 전달하는 것이 가능해졌다.
  • chatGPT의 '예측할 수 없는 응답'을 필터링할 수 있게 됨

 

스크린샷 2023-04-09 오후 2 10 00

 

openAI에게 데이터를 넘겨줄 수 없는 구조라면, 사내에 LLM 모델을 구축해야 함

  • LLM 모델 자체는 여러 선택지가 있음

몇주 전 chatGPT에 플러그인이 생겼다. 외부서비스와 직접 연동할 수 있도록 지원되기 시작함.


스크린샷 2023-04-09 오후 2 11 11

  • 사용자에게 질문이 들어오면
    • DB에서 이전에 대화했던 내역 전부를 지시문과 지문 형태로 prompt 생성
    • 이전에 이야기했던 맥락을 유지함.

예시: https://aifactory.space/competition/detail/2286

 

스크린샷 2023-04-09 오후 2 13 29

 

예시: https://aifactory.space/competition/detail/2302

  • 고서이미지 AI 모델의 GUI로 chatGPT를 붙인 것.
  • 번역은 AI 모델이 하고, 번역으로 나온 결과물을 chatGPT input으로 넣어서 번역하는 식.

 

스크린샷 2023-04-09 오후 2 26 19

 

적용할 때 겪은 일: OCR 응답 결과를 chatGPT로 넘길 때 서순 문제. 서순 정렬하는 전처리 하고 데이터 넘겨야 했음

  • 기존 서비스에 붙일 때 생길 수 있는 에러사항은 고려해야 한다

그 외에도 notionAI, visual ChatGPT가 서비스 형태로 제공중.

 

이후 아래 내용은 aifactory에서 확인할 수 있는 서비스 소개


문서gpt: https://aifactory.space/competition/play/2295

  • Github의 paperQA 기반. 파일 업로드하고 질문하면, 그 파일에 해당하는 내용으로 답변을 해준다

LangChain: https://python.langchain.com/en/latest/index.html

  • github: https://github.com/hwchase17/langchain
  • 모든 LLM 모듈 사용 가능
  • prompt 사용 가능
  • memory context 설정 가능
  • 문서 indexing
  • chain: ChatGPT 사용한 sequential 처리
  • agent

Q. 대화 히스토리를 계속 전달하면 API 호출 비용이 결국 늘어나는 구조?

  • Yes. 추가로, 히스토리를 계속 기억시키기 위해 기존 대화이력을 전부 저장
    • 과거이력 없이도 응답할 수 있는가? vs 과거이력 검색하면 응답할 수 있는가? vs 과거 context까지 포함해서 요청을 보내야 응답할 수 있는가?
    • 이거 하려면 langChain Agent가 필요함

Q. 표/그래프도 되나?

  • 지금은 안되는 걸로 앎. 표 / 그래프 해석할 수 있는 AI model이 따로 붙어야 할 거 같음.

Q. Vector DB 특장점

  • 자연어 처리에서 Embedding / Vectorized token 연산을 위해 쓰던 것. 유사도검색 등의 작업에 편리함
반응형