[TIL] 내일배움캠프 84일차_[LLM] LangChain을 활용한 LLM 체인 구성하기
👀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을 복습했다. 꾸준히 복습해야지ㅎㅎ
댓글남기기