일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬
- 머신러닝
- 파이썬웹개발
- 딥러닝
- 파이토치기본
- sklearn
- 사이킷런
- 판다스
- fastapi #python웹개발
- langchain
- fastapi #파이썬웹개발
- fastapi
- deeplearning
- 판다스 데이터정렬
- 챗gpt
- OpenAIAPI
- NLP
- Python
- 랭체인
- 파이토치
- konlpy
- programmablesearchengine
- 비지도학습
- python 정렬
- 자연어분석
- pandas
- MachineLearning
- HTML
- pytorch
- chatGPT
- Today
- Total
Data Navigator
LangChain 의 개념과 주요 기능, 간단한 예제 본문
LangChain 의 개념과 주요 기능, 간단한 예제
LangChain은 언어 모델(Large Language Models, LLM)을 활용하여 애플리케이션을 만들기 위한 프레임워크이다. 언어 모델을 다양한 작업에 쉽게 연결하고 응용할 수 있도록 여러 구성 요소를 제공하여, 언어 모델 기반 애플리케이션을 간편하게 개발할 수 있게 한다. 특히 복잡한 멀티스텝 질의, 정보 검색, 체인 기반 워크플로우 구축에 유용해 대화형 AI 및 자동화된 데이터 처리 작업을 쉽게 구현할 수 있다.
1. LangChain의 주요 기능
- 체인(Chains): LangChain은 언어 모델을 기반으로 다양한 단계의 체인을 설정할 수 있게 한다. 예를 들어, 사용자의 질문을 받고 관련 문서를 검색한 후, 답변을 생성하는 일련의 단계를 체인으로 묶어 자동화할 수 있다. 이 체인은 단일 또는 멀티스텝으로 구성할 수 있다.
- 프롬프트 관리(Prompt Management): 효과적인 언어 모델 애플리케이션을 구축하기 위해서는 다양한 프롬프트를 관리하고 최적화해야 한다. LangChain은 프롬프트 템플릿을 제공하여 특정 작업에 맞는 프롬프트를 정의하고 재사용할 수 있게 한다.
- 메모리(Memory): LangChain은 대화형 애플리케이션에서 이전 대화 내용을 기억할 수 있도록 메모리 기능을 제공한다. 이를 통해 대화의 맥락을 유지하여 사용자와의 상호작용에서 일관성을 높일 수 있다.
- 에이전트(Agents): LangChain은 언어 모델을 다양한 도구와 연결하여 복잡한 작업을 수행할 수 있는 에이전트 기능을 제공한다. 에이전트는 언어 모델이 직접 답변을 생성하지 않고도, 외부 API나 데이터베이스와 통신하여 필요한 정보를 가져오게 한다.
- 데이터 연결(Data Connectors): LangChain은 데이터베이스, 웹 크롤러, 벡터 데이터베이스 등 다양한 데이터 소스와 쉽게 통합할 수 있다. 이를 통해 언어 모델이 대규모 데이터베이스에 접근하여 필요한 정보를 검색하고, 결과를 응답에 포함할 수 있게 한다.
2. LangChain의 주요 사용 사례
- 대화형 챗봇: 사용자의 입력을 이해하고 그에 맞는 정보를 검색하여 답변을 제공하는 지능형 챗봇을 구축할 수 있다. 예를 들어, 고객 지원, 지식 검색, FAQ 응답 시스템 등에 활용된다.
- 문서 요약 및 질의응답: 방대한 문서를 요약하거나, 문서 내 특정 질문에 대한 답변을 자동으로 생성할 수 있다. 이를 통해 정보 검색 시간을 단축하고, 더 나은 검색 경험을 제공할 수 있다.
- 멀티스텝 워크플로우 자동화: LangChain의 체인 기능을 통해 다단계 프로세스를 자동화할 수 있다. 예를 들어, 고객의 질문을 이해한 뒤 관련 정보를 검색하고 답변을 구성하는 워크플로우를 자동으로 실행할 수 있다.
- 외부 API와의 연동: LangChain의 에이전트 기능을 통해 언어 모델이 외부 API와 상호작용할 수 있게 하여, 언어 모델이 더 많은 작업을 수행하도록 확장할 수 있다.
3. 간단한 예제 코드
LangChain을 사용하여 간단한 체인을 만드는 예제이다. 이 예제에서는 LangChain을 사용해 사용자의 질문에 따라 답변을 생성하고, 메모리를 사용해 대화의 맥락을 유지한다.
아래의 코드를 실행하기 위해서는 langchain, langchain_community, langchain_community 라이브러리를 설치해야 하고 OpenAI의 API key가 있어야 한다.
OpenAI의 API key 발급은 이전글을 참고하자.
https://datanavigator.tistory.com/91
1) langchain 설치
!pip install langchain langchain_community langchain_openai
2) langchain을 이용한 간단 예제
import os
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
# OpenAI API 키 설정
api_key = os.getenv("OPENAI_API_KEY") # 환경 변수에서 API 키 가져오기
# ChatGPT API 설정
chat_model = ChatOpenAI(temperature=0, openai_api_key=api_key)
# 메모리 설정: 대화 내용을 기억함
memory = ConversationBufferMemory()
# 대화 체인 생성
conversation = ConversationChain(
llm=chat_model,
memory=memory,
# verbose=True # 대화 로그를 출력하도록 설정 (디버깅 목적)
)
# 대화 시작
user_input = "오늘 날씨가 어때?"
response = conversation.invoke({"input": user_input}) # `run` 대신 `invoke` 사용, 딕셔너리 형식으로 전달
print("Assistant:", response["response"]) # `response` 키를 통해 출력
# 대화 유지
user_input = "내일 날씨도 알려줘"
response = conversation.invoke({"input": user_input})
print("Assistant:", response["response"])
이 코드는 LangChain 라이브러리를 사용하여 OpenAI의 ChatGPT 모델과 대화를 나눌 수 있는 간단한 대화 체인을 설정하고 사용하는 예제이다. OpenAI API 키를 환경 변수에서 가져와 ChatGPT와 연결하고, 사용자의 입력을 기억하여 연속된 대화를 할 수 있도록 구성한다.
3) 코드 설명
(1) OpenAI API 키 설정
OpenAI API 키를 환경 변수에서 가져와 api_key 변수에 저장한다. 이 API 키는 OpenAI와 통신할 때 필요하다.
api_key = os.getenv("OPENAI_API_KEY") # 환경 변수에서 API 키 가져오기
(2) ChatGPT 모델 설정
ChatOpenAI 클래스를 사용하여 ChatGPT 모델을 설정한다. temperature=0은 모델의 출력 다양성을 낮추어 결정적인 답변을 유도한다. openai_api_key 인자에 API 키를 전달하여 OpenAI와 연결한다.
chat_model = ChatOpenAI(temperature=0, openai_api_key=api_key)
(3) 메모리 설정
ConversationBufferMemory를 사용하여 메모리를 설정한다. 이 메모리는 대화 내역을 저장하며, 이전 대화의 맥락을 기억하여 연속적인 대화를 지원한다.
memory = ConversationBufferMemory()
(4) 대화 체인 생성
ConversationChain을 생성하여 대화 체인을 설정한다. llm 인자로 chat_model을, memory 인자로 ConversationBufferMemory 객체를 전달하여 대화 내역을 유지할 수 있게 한다. verbose=True는 주석 처리되어 있지만, 필요한 경우 활성화하여 대화 로그를 출력할 수 있다.
conversation = ConversationChain( llm=chat_model, memory=memory)
(5) 대화 시작
첫 번째 대화를 시작한다. user_input 변수에 사용자의 질문을 설정하고, conversation.invoke() 메서드를 사용하여 답변을 생성한다. invoke 메서드는 입력을 딕셔너리 형식으로 받고, 출력도 딕셔너리로 반환한다. response["response"]로 AI의 답변을 출력한다.
# 대화 시작
user_input = "오늘 날씨가 어때?"
response = conversation.invoke({"input": user_input}) # `run` 대신 `invoke` 사용, 딕셔너리 형식으로 전달
print("Assistant:", response["response"]) # `response` 키를 통해 출력
(6) 대화 유지
이전 대화의 맥락을 유지한 채 새로운 질문을 던진다. invoke() 메서드를 통해 답변을 생성하며, 연속적인 대화를 유지한다.
# 대화 유지
user_input = "내일 날씨도 알려줘"
response = conversation.invoke({"input": user_input})
print("Assistant:", response["response"])
'Python' 카테고리의 다른 글
Langchain, OpenAI API, Programmable Search Engine로 검색어 기반 자동 기사 작성 프로그램 만들기02 (1) | 2024.11.13 |
---|---|
Langchain, OpenAI API, Programmable Search Engine로 검색어 기반 자동 기사 작성 프로그램 만들기01 (0) | 2024.11.13 |
음성인식 모델 Whisper 에 대한 개념과 기본 사용법 (0) | 2024.11.13 |
FAISS VectorDB와 gradio를 이용한 rag GPT 구현 (4) | 2024.11.12 |
RAG(Retrieval Augmented Generation) 기반 GPT 챗봇 만들기 (4) | 2024.11.12 |