TIL

👀Today I LearnPermalink

LangChain이란?Permalink

  • LangChain은 대형 언어 모델(LLM)과의 상호작용을 더욱 편리하게 만들어주는 라이브러리
  • 이를 활용하면 프롬프트 엔지니어링을 단순화하고, 여러 단계를 거치는 체인을 쉽게 구성할 수 있움
  • LangChain은 특히 프롬프트 템플릿, 체인, 메모리, 툴 등 다양한 기능을 제공하여 LLM을 효율적으로 활용할 수 있도록 도와줌


패키지 설치 및 API 설정Permalink

  • LangChain을 사용하기 위해 필요한 패키지를 설치

      !pip install langchain-openai
      !pip install tiktoken
    
  • 이후, OpenAI API 키를 환경 변수에 설정

      import os
      import getpass
      os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
    
  • 위 코드를 실행하면 API 키를 입력할 수 있는 창이 나타나며, 키를 입력하면 환경 변수에 저장함


기본적인 LLM 체인 구성Permalink

  • LangChain의 핵심은 체인(Chain)
    • 가장 기본적인 체인은 프롬프트와 LLM을 연결하는 과정으로 구성

      from langchain_openai import ChatOpenAI
      
      # 모델 생성
      model = ChatOpenAI(model="gpt-4o-mini")
      
      # 프롬프트 입력
      prompt = "말티즈들의 고향은 어디야?"
      
      # 체인 실행
      answer = model.invoke(prompt)
      print(answer)
      
    • 실행 결과 예시

      말티즈(Maltese)는 지중해의 마르타(Malta) 섬에서 유래한 품종입니다. ...
      

LangChain의 주요 개념Permalink

  • LLM: 언어 모델을 사용하여 응답을 생성하는 기본 클래스
  • invoke(): LLM에 입력값을 전달하고 결과를 반환하는 함수
  • chain: 여러 개의 프롬프트를 연결하여 복잡한 워크플로우를 구성하는 개념


PromptTemplate 활용하기Permalink

  • 체인에서 프롬프트를 동적으로 구성하려면 PromptTemplate을 사용할 수 있음

      from langchain_core.prompts import PromptTemplate
    
      # 프롬프트 템플릿 정의
      prompt_template = PromptTemplate.from_template("{dog_breed}의 특징을 알려줘.")
    
      # 프롬프트 생성
      prompt = prompt_template.format(dog_breed="시베리안 허스키")
    
      # 모델 실행
      answer = model.invoke(prompt)
      print(answer)
    
    • 위 코드를 실행하면 시베리안 허스키의 특징을 반환하는 모델의 응답을 받을 수 있음

PromptTemplate의 장점Permalink

  • 동적인 프롬프트 구성 가능
  • 여러 변수를 활용하여 다양한 응답 생성
  • 반복적인 프롬프트 패턴을 효율적으로 관리


LLMChain을 활용한 체인 구성Permalink

  • LangChain에서는 LLMChain을 활용하여 보다 체계적인 체인을 구성할 수 있음

      from langchain_core.chains import LLMChain
    
      # LLMChain 생성
      chain = LLMChain(llm=model, prompt=prompt_template)
    
      # 체인 실행
      answer = chain.invoke({"dog_breed": "골든 리트리버"})
      print(answer)
    
    • 위 코드에서는 골든 리트리버를 입력값으로 전달하여, 해당 견종의 특징을 반환

LLMChain의 활용 사례Permalink

  • 자동화된 문서 요약 생성
  • 질문 응답 시스템 구축
  • 다단계 프로세스의 자동화


LLM 체인의 확장: Memory와 AgentPermalink

  • LangChain은 체인 실행 중에 상태를 유지할 수 있는 Memory와, 다양한 도구와 상호작용하는 Agent 기능을 지원

Memory 활용Permalink

  • Memory를 사용하면 LLM이 이전 대화의 문맥을 유지할 수 있음

      from langchain_core.memory import ConversationBufferMemory
    
      memory = ConversationBufferMemory()
      chain = LLMChain(llm=model, prompt=prompt_template, memory=memory)
    

Agent 활용Permalink

  • Agent는 LLM이 다양한 API나 도구와 상호작용할 수 있도록 도와줌
  • Agent를 사용하면 LLM이 OpenAI API뿐만 아니라, 검색 엔진, 데이터베이스 등 다양한 외부 리소스를 활용할 수 있음

      from langchain_core.agents import Agent
    
      agent = Agent(llm=model)
      response = agent.run("현재 날씨는 어떠한가?")
      print(response)
    



💡Today I ThoughtPermalink

오늘의 체크리스트Permalink

  • 알고리즘 코드카타 398
  • SQL 코드카타 118
  • Streamlit 로그인/회원가입 구현
  • Streamlit Chatbot UI 구현 ➡️ 계속 도전하다가 챗봇이 일단 구현되어야 될 거 같아서 패스!
  • TIL 작성

회고Permalink

 오늘 Streamlit 로그인/로그아웃/회원가입 기능을 구현하고, Chatbot UI도 만들려고 했는데 Chatbot 코드가 아직 완성본이 아니라서 일단 킵해뒀다. 그래서 시간 남은 김에 저번에 학습반에서 했던 Langchain을 복습했다. 꾸준히 복습해야지ㅎㅎ

댓글남기기