Wainbox 내용으로 Llama-Index Local RAG을 이용하여 학습교안 만들기 실패담

지난 주에 이어 궁극적으로 하려고 하는 프로젝트를 이어가기로 했습니다. Wainbox내에는 Gutenberg project 등 pdf로 된 도서가 엄청나게 많아서 이걸 이용하여 영어교육을 할 수 있도록 선생님들이 학습교안을 만들기 편하게 생성형AI를 활용하자는 생각이지요.

영어를 처음 배우는 아이에게 좋은 다양한 책들이 많이 있는데 그 중 하나를 골라 다운로드하게 하고 RAG를 이용해서 학습자료 만드는 것을 돕도록 하려는 겁니다.

그 중의 하나를 일단 시험삼아 골랐습니다.

아이들을 위한 그림책이어서 글을 많지 않습니다. 어쨋든 클로드에게 다음과 같은 프롬프트를 주었습니다.

그리고는 몇 번의 에러 수정을 거쳐서 다음과 같이 대화를 하는데 까지는 성공을 했는데…

뭐, 교안을 만들어 달라고 했더니 자기가 만들 수 있다고 동문서답을 하기는 했지만요.

클로드가 제안한대로 임베딩에는 허깅페이스를 사용하고 언어모델은 지피티3.5터보를 사용하는데... 이렇게 동문서답할 줄은 몰랐네요.

답은 한글을 할 수 있는 것 같기도 한데… 영어로만 하네요.

어쨋든 도서 URL을 선생님이 쉽게 입력하도록 해야겠고, 학습교안도 테이블로 예쁘게 그려서 출력할 수 있도록 하려고 인터페이스를 만들면 좋겠다는 생각을 하다가 gradio를 써봐야겠다고 결정하고 클로드에게 부탁했습니다.

그리고는 클로드가 열심히 도와주는대로 따라하면서 열심히 디버깅을 했는데…

골치아픈 문제가 생겼습니다. Gradio가 설치가 안되는 겁니다. 그래서 조심조심 어찌어찌 클로드가 시키는대로 따라했더니 gradio까지는 설치가 되고 의존성이 있는 여러 패키지를 하나하나 설치할 수 있게 되어서 성공하는가 했는데 …

그 다음에는 ffmpy라는 놈이 막무가내로 말썽을 부리는 겁니다. 클로드에게 물어봤더니 ffmpy는 Python에서 FFmpeg를 사용하기 위한 간단한 래퍼(wrapper) 라이브러리이고, FFmpeg는 비디오와 오디오를 처리하기 위한 강력한 멀티미디어 프레임워크라네요. ffmpy를 통해 Python 코드에서 FFmpeg의 기능을 쉽게 사용할 수 있는거라구요.

오늘 오후 내내 진짬을 흘리다가 결국 또 제출 시간 내에 해결하지 못해서 '실패담'이라고 제목을 적을 수 밖에 없었습니다.

개발이라는 것이 험난하네요… 이번 글도 일단 여기에서 마무리를 해야겠습니다. 해결책을 찾는대로 글을 업데이트하도록 하겠습니다.


아래와 같은 에러메시지가 도저히 해결되지 않아서 골치를 썪였는데…

한 밤중이 되어가면서 한 가지 생각이 떠올라 시도해 보기로 했습니다.

그러다가… 아... 드디어 해결이 되었습니다. 클로드와 챗지피티를 계속 괴롭히며 못살게 굴었더니 이런 신박한 해결책을 내놓은 겁니다. 혹시나 하는 마음으로 해봤더니… 되는거지 말입니다!

우와… 그리고 돌려봤더니 로컬 URL이 뜨는겁니다.

그래서 얼른 브라우저에 로컬 URL을 넣고 기다렸더니… 떡! 하니… 됩니다.

그래서 조심스럽게 Wainbox에 있는 책을 하나 선택해서 URL을 붙여넣고 질문을 하니…

답을 합니다.

요약도 해줍니다. 오…

그런데... Wainbox에 있는 책들의 형태가 다양하네요. Pdf도 있지만 text로 되어있기도 하고, html로 되어 있는 것도 있네요. 그렇게 에러가 나길래 이런 모든 형태의 책을 각각 인식해서 처리할 수 있도록 해달라고 클로드에게 부탁을 했더니 군말없이 그대로 해주네요. 이건 에러도 없이 단번에 되었습니다. 와… 놀랍네요. URL 위에 PDF, TXT, or HTML 이렇게 표시되어 있는 거 보이시나요?

드디어 마지막 관문이 남았습니다. 책을 입력하고 이 책의 내용으로 수업 커리큘럼을 만들어달라고 하면 만들어 줄까요?

오… 됩니다. 됩니다. 감동이네요...

이제 기본적인 골격이 만들어졌으니, 여기에 몇 가지 에이전트를 만들어 일을 시키는 것도 가능하겠지요? 그리고 입력도 요구사항을 보다 구체적으로, 예를 들면, 몇 학년, 한 학기 커리큘럼, 1주일 학습 내용, 1시간 학습 내용 등을 유저 프롬프트로 입력하게 하고 시스템 프롬프트가 이 입력들을 기반으로 학습내용을 만들도록 하면 훨씬 좋아질 것 같네요.

아, 그리고 모든 것을 로컬에서 하도록 하는 것도 해야 할 일이네요. 지금은 오픈AI임베딩을 사용하고 있으니 인터넷이 없으면 작동을 안할테니까요… 그 외에도 로컬에서는 작동하지 않게 될 부분이 있는지 살펴보면서 어떻게 오픈LLM이나 다른 방법으로 대체해야 성능이 유지되면서 로컬에서 작동하게 될지도 찾아봐야 되겠구요.

앞으로의 업그레이 내용이 기대가 됩니다. 클로드, 챗지피티와 잘 사귀어야겠어요. ^^

5
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 아침,
읽고 바로 써먹을 AI 소식만