> 착한 말로 감자 키우기 (w/ Hugging Face Inference API)
Crescent
Table of Contents
다음은 2024년 2월에 진행한 AxT CC (Crash Course) 단기 교육:'누구나 할 수 있는 API 활용 백서 : Open API & ChatGPT편'에서 진행한 실습 내용입니다.
☀️ 전체 코드
p5.js Web Editor
🌱 소개
- 문장을 입력을 받는다. (HTML)
- Hugging Face Inference API를 활용, 이 문장이 긍정인지 부정인지 판단한다. (JavaScript)
- 결과를 HTML에 표시한다. (JavaScript)
- 긍정이면 잎이 자라고 배경이 초록색으로 바뀐다. 그리고 부정이면 잎이 줄어들고 배경이 분홍색으로 바뀐다. (p5.js)
1. 필요한 것
- Hugging Face Inference API Key (Access Token)
LABEL_0
: 부정 지수
LABEL_1
: 긍정 지수
label
은 LABEL_1
와 LABEL_0
이 있으며 이들의 합은 1
🥔 만들기
1. 뼈대 만들기
Step A. index.html
에서 뼈대 만들기
Q. <div id="sketch"></div>
는 왜 넣었나요?
A. p5.js가 돌아갈 스케치의 위치를 잡기 위해 만들었습니다.
Q. html 속 요소 마다 id를 붙인 이유가 궁금합니다.
A. JavaScript 사용할 때 특정 요소를 쉽게 찾아가고 조작해야 하는데, id 속성은 문서 전체에서 유일한 식별자를 제공하기 때문입니다.
2. JavaScript를 사용한 API 호출로 문장의 긍정/부정 판단
Step A. script.js
파일 생성 & index.html
에 import
Step B. 입력 버튼 눌렀을 때 콘솔에 호출하도록 꾸리기
document.getElementById(’textForm’)
: id
가 textForm
인 요소를 찾는다.
textForm.onsubmit
: textForm
이라는 폼 요소에 제출(submit) 이벤트가 발생했을 때 실행될 함수를 정의. 사용자가 폼을 제출하려고 할 때, 이 함수가 호출됩니다.
textInput.value
: 사용자가 입력한 값을 읽어올 때 사용하는 방법입니다.
event.preventDefault()
?
폼 제출 시, 웹 페이지가 새로고침 되거나 서버로 데이터가 전송되는 것을 방지하는 역할을 합니다.
Step C. Hugging Face Inference API를 호출한다. 그리고 호출 결과는 콘솔에 호출
🤔 async
? await
? → 쉬운 비동기를 위한 문법
🤔 try...catch
문: 코드 실행 중 발생할 수 있는 오류를 처리
- ∴ try 블록에서 코드를 실행 → 오류 가 발생하면 catch 블록에서 그 오류를 처리
🤔 throw
: 오류 위로(상위 함수로) 집어 던지기
🤔 Promise 객체 query의 .then()
/ .catch()
메소드?
.then()
: 비동기(e.g) async await
) 작업이 성공적으로 완료되었을 때 실행할 부분
- ∴
async
를 가지고 있거나 하는 Promise
타입이 함수 실행이 성공하면 실행하는 부분.
.catch()
: 비동기 작업이 실패 했을 때 실행하는 부분
3. 결과를 HTML에 표시한다. (JavaScript)
Stap A. 결과를 정제하는 함수 handleSentimentResponse()
구현
결과(response
)는 Array
로 되어있으며, label
로 구분되어 있다.
label
의 순서는 충분히 달라질 수 있기 때문에 LABEL_POSITIVE
(= LABEL_1
)인 것을 찾아 그 score
값을 positiveScore
라고 칭했다.
- 긍정(
LABEL_1
)과 부정(LABEL_0
)의 정도의 합은 1임을 이용해 negativeScore
를 계산
🥰 console.log()
디버깅용 출력이기 때문에 실제로 선보일 때는 지우시는 것이 좋습니다.
Step B. updateUI()
를 통해 HTML로 표시하기
- 입력한 단어와 함께
- 긍정인지 부정인지 표시
- 얼마나 정도가 심한지 표시
4. 긍정이면 잎이 자라고 배경이 초록색으로 바뀐다. 그리고 부정이면 잎이 줄어들고 배경이 분홍색으로 바뀐다. (p5.js)
Step A. 감자와 싹 그리기
⚠︎ 이미지 업로드 후 진행 부탁드립니다!
🤔 new p5(sketch)
Q. 왜 하나요?
- A. 다른 JS코드(script.js)에서 뒤에 구현한 함수를 호출하기 위해
Step B. 원하는 바를 이루기
🔥 Appendix. 다이나믹하게 즐기기
A. 크기의 변화시키는 변수를 늘리기
B. 배경 색을 바꾸기
C. 감자가 아닌 다른 요소를?
🥳 마치며
- 이번 글에서는 p5.js와 Hugging Face Inference API를 이용해 감자 키우기 게임을 만들어보았다.
- 감자가 싹이나면 배경색이 바뀌고, 긍정적인 단어를 입력하면 싹이 자라고 부정적인 단어를 입력하면 싹이 줄어드는 것을 확인할 수 있다.
- 이를 통해, Hugging Face Inference API를 이용해 긍정/부정을 판단하고, 그 결과를 p5.js로 시각화하는 방법을 배웠다.
- Hugging Face Inference API를 이용하면, 감자 키우기 게임 외에도 다양한 프로젝트를 할 수 있을 것이다!!!!!!!!
만들다 생각난건데 감자에 싹이나면 독성을 띄는 감자가 될텐데 이러면 뭔가 이상하다🤔