안녕하세요! LLM(Large Language Models)로 작업하는 강의에 오신 것을 환영합니다. 이 강의에서는 LangChain 라이브러리를 사용하여 대형 언어 모델과 상호 작용하는 방법을 배우게 됩니다.
LangChain은 대형 언어 모델(LLM)과 쉽게 상호 작용할 수 있도록 도와주는 파이썬 라이브러리입니다. 이 라이브러리를 사용하면 다양한 LLM 서비스에 연결하여 텍스트 생성, 대화형 AI, 데이터 처리 등을 수행할 수 있습니다.
LLM은 크게 두 가지로 나뉩니다:
LangChain은 다양한 LLM 서비스와 통합되어 있습니다. 주요 서비스로는:
이 강의에서는 OpenAI의 API를 사용하여 예제를 진행하겠습니다. 그러나 LangChain의 장점은 다른 서비스로 쉽게 전환할 수 있다는 것입니다. 필요한 경우 임포트(import) 구문만 변경하면 됩니다.
주피터 노트북 내에서 특정 환경 변수만 설정하고 싶다면, Python의 os
모듈을 사용하면 됩니다. 이렇게 설정된 변수는 주피터 노트북이 실행되는 동안에만 유효합니다.
import os
# 환경 변수 설정
os.environ['MY_VAR'] = 'my_value'
# 확인
print(os.getenv('MY_VAR'))
이 방법은 주피터 노트북에서만 환경 변수를 적용하고 싶을 때 유용합니다. 주피터 노트북을 닫으면 해당 환경 변수는 삭제됩니다【6†source】【7†source】.
.env
파일 사용하기.env
파일을 만들어 환경 변수를 관리할 수 있습니다. 이를 위해서는 python-dotenv
패키지를 설치해야 합니다.
pip install python-dotenv
설치 후, .env
파일에 환경 변수를 추가하고 노트북에서 이를 불러옵니다:
# .env 파일 내용
MY_VAR=my_value
주피터 노트북에서 .env
파일을 불러오려면 다음 명령어를 사용합니다:
%load_ext dotenv
%dotenv
이후, os.getenv()
를 사용해 해당 변수를 호출할 수 있습니다【7†source】【10†source】.
이 두 가지 방법을 통해, 주피터 노트북에서 환경 변수를 설정하고 사용할 수 있습니다. 필요에 따라 코드 내에서 바로 설정하거나, .env
파일을 사용하여 관리할 수 있습니다.
Visual Studio Code(VSCode)에서 OpenAI API 키를 .env
파일에 저장하고 파이썬 코드에서 불러오는 방법을 안내해드리겠습니다.
.env
파일 생성 및 API 키 저장프로젝트의 루트 디렉토리에 .env
파일을 생성하고 다음과 같이 API 키를 저장합니다:
OPENAI_API_KEY=your_api_key_here
주의:
your_api_key_here
부분에 실제 OpenAI API 키를 입력하세요.
python3 -m venv venv
venv
모듈을 사용하여 새로운 가상 환경을 생성합니다.venv
라는 이름의 폴더가 생성되며, 이 폴더에는 가상 환경을 위한 필요한 Python 실행 파일과 라이브러리들이 포함됩니다.source venv/bin/activate
venv/bin/activate
스크립트를 실행하여 현재 셸 세션에서 Python 명령어와 패키지들이 가상 환경을 참조하도록 설정합니다.(venv)
와 같이 가상 환경 이름이 표시되어 활성화 상태임을 나타냅니다.source venv/bin/deactivate
deactivate
스크립트를 실행하여 셸 세션을 원래 상태로 복원합니다.deactivate
명령어만 입력하면 됩니다.추가 정보:
venv
모듈: Python 3에서 기본 제공하는 가상 환경 생성 모듈로, 외부 패키지 설치 없이 사용할 수 있습니다.이렇게 하면 프로젝트 간에 패키지 버전 충돌을 방지하고, 보다 일관된 개발 환경을 유지할 수 있습니다.
python-dotenv
패키지 설치파이썬에서 .env
파일의 환경 변수를 불러오기 위해 python-dotenv
패키지를 설치합니다.
pip install python-dotenv
파이썬 스크립트에서 .env
파일을 로드하고, os.getenv()
를 사용하여 환경 변수를 가져옵니다.
from dotenv import load_dotenv
import os
import openai # OpenAI 패키지가 설치되어 있어야 합니다.
# .env 파일 로드
load_dotenv()
# .env 파일에서 API 키 로드
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
# API 키가 제대로 로드되었는지 확인
if openai_api_key is None:
raise ValueError("OPENAI_API_KEY가 .env 파일에 설정되지 않았습니다.")
.gitignore
에 .env
파일 추가 (Git 사용 시).env
파일이 버전 관리 시스템에 포함되지 않도록 .gitignore
파일에 추가합니다.
# .gitignore 파일에 추가
.env
pip install openai
.env
파일에 저장하여 보안을 유지합니다.python-dotenv
의 load_dotenv()
함수를 사용하여 .env
파일의 내용을 환경 변수로 로드합니다.os.getenv()
로 환경 변수를 가져와 OpenAI API 키로 설정합니다.이렇게 설정하면 VSCode에서 안전하게 OpenAI API 키를 관리하고 파이썬 코드에서 사용할 수 있습니다.
OpenAI의 API를 사용하기 위해서는 API 키를 생성하고 환경 변수에 설정해야 합니다.
OpenAI 계정 생성 및 API 키 발급
API 키 환경 변수에 설정하기
파이썬 코드나 시스템 환경 변수에 API 키를 설정할 수 있습니다.
시스템 환경 변수 설정 (추천)
export OPENAI_API_KEY='your-api-key-here'
OPENAI_API_KEY
를 설정합니다.파이썬 코드에서 설정
import os
os.environ['OPENAI_API_KEY'] = 'your-api-key-here'
이제 LangChain을 사용하여 OpenAI의 LLM과 상호 작용해보겠습니다.
pip install langchain openai
pip install langchain_community
from dotenv import load_dotenv
import os
# .env 파일 로드
load_dotenv()
# .env 파일에서 API 키 로드
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
# API 키가 제대로 로드되었는지 확인
if openai_api_key is None:
raise ValueError("OPENAI_API_KEY가 .env 파일에 설정되지 않았습니다.")
from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage, HumanMessage, SystemMessage
# 채팅 모델 인스턴스 생성
chat = ChatOpenAI(model_name='gpt-4o')
# 사용자 메시지
human_message = HumanMessage(content="Python에서 리스트를 정렬하는 방법을 알려줘.")
# 메시지 리스트 생성
messages = [human_message]
# 응답 생성
response = chat(messages)
print(response.content)
# 여러 프롬프트 리스트
prompts = ([
"명왕성에 대한 재미있는 사실을 알려줘.",
"화성에 대한 흥미로운 사실을 알려줘."
])
# 각 프롬프트에 대해 응답 생성
for prompt in prompts:
response = llm(prompt)
print(f"질문: {prompt}\n답변: {response}\n")
OpenAI의 GPT-3.5 및 GPT-4 모델은 채팅 형식으로 상호 작용합니다.
from dotenv import load_dotenv
import os
# .env 파일 로드
load_dotenv()
# .env 파일에서 API 키 로드
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
# API 키가 제대로 로드되었는지 확인
if openai_api_key is None:
raise ValueError("OPENAI_API_KEY가 .env 파일에 설정되지 않았습니다.")
from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage, HumanMessage, SystemMessage
# 채팅 모델 인스턴스 생성
chat = ChatOpenAI(model_name='gpt-3.5-turbo')
# 시스템 메시지로 AI의 역할 설정 (선택 사항)
system_message = SystemMessage(content="당신은 친절한 도우미입니다.")
# 사용자 메시지
human_message = HumanMessage(content="Python에서 리스트를 정렬하는 방법을 알려줘.")
# 메시지 리스트 생성
messages = [system_message, human_message]
# 응답 생성
response = chat(messages)
print(response.content)
출력 예시:
Python에서 리스트를 정렬하려면 `sort()` 메서드를 사용할 수 있습니다. 예를 들어:
```python
my_list = [5, 2, 9, 1]
my_list.sort()
print(my_list) # 출력: [1, 2, 5, 9]
또는 내림차순으로 정렬하려면 sort(reverse=True)
를 사용합니다.
#### **2. 대화 이어나가기**
```python
# 이전 메시지들
messages.append(response)
# 새로운 사용자 메시지 추가
messages.append(HumanMessage(content="내림차순 정렬은 어떻게 하나요?"))
# 응답 생성
response = chat(messages)
print(response.content)
출력 예시:
내림차순으로 리스트를 정렬하려면 `sort()` 메서드에 `reverse=True` 매개변수를 전달하면 됩니다. 예:
```python
my_list = [5, 2, 9, 1]
my_list.sort(reverse=True)
print(my_list) # 출력: [9, 5, 2, 1]
이렇게 하면 리스트가 큰 값부터 작은 값 순으로 정렬됩니다.
---
### **다른 서비스로 전환하기**
LangChain을 사용하면 다른 LLM 서비스로 쉽게 전환할 수 있습니다. 예를 들어, Hugging Face의 모델을 사용하려면:
#### **1. Hugging Face Hub 설치**
```bash
pip install huggingface_hub
from langchain import HuggingFaceHub
# Hugging Face Hub 토큰 설정
import os
os.environ['HUGGINGFACEHUB_API_TOKEN'] = 'your-huggingface-api-token'
# Hugging Face 모델 인스턴스 생성
llm = HuggingFaceHub(repo_id="gpt2") # 원하는 모델로 변경 가능
# 프롬프트에 대한 응답 생성
prompt = "자연어 처리가 무엇인가요?"
response = llm(prompt)
print(response)
이 강의에서는 LangChain을 사용하여 OpenAI의 LLM과 상호 작용하는 방법을 배웠습니다. LangChain은 다양한 LLM 서비스와 통합되어 있어, 코드의 작은 변경만으로도 다른 모델로 전환할 수 있습니다.
앞으로의 강의에서는 더 복잡한 예제와 LangChain의 고급 기능을 탐구할 것입니다. 특히 프롬프트 템플릿과 체인을 사용하여 여러 작업을 연결하는 방법을 배울 것입니다.
다음 강의에서 뵙겠습니다!
추가 참고 자료