잡담


개요

딱히 하나 주제 잡아서 글 쓸 내용이 별로 없어서, 이번엔 요새 뭐하고 있나 정리해 보았다.

LLM Prompt engineering

요약: 애니 자막 다운받는 프로그램을 하나 쓰고 있었는데, 몇몇 부분에서 수동으로 처리하고 있던 부분이 있었고, 이걸 OpenAI를 적용해서 자동화할 수 있겠다.

대충 [Ohys...로 시작하는 긴 제목의 mp4 파일이 있으면 [Ohys...로 시작하는 긴 제목의 smi 파일을 어디선가 찾아 다운로드 받는게 목표인데, 모든 자막 제작자의 블로그를 크롤링하는 것은 무리니까, 어느정도 수동으로 개입하고 있는 부분이 있었다. 대략의 파이프라인은 아래와 같다:

  1. 자막 제작자 블로그는 수동으로 입력한다고 가정
  2. 대개 블로그는 티스토리와 네이버 블로그니까, 그 두 블로그에서 첨부 파일을 다운로드 하는 코드를 구현
  3. 첨부 파일은 대개 zip 형식이니까, zip 파일을 열어보는 라이브러리를 사용
  4. smi나 ass파일을 찾아서 동영상과 연결해 줘야 하니까, python pimento 라이브러리를 이용해서 압축 파일 내 목표 파일과, 영상 파일을 선택해서 자동으로 이름 변경
  5. 마지막으로 파일 원본 인코딩을 인식해서 뭐가됐든 UTF-8로 변경

여기서 블로그 위치 입력을 자동화할 여지가 생긴 게, 대개 제작자들은 같은 영상의 자막들을 카테고리로 묶어주는데, 이 카테고리 표시 HTML 부분을 파싱해 낼 수 있으면 “대충 2023년 2분기 뭐라뭐라” 분류 내에서 다음 글을 찾아 자동으로 인식할 여지가 생긴다.

그리고 pimento로 수동 선택하고 있던 자막과 영상 매칭 부분도 대충 LLM 모델로 자동화 가능한 것이, 기존의 매칭 입력을 few-shot learning처럼 전달해주면 채신 동영상에 대해서도 비슷한 제안을 해줄 수 있겠다는 감이 온다. 대략 이런 식이다.

"니는 A:B 형식으로 질문에 대답하는 프로그램이야. 예전에 A0->B0, A1->B1로 대답한 적 있어. 지금 내가 A3이라는 입력을 받았는데 뭐라고 대답할래"
"B3"

Building GraphQL server

요새 채신 트렌드라고 할 수 있는 GraphQL을 개인 프로젝트에 적용해보고 있다.

서버는 Rust async-graphql을 써서 짠다: 다른 이유가 있는 것이 아니라, 내가 원하는 바를 타입 시스템으로 명확히 정의하고, 그걸 간결한 GraphQL 스키마로 변경해줄 수 있는 부분이 좋아보여서 일단 이걸로 도전.

  • JS, Python: 따로 타입이 없으니까 스키마를 정의할 때 따로 반환 타입을 지정해줘야 한다. Typescript를 쓰면 타입이 있지 않냐구? 따로 전처리 프로세싱을 하는게 아니라면 런타임에서 타입 정보를 알지 못하니까 마찬가지…

그리고 이걸 next.js로 짜고있는 FE에 적용하는 것이 목표.