정글에서 온 개발자
숫자를 자꾸 바꿔 출력하는 LLama 혼내주기 본문
문제 상황
Text2Query를 이용해 챗봇을 개발하고 있습니다.
단순 쿼리 생성 뿐 아니라, 주어진 쿼리를 바탕으로 출력이 나오게 실행해야 합니다.
그런데, 매출까지는 잘 뽑았는데 0을 자꾸 붙이는 에러가 있었습니다.
데이터는 이건데,
[(Decimal('**8061459368'),)]
자꾸 천억대 회사를 조단위 회사로 만든다거나..
원래 데이터는
[(Decimal('**09568240'),)]
이렇게 자꾸 0을 붙이는 일이 지속됐습니다. 특히 0을 붙이는 건 온갖 프롬프팅과 데이터 정제를 해도 고쳐지지 않아서 고생했습니다.
와중에 비교하고 있는 GPT는 저렇게 넣어도 답변을 잘해서 속은 타들어 갔습니다.
잘 나오는 모델 쓰면 좋긴 하지만, 저렴한 비용을 위해 적은 리소스에서 성공하기 위해서 여러 시도를 해보았습니다.
아래는 이를 해결한 과정입니다.
시도
이미 temperature는 0으로 맞춰진 상태였습니다.
데이터 정제
테이블 별로 쿼리에 대한 데이터가 어떤 양식으로 나올지 모르기에 정제 없이 챗봇이 알아보기를 바랬었습니다.
하지만, 계속 잘못된 값을 내서 정제해도 안되는건지, 다른 원인이 있는 찾아보기로 했습니다.
숫자만 넘기기
실패
숫자 뒤에 단위 쓰기
단위를 쓰는 건 더더욱 하기 싫었습니다. 데이터마다 단위가 다르기 때문에 앱단에서 처리해줘야 할 게 많기 때문입니다.
그러나 '혹시 엔터를 0으로 인식하나?' 하는 의문이 들어 아래와 같이 단위를 바로 옆에 붙여 전달했습니다.
처참하게 실패
프롬프트 개선
가이드라인 수정
변형 하지 말라고 사정해봐도 소용 없었습니다.
table scheme, sql 삭제
응답 생성에 참고가 되도록, 자료의 출처인 table scheme, 요청한 sql 들을 같이 넣었는데 혹시 Attention이 잘못 꽂힐까봐 삭제했습니다.
실패
성공
'모델을 바꿔야 하나' 고민하면서, LLama 의 70B 버전을 다운받는 중에 마지막으로 시도해봤습니다.
잘 보면, 모델이 스스로 쉼표를 붙이고 있는데서 착안해 아예 숫자에 쉼표를 넣어서 넘겨줬습니다.
성공
결론적으로 모든 숫자에 이렇게 쉼표를 쓰게 필터를 씌워줘야 할 것 같습니다.
'머신러닝' 카테고리의 다른 글
LLM으로 챗봇 만들기를 하며 배운 것들 (3) | 2024.08.26 |
---|---|
언어모델. 원시적 모델부터 GPT까지 개요 (0) | 2024.08.25 |
AI, 머신러닝, 딥러닝 기본 개념 (0) | 2024.08.23 |