[8기 랭체인방] AI 영어 선생님 Clone Coding & New IDEA!

이번 포스팅에선 1주차 과제였던 Clone coding을 하면서 공부한 내용들과 제가 구현해보고 싶은 아이디어를 간단하게 소개 하도록 하겠습니다.

Clone Coding


허세임님의 #[7기 랭체인] Click 한번으로 영어학습자료 만들기 를 streamlit을 사용하지 않고 txt 파일로 아웃풋을 저장해가면서 코딩을 해보았습니다.

개인 공부

먼저 랭체인이 뭔지 감을 익히기 위해서 아래 링크들을 쭉 보면서 학습을 했습니다.

환경 설정

LangChain, OpneAI 코딩을 위한 환경을 설정 했습니다.

  • OpenAI API key 생성

  • OpenAI API credit 카드 등록

아래 링크를 참고해서 매번 API를 등록하는 수고를 덜기 위해서 로컬에 키를 등록했습니다.

OpenAI Developer quickstart

python 환경 설정

conda create -n LC python=3.10 -y
conda activate LC

pip install langchain youtube-transcript-api
pip install --upgrade openai

Results

세임님의 프로젝트의 전체적인 flow는 3단계로 진행되었고 제가 얻은 결과물들 입니다.

  1. 유튜브 링크에서 스크립트 뽑기

  2. gpt 모델 기반 chain 형성

  3. chain으로 영어 예문 사전 만들기

요금? 시간?

추가로 저는 처음 OpenAI의 API를 사용해 보았기 때문에

토큰을 얼마나 사용하면 과금이 어느정도 되는지 알아보고 싶었습니다.

(과금은 언제나 조심해야 하니까요 ㅎㅎ)

Youtube script 길이 13066
Tokens Used: 4278
Prompt Tokens: 3308
Completion Tokens: 970
Successful Requests: 2
GPT 3.5 Total Cost (USD): $0.006902 Time (s): 107.51
GPT 4   Total Cost (USD): $0.16557  Time (s): 45.54

확실히 GPT 4는 가격이 비싸네요 ㅠㅠ

IDEA


저는 제가 실행했던 “AI 영어 선생님”을 발전시켜 “AI 한국어 선생님”을 만들어보려고 합니다.

ChatGPT도 업그레이드 되면서 한국어 성능이 좋아졌지만, 한국어 데이터를 사용할 것이기 때문에 huggingface에 올라온 한국어 언어모델을 사용해서 프로젝트를 완성해 보려고 합니다.

따라서 LangChain huggingface library로 한국어 언어모델을 불러오는 과정까지 시행해 보았습니다.

Hugging Face Local Pipelines

from langchain.llms.huggingface_pipeline import HuggingFacePipeline
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
from langchain.prompts import PromptTemplate
import time
import warnings
warnings.filterwarnings('ignore')

model_id = "beomi/KoAlpaca-Polyglot-5.8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=100)
hf = HuggingFacePipeline(pipeline=pipe)

template = """질문: {question}

응답: 단계별로 생각해 봅시다."""
prompt = PromptTemplate.from_template(template)

chain = prompt | hf

question = "뇌파검사가 뭔가요?"

start_time = time.time()
print(chain.invoke({"question": question}))
print(f'\n모델명 {model_id} 전체 걸린 시간', time.time()-start_time)

Alpaca 모델을 fine-tuning한 KoAlpaca를 사용했고 아래는 결과 입니다.

뇌파는 우리 몸의 내부에서 발생하
전체 걸린 시간 299.96(s)

10개의 token의 결과를 보는데 5분이 걸렸고 100개의 token 결과를 얻으려 했지만 20분이 넘도록 결과가 나오지 않아서 중단했습니다.

아무래도 huggingface는 로컬(제 컴퓨터)에서 모델을 돌리다 보니까 요금은 나오지 않지만 컴퓨터 자원과 시간에 한계가 있네요. 다음번엔 클라우드 기반 한국어 모델 API를 찾아보거나 GPU를 사용할 수 있는 Colab 등을 이용해 보아야 할 것 같습니다. (또 다른 무료 혹은 적당한 가격의 GPU 사용 방법이 있으면 추천 부탁드립니다 🥺)

PS. Notion에 먼저 정리하고 글을 옮기는데 사진을 제외하곤 대부분 복붙으로 해결되어서 굉장히 편하네요!



4
3개의 답글

👉 이 게시글도 읽어보세요