생성형AI

Langchain 스터디

도그사운드 2025. 4. 11. 15:27

📚 LangChain 프로젝트 설정 강의 요약 (이든쌤)

✅ 1. 강의 목적

  • LangChain을 활용한 AI 애플리케이션 개발을 위해 프로젝트 환경을 통일하고,
  • 보일러플레이트 코드, 실행 환경, 디버깅 설정 등을 정리하는 과정

🧰 2. 주요 설정 단계

① Git 저장소 복제

  • 브랜치: 1-start-here
  • 명령어 예시:
  • bash
    복사편집
    git clone -b 1-start-here [저장소 URL]

② IDE 설정 (주로 PyCharm)

  • Python Interpreter → Pipenv 환경 선택
  • Pipenv로 가상 환경 생성 및 패키지 관리
  • 실행 환경 설정 (Edit Configurations → Runner 추가)

③ LangChain 패키지 설치

bash
복사편집
pip install langchain langchain-openai langchain-community langchainhub
  • langchain: 핵심 프레임워크
  • langchain-openai: OpenAI용 통합
  • langchain-community: 텍스트 분할기, 파서 등 커뮤니티 기여 코드
  • langchainhub: 프롬프트 공유 플랫폼

④ 포매터 설정

bash
복사편집
pipenv install black black .

🧪 3. 테스트용 기본 코드

python
복사편집
if __name__ == '__main__': print("Hello LangChain")
  • 러너 설정을 통해 icebreaker.py 스크립트 실행 확인

💡 4. LangChain 개념 간단 소개

  • LangChain이란?
    LLM을 기반으로 하는 애플리케이션을 쉽게 만들도록 도와주는 프레임워크
  • "Chain"의 개념:
    • LLM에 쿼리
    • 검색/추론/입력 재구성
    • 결과 출력
      → 이 일련의 단계를 체인으로 구성해 추상화
  • 리팩토링 이후 구조 분리 이유
    • 필요 없는 벤더 SDK를 줄이고
    • 각 벤더/커뮤니티가 독립적으로 유지관리 가능하도록 구조화됨

🏁 5. 설정 완료 후 기대 결과

  • 코드를 실행하고 디버깅할 수 있는 개발 환경 완성
  • 앞으로의 강의에서 LangChain을 활용한 고급 AI 기능 구현 가능

 

🔧 리팩토링(Refactoring)이란?

**"코드의 동작은 그대로 유지하면서, 코드를 더 좋게(읽기 쉽게, 관리하기 쉽게) 바꾸는 작업"**이에요.


🎯 예를 들어볼게요

🔴 리팩토링 전:

python
복사편집
def a(x): return x*1.08 if x<1000 else x*1.05
  • 한 줄로 되어 있고, 변수명도 의미가 없어서 읽기 어렵고 유지보수가 힘듦

🟢 리팩토링 후:

python
복사편집
def apply_tax(price): if price < 1000: return price * 1.08 else: return price * 1.05
  • 코드의 기능은 완전히 같지만
  • 훨씬 읽기 쉽고, 나중에 고치기 좋고, 팀원이 이해하기 쉬움

🔍 왜 리팩토링을 할까?

이유설명
✅ 유지보수 나중에 수정하거나 기능 추가할 때 편해요
✅ 협업 다른 개발자가 코드를 쉽게 이해할 수 있어요
✅ 확장성 새로운 기능을 붙이기 쉬워요
✅ 버그 줄이기 구조가 명확하면 실수가 줄어요

💡 리팩토링의 핵심

  • 결과는 똑같아야 해요 (기능은 그대로!)
  • 외부 동작을 바꾸지 않고 내부 구조만 바꾸는 것

LangChain도 마찬가지예요.
초기엔 기능이 다 한데 몰려 있었는데,
지금은 langchain, langchain-openai, langchain-community처럼 나뉘어 있죠?

👉 그게 바로 리팩토링 덕분이에요.

'생성형AI' 카테고리의 다른 글

Github와 동기화  (0) 2025.02.07
Langchain의 모델  (0) 2024.12.30
SciBERT  (2) 2024.10.08
ControlNet  (0) 2023.12.12
Stable Diffusion-인터페이스, Github extension, ControlNet  (0) 2023.10.30