[9기 랭체인] LangChain 과제 수행 내역 (미완)

[이력]

  • 2024.02.06: 2월 5일 발표한 사례 내용만 업로드 (과제 1~2)

[TODO]

  • Agent 과제 진행

  • 이후 새로운 post에 프로젝트 계획 후 업로드 예정

[Lesson Learned]


0. 초기 세팅 (익숙한 파이썬 3.8로 수행)

  • conda create -n py38_langchain python=3.8

  • pip install langchain, openai

  • Open AI 사이트에서 (1) 결제 정보 입력 후 (2) API key를 생성

    • 나의 경우 API key 생성 후 결제정보 입력하니 billing 문제로 제대로 실행 되지 않았었음..

1. Model I/O

1) 개발자 식 농담 주고 받기

  • ChatGPT에게 물어보았으나 현재 LangChain 버전과는 맞지 않는 코드를 출력해줌

    • 문제 1: text-davinci-003 모델 사용 불가

    • 문제 2: generate() 함수 부재

  • 문제를 해결해서 개발자 농담 10개를 얻어보았음 (스크린샷은 짤림)


2) 프롬프트 템플릿으로 농담 요청해보기

  • 중괄호를 활용해 {키워드} 를 결정하고, 해당 키워드에 내가 원하는 토픽을 넣는 방식으로 요청해 봄

    • 파트너님 코멘트: PromptTemplate 클래스에 더 많은 기능이 있으니 클래스를 활용해보세요 » 다음 사례에서…


3) OutputParser로 과일을 리스트로 받고 저장하기

  • 내가 기대했던 OutputParser의 기능이 아니었다

    • 파트너님: LangChain Doc을 보고 다시 해보세요 » 다음 사례에서..

(1) 그냥 요청해보기

(2) OutputParser에 instruction format 사용해보기


4) 5개의 과일 이름을 배열로 요청하고 색상 물어보기

  • 참고 자료에 있는 예시 코드를 그대로 활용해봄 (아래는 활용 예시 코드)

  • 여태한 내용들을 통합하고 변형한 결과

    • 파트너님 의견: LCEL은 개념이고, 적용한 코드는 Chain을 활용한 것임. Doc을 보고 공부해보세요.. » 다음 사례…


2. Retrieval

0) 초기 세팅

  • pip install pypdf

    • langchain이 pdf 읽고 처리하는데 필요한 패키지

  • 대상 PDF (19쪽 짜리 ChatGPT에서의 Prompt pattern 카탈로그 정리 논문)

1) PDF 내 텍스트 가져오기

2) 텍스트를 chunk로 분할하기

  • 여러 Splitter 중에서 Recursive Character Text Splitter를 사용했음

    • 해당 분할기가 의미적으로 덜 누락되며 문서를 분할하는 것 같음


3) FAISS로 저장하고 유사도 검색 해보기

  • FAISS는 모델 내 벡터 임베딩을 바탕으로 유사성을 검색하기 위한 도구

  • FAISS를 사용해보려면 아래 세팅이 필요했음

    • pip install langchain-openai, faiss-cpu

      • 고차원 벡터 연산이 필요하기 때문에 faiss-gpu가 더 빠를 것 같으나… 현재 pc에는 gpu가 없어서 그냥 cpu로 해봄 » 그래서 그런지 약간 느렸음

#9기랭체인

3
1개의 답글

👉 이 게시글도 읽어보세요

모집 중인 AI 스터디