LLM Day 2 - 환경설정

Soyee Sung·2025년 1월 22일
0

LLM

목록 보기
1/34
post-thumbnail

환경설정

  • Poetry
  • VS code (jupyter, python)
curl -sSL https://install.python-poetry.org | python3 - #Poetry 최신 버전 설치

python3 --version
poetry --version

Python 패키지(예: maturin, jiter)는 Rust 기반으로 작성되어 있으며, 이를 소스에서 빌드하려면 Rust 컴파일러가 필요

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env #설치 후, 환경 변수를 적용
rustc --version

Poetry 사용을 위해 기존 anaconda 비활성화 필요
안하면 base 가 anaconda로 계속 잡힌다

conda config --set auto_activate_base false

#Restart your terminal
conda deactivate

#Ctrl + O
#Ctrl + X  nano 저장 후 닫기
source ~/.zshrc #변경 사항 적용

ARM 아키텍처와 x86_64 아키텍처 간의 호환성 문제로 가상 환경 수동 활성화가 필요하다
(M1 Mac에서 발생하는 주요 문제는 x86_64와 ARM64 아키텍처 간의 충돌 때문이다..Homebrew와 Python 설치가 ARM64로 되어 있는지 확인하는 것이 중요함)

brew install python@3.10 #설치
brew list | grep python #설치확인
brew info python@3.10 #경로확인

프로젝트 디렉터리를 생성하고 이동 또는 원래 있던 프로젝트로 가자

mkdir langchain_project4 && cd langchain_project4
cd /Users/xx/langchain_project3

Poetry 프로젝트 초기화

poetry init #새 프로젝트를 초기화하여 pyproject.toml 파일을 생성

Poetry - Python 버전 설정(출력이 Python 3.10.16)

which python3.10
poetry env use /opt/homebrew/bin/python3.10 #Python 3.10 기반의 가상 환경을 설정
poetry run python --version #Python 버전이 제대로 설정되었는지 확인

Python 버전 지정-ARM64 Python 경로를 사용하도록

poetry env use /opt/homebrew/bin/python3.10

shell 오류가 계속되므로 수동으로 가상환경을 활성화한다

poetry env info --path
source <경로>/bin/activate

poetry config virtualenvs.in-project true

가상 환경이 ARM64로 실행 중인지 확인하면 끝
출력에 arm64가 포함되어 있어야한다

python3 -c "import platform; print(platform.platform())"

.venv 가상환경 파일 현재 경로에 생성 - 터미널에서 실행

python3 -m venv new_venv
source new_venv/bin/activate

설치된 라이브러리가 x86_64 아키텍처용으로 컴파일되어 ARM64 아키텍처와 호환 에러가 난다
가상 환경 내에서 pip를 사용하여 패키지를 소스에서 설치하자


pip install --no-binary :all: openai python-dotenv
pip install --force-reinstall --no-binary :all: openai python-dotenv #이미 설치된 패키지 중 아키텍처 충돌이 있는 경우, 강제로 재설치
pip install langchain
pip install -U langchain-community

readme.md 도 만들어주자

echo "# OpenAI Project" > README.md
cat README.md #파일 생성 확인

env 파일에 open ai key를 넣어주자

touch .env
nano .env
OPENAI_API_KEY=your_openai_api_key
#Save and exit the file. In nano, press CTRL + O, then Enter, and CTRL + X 

OPENAI_API_KEY 환경 변수 파일 설정 (프로젝트 디렉토리에서 .env 파일을 생성)
https://platform.openai.com/api-keys

export OPENAI_API_KEY="your_openai_api_key"
echo $OPENAI_API_KEY #환경 변수가 제대로 설정되었는지 확인

프로젝트 디렉터리 내부에 Python 파일 생성

touch main.py

LangChain 스크립트 작성

import os
from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv

# .env 파일에서 환경 변수 로드
load_dotenv(dotenv_path=".env")

# OpenAI API 키 가져오기
api_key = os.getenv("OPENAI_API_KEY")

if not api_key:
    raise ValueError("API 키가 설정되지 않았습니다. day3.env 파일을 확인하세요.")

# OpenAI Chat 모델 초기화
chat = ChatOpenAI(
    temperature=0.7,  # 응답 다양성 조절 (0.0 ~ 1.0)
    model_name="gpt-3.5-turbo",
    openai_api_key=api_key
)

# 프롬프트 템플릿 생성
prompt = PromptTemplate(
    input_variables=["question"],
    template="You are a helpful assistant. Answer the following question: {question}"
)

def main():
    print("Welcome to the LangChain-based AI Assistant!")
    print("Type your question below. Type 'exit' to quit.")

    while True:
        # 사용자 입력 받기
        user_question = input("\nYour Question: ")

        # 'exit' 입력 시 종료
        if user_question.lower() == 'exit':
            print("Goodbye!")
            break

        # 프롬프트 구성
        formatted_prompt = prompt.format(question=user_question)

        # ChatGPT 응답 생성
        try:
            # Chat 모델 호출
            response = chat.invoke([{"role": "user", "content": formatted_prompt}])
            print("\nAssistant:", response["choices"][0]["message"]["content"])
        except Exception as e:
            print(f"Error occurred: {e}")

if __name__ == "__main__":
    main()


poetry run python main.py

파이썬은 동기식 처리함수와 비동기 함수의 구현이 다른데 동기식은 그 함수가 끝나고 다음 로직을 실행할 수 있고 비동기식은 끝나기 전에 다른 작업의 리퀘스트를 받을 수 있습니다. 순서를 지켜야하는 경우 동기식 순서를 무시하되 빠르게 빠르게 동시에 처리해야할 때 비동기를 사용합니다.

0개의 댓글