모델의 지식적인 측면을 수정하고자 하는 경우에는 RAG가 적합하고,
모델이 어떻게 답변하고 추론하는지를 수정하고자 하는 경우에는 파인튜닝이 적합하다
-By OpenAI (DevDay)- |
Result
페르소나_챗봇_만들기.py
1st. Clova Studio를 통해 페르소나 튜닝 모델 만들기
⇒ AI.HUB에서 제공하는 데이터셋의 일부를 인용하여,
⇒ clova studio에서 제공하는 ‘데이터 확장’ 기능을 통해 확장
⇒ 모델을 튜닝 |
2nd. 플랫폼에서 제공하는 Rest API, Python 코드를 이용하여
챗봇을 만듦 |
원하는 답변과 모델 정확도가 매우 낮게 도출되었다.
사실, 여기서 streamlit과 streamlit_chat을 이용해서 페르소나 챗봇을 만들었으나 결과적으로는 사용되지 않았다.
그래도 여기서 아이디어를 착안한 점은
배울 수 있던 코드
preset_text를 system → user → assistant → user → assistant 에 원하는 시나리오와 답변을 설정하고, 이를 Tunning model을 만들 수 있다는 점.
그리고 system에 원하는 시스템까지 명시한다면 더욱 명확한 Tunning model을 작성할 수 있다는 점을 학습하게 됨.
Result
•
질문 생성 프롬프트 작성
question_test.py
우선, prompt를 아래와 같이 했을 때, 나온 결과 (잘 생성됨)
prompt = '''
당신은 인지에 장애가 있는 장애인들이 일상생활에서 겪는 어려움을 해결해주는 챗봇입니다.
상대방이 인지에 장애가 있다고 가정하고 질문 생성 방법을 바탕으로 궁금한 점들을 30개 이상 질문하세요.
### 질문 생성 방법 ###
- 대화체로 생성한다.
- 질문은 인지 장애인들이 겪는 어려움과 관련 있게 생성한다.
- 다양한 연령대에 맞춰서 다양한 질문들을 많이 생성한다.
- 질문은 반드시 리스트나 배열에 사용할 수 있도록 다음과 같은 형식으로 출력한다. [\"첫 번째 질문\", \"두 번째 질문\", ....]
''' |
문제점
•
답변 생성 프롬프트 작성
answer_test.py
clova studio의 데이터 확장 기능을 사용하여 답변을 생성한 결과
•
모델 학습(Learning Creation API)
X-NCP-IAM-ACCESS-KEY와 X-NCP-APIGW-SIGNATURE-V2 확인하기
It is an API creates learning. You can specify a model for tuning, task type, epoch, etc.
Call the API including the file path of the dataset for tuning.
[Request] URL : POST: /tuning/v2/tasks |
learning_creation_API.py
위 코드 실행시, 자동으로 모델 학습이 시작됨
: 모델이 만들어준 데이터로 데이터셋을 구축하다보면 품질이 떨어질 수 밖에 없기 때문에, 캐릭터 챗봇을 제대로 구현하고자 한다면 디테일하게 검수를 진행하거나, 혹은 데이터셋을 직접 구축하는 것이 가장 좋습니다.
학습 모델로 채팅한 결과
<LLM을 활용하여 나만의 캐릭터 챗봇 만드는 방법을 소개>
[1st. 모델 선정]
→ HyperCLOVA X 선택 |
[2nd. 학습 전략 세우기]
→ 데이터셋은 어떻게 구성해서 학습할 것인지?
예를 들어, 캐릭터 챗봇의 특징, 세계관, 가치관 등을 생각해보고
어떤 식으로 답변하면 좋을지, 말투는 어떻게 하면 좋을지 등을 고려해서 데이터셋을 구축하기
1) 간단한 특징을 통해 캐릭터의 대략적인 범위 선정하기
2) 해당 범위 내에서 사용자 질문들 구성하기
3) 캐릭터의 말투를 입혀 답변 데이터셋 구성하기
: 역할 부여를 통해 AI가 앞으로 어떻게 행동하면 되는지를 프롬프트에 명시한 뒤,
캐릭터의 말투나 답변 포맷을 지정하면 답변 생성 프롬프트를 만들 수 있다.
[그림 1 참조]
1st. 답변 생성 프롬프트를 완성하기
2nd. 답변 생성 프롬프트를 토대로 데이터셋 구축하기
3rd. 데이터셋을 통해 모델 학습하기
|
[3rd. 데이터셋 구축 자동화]
HyperCLOVA X는 질문, 답변 셋으로 구성된 데이터셋을 통해 모델을 학습시킬 수 있다.
⇒ 네이버에서는 최소 400개 이상의 데이터셋을 학습시키는 것을 권장함.[그림2 참조]
: 데이터셋을 직접 구축하는 것이 시간과 비용이 많이 든다면,
질문(답변) 생성 프롬프트를 활용해서 데이터셋을 쉽게 자동으로 구축 가능하다.
[그림3 참조] |
[4th. 모델 학습하기]
: 질문 생성 프롬프트와 답변 생성 프롬프트를 활용해서 데이터셋이 완성되었다면,
이제는 만들어진 데이터셋을 활용해서 모델을 학습할 차례입니다.
우선, 해당 데이터셋(dataset.csv)파일을 네이버클라우드의 object storage 서비스를 이용해 업로드하세요.
이 부분부터는 [NCP][LLM][HyperCLOVA X] 페르소나 챗봇 만들기 예제(위 토글목록)를 참조하면 좋습니다. (https://github.com/minchulock/persona/blob/main/페르소나_챗봇_만들기.ipynb)
|
Repetition Penalty
Repetition Penalty : 같은 표현이 반복되는 토큰에 패널티를 부여하는 파라미터
: 질문을 생성할 때는 가급적 멀티턴을 사용하지 않는 것이 좋고, Maximum tokens 값을 높여서 한 턴에 다양한 문장들이 생성될 수 있도록 만드는 것이 좋습니다. |
Temperature
Temperature : 확률 분포에 가중치 변화를 주어 다양성을 조절하는 값
: Temperature가 너무 낮으면 프롬프트를 잘 이해하지 못하고, 질문들이 단조로워지는 현상이 발생합니다.
또한, Temperature가 너무 높으면 할루시네이션 현상이 강하게 발생합니다.
Top P 값(Top P=0.8인 경우, 누적 확률 값이 상위 80%에 포함된 토큰만 후보로 선택)을 고정한 상태에서 Temperature를 필요에 따라 조절하는 것을 권장한다. |
출처 : https://api.ncloud-docs.com/docs/ai-naver-clovastudio-summary [NAVER CLOUD PLATFORM, CLOVA Studio 개요]
Chat Completions | HyperCLOVA X 모델을 활용한 대화형 문장 생성 |
Completions | 플레이그라운드의 일반 모드를 통해 문장 생성 |
여기서는 질문 데이터셋과 답변 데이터셋을 자동으로 생성하는 기능들을 설명했으나,
성능 문제로 인하여 유효하지 않았다.
대신에 데이터셋 확장 기능에 대해 인지하게 된 계기가 되었으며, 질문과 답변들의 모범 답안을 기준으로 제시해준 질문에 대한 답변을 확장 기능을 통해 확장시킬 수 있게 된 계기였다.
•
(Purpose-Action) 에 따른 situation list 확보
situation list를 CLOVA Studio를 이용해 구체화하기
낙서장(메모장)
(Purpose-Action) 에 따른 situation list 확보
ChatGPT 활용한 예시
CLOVA Studio를 활용한 예시
situation list를 CLOVA Studio를 이용해 구체화하기
# 일상생활 도움 구체적인 상황들
상황 : "내일 병원에 가야 하는데 잊어버릴까 봐 걱정돼."
묘사: "경미한 치매가 있어서 병원 가야 하는 것을 잊어버릴까 봐 걱정돼.
묘사: "단기 기억력이 저하되어서 병원 가야 하는 것을 잊어버릴까 봐 걱정돼.
묘사: "구조적 인지 장애로 인해 병원 가야 하는 것을 잊어버릴까 봐 걱정돼.
묘사: "장기적인 인지 장애로 인해 병원 가야 하는 것을 잊어버릴까 봐 걱정돼.
# 일상생활 도움 구체적인 상황들
상황 : "약 복용 시간을 자꾸 잊어버려."
묘사 : "기억력 감퇴로 인해 약 복용 시간을 종종 잊어버리고는 해.
묘사 : "최근 몇 년 동안 단기 기억력이 많이 나빠져서 약 복용 시간을 놓칠 때가 많아.
묘사 : "알츠하이머병으로 인해 장기적인 인지 장애가 생겨서 약 복용 시간을 놓치는 경우가 잦아졌어.
묘사 : "나는 구조적 인지 장애와 알츠하이머병을 앓고 있는데, 이로 인해 약 복용 시간을 계속 놓치곤 해
# 일상생활 도움 구체적인 상황들
상황 : "오늘 집안일이 많아서 어디서부터 시작해야 할지 모르겠어."
묘사: "최근 집 청소를 하지 않아서 무엇부터 시작해야 할지 잘 모르겠어.
묘사: "집안일을 제대로 한 지가 오래돼서 뭐부터 시작해야 할지 막막해.
묘사: "집 안 정리와 청소를 오랫동안 하지 않아서 정말 엉망이야.
묘사: "요즘 여러 가지 이유로 바빠서 집안일을 소홀히 했더니, 도저히 손댈 수 없을 정도로 엉망이 되어버렸어.
# 일상생활 도움 구체적인 상황들
상황 : "오늘 무슨 요리를 해야 할지 고민이야."
묘사: "최근 몇 달 동안 식단 관리를 하고 있는데, 매일 어떤 음식을 먹어야 할지 결정하는 게 힘들어.
묘사: "건강상의 이유로 식단 조절을 시작했는데, 매 끼니마다 적절한 양의 음식을 섭취하는 게 정말 어려운 것 같아.
묘사: "요즘 체중이 많이 늘어서 다이어트를 하기로 결심했어.
묘사: "당뇨병 진단을 받아서 혈당 수치를 낮추기 위해 식단을 바꾸기로 했어.
|
PyQT란?
PyQT 이벤트 처리
PyQT Designer

















: 역할 부여를 통해 AI가 앞으로 어떻게 행동하면 되는지를 프롬프트에 명시한 뒤,
캐릭터의 말투나 답변 포맷을 지정하면 답변 생성 프롬프트를 만들 수 있다.
[그림 1 참조]
1st. 답변 생성 프롬프트를 완성하기
2nd. 답변 생성 프롬프트를 토대로 데이터셋 구축하기
3rd. 데이터셋을 통해 모델 학습하기
이 부분부터는 








