왜 Python인가?
Python은 AI·ML 생태계에서 사실상의 표준 언어입니다. 2024년 기준 PyPI에는 50만 개 이상의 패키지가 있으며, 모든 주요 AI 프레임워크(PyTorch, Transformers, LangChain)가 Python을 기본 인터페이스로 제공합니다.
| 특징 | 설명 |
|---|---|
| 간결한 문법 | 프로토타입에서 프로덕션까지 빠른 개발 |
| 풍부한 AI 생태계 | PyTorch, Transformers, LangChain 등 최고의 라이브러리 |
| 범용성 | AI 모델 개발부터 API 서버, 데이터 파이프라인까지 |
2. Python 설치, 가상환경 및 VS Code 환경 구축
AI 개발에 필수적인 Python을 로컬 환경에 완벽하게 세팅하고, 프로젝트마다 의존성이 엉키지 않도록 가상환경을 활성화하는 방법, 그리고 VS Code에서 개발하기 위해 필요한 구성을 알아보겠습니다.
2.1 운영체제별 Python 설치
🪟 Windows 설치
- 공식 설치 프로그램 다운로드: Python 공식 다운로드 페이지에서 Windows용 최신 버전(3.11 또는 3.12 버전 권장) 인스톨러를 다운로드합니다.
- 경로(PATH) 등록 및 설치: 인스톨러 실행 시 하단의 "Add python.exe to PATH" 체크박스를 반드시 체크한 뒤 Install Now를 클릭합니다. (체크하지 않으면 명령 프롬프트에서 python 명령어를 인식하지 못합니다.)
- 설치 확인: 새로운 cmd 또는 PowerShell을 열고 아래 명령어로 설치 상태와 버전을 확인합니다.
python --version pip --versionbash
🍎 macOS 설치
macOS에서 가장 표준적이고 쉬운 설치 방식은 패키지 관리자 Homebrew를 사용하는 것입니다.
- 터미널 앱을 실행합니다.
- Homebrew를 통해 최신 Python 버전을 빌드/설치합니다.
brew install pythonbash - 설치가 끝나면 아래 명령어로 터미널에 Python 경로와 버전이 올바르게 맵핑되었는지 확인합니다.
python3 --version pip3 --versionbash
🐧 Linux (Ubuntu / Debian 설치)
Linux 환경은 APT 패키지 저장소를 이용해 필요한 파이썬과 가상환경 구성 모듈(python3-venv)을 일괄적으로 셋업합니다.
sudo apt update
sudo apt install python3 python3-pip python3-venv
# 설치 확인
python3 --versionbash
2.2 가상환경(venv) 생성 및 활성화
프로젝트별로 라이브러리 버전이 충돌하지 않도록 격리된 가상환경을 만드는 것은 파이썬 개발의 기본 규범입니다.
- 가상환경 생성: 프로젝트 폴더로 이동한 뒤 아래 명령어를 입력해 가상환경(
.venv폴더)을 만듭니다.# Windows / macOS / Linux 공통 python -m venv .venvbash - 가상환경 활성화:
- Windows (cmd/PowerShell):
.venv\Scripts\activatebash - macOS / Linux:
source .venv/bin/activatebash
(활성화에 성공하면 터미널 프롬프트 가장 왼쪽에
(.venv)표시가 나타납니다.) - Windows (cmd/PowerShell):
- 가상환경 비활성화: 작업을 끝내고 가상환경을 종료하려면 터미널에
deactivate를 입력합니다.
2.3 VS Code에서 Python 가상환경 셋업 및 패키지 관리
- VS Code Python 확장 설치: 사이드바의 확장 탭(
Ctrl + Shift + X)에서 Microsoft에서 배포한 공식 Python 확장을 설치합니다. - 파이썬 인터프리터(Interpreter) 선택:
명령 팔레트(
Ctrl + Shift + P/ macOS는Cmd + Shift + P)를 열고 "Python: Select Interpreter"를 입력 및 선택한 후, 방금 생성한 가상환경 안의 인터프리터(.venv/Scripts/python.exe또는.venv/bin/python)를 선택합니다. 이렇게 하면 VS Code 내부 터미널을 열 때 자동으로 가상환경이 자동 활성화됩니다. - 패키지 초고속 관리 (uv 활용):
기존
pip보다 수십 배 빠른 차세대 초고속 패키지 관리자인 uv를 설치하면 AI 모델 개발에 들어가는 무거운 라이브러리(PyTorch 등)를 순식간에 설치할 수 있습니다.# 1. uv 설치하기 # Windows (PowerShell): powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # macOS & Linux: curl -LsSf https://astral.sh/uv/install.sh | sh # 2. 가상환경에 초고속 라이브러리 추가하기 (예: PyTorch, FastAPI 등) uv pip install torch transformers fastapibash
기본 문법 (Python Basics)
자료형 & 컬렉션 (Data Types & Collections)
파이썬의 가장 강력한 특징 중 하나는 유연하고 간결한 데이터 다루기입니다. 리스트(List)의 강력한 인덱싱/슬라이싱 기능과 키-값 쌍을 관리하는 딕셔너리(Dictionary)는 필수입니다.
# 1. f-string 문자열 포맷팅
name = "Llama-3"
size = "8B"
print(f"모델 이름: {name}, 파라미터 크기: {size}")
# 2. 리스트 슬라이싱 [시작:끝:간격]
scores = [10, 20, 30, 40, 50]
print(scores[1:4]) # [20, 30, 40]
# 3. 딕셔너리 (Dictionary)
model_config = {
"temperature": 0.7,
"max_tokens": 512
}
print(model_config.get("temperature"))python
함수 & 람다 (Functions & Lambdas)
파이썬 함수는 기본값 매개변수와 임의의 키워드 매개변수(**kwargs)를 받아 매우 풍부하게 작성될 수 있으며, 간단한 일회성 함수는 lambda로 한 줄 작성할 수 있습니다.
# 기본값 매개변수를 활용한 함수 선언
def calculate_cost(tokens: int, price_per_1k: float = 0.002) -> float:
return (tokens / 1000) * price_per_1k
print(calculate_cost(5000)) # 0.01
# 람다(Lambda) 익명 함수 정의
square = lambda x: x ** 2
print(square(5)) # 25python
클래스 & OOP (Classes & OOP)
파이썬은 완전한 객체 지향 프로그래밍을 지원합니다. 생성자 __init__와 인스턴스 메서드를 구조화하여 데이터를 캡슐화합니다.
class ModelAgent:
def __init__(self, name: str, role: str):
self.name = name # 인스턴스 변수
self.role = role
def greet(self) -> str:
return f"안녕하세요, 저는 {self.role} 역할을 수행하는 AI 에이전트 {self.name}입니다."
agent = ModelAgent("TestForgeBot", "QA")
print(agent.greet())python
컴프리헨션 (Comprehensions)
컴프리헨션은 리스트나 딕셔너리 같은 컬렉션을 루프와 필터 구조를 엮어 한 줄로 우아하게 창조하는 파이썬 특유의 강력한 문법입니다.
# 1. 리스트 컴프리헨션
numbers = [1, 2, 3, 4, 5]
squares = [x ** 2 for x in numbers if x % 2 == 0]
print(squares) # [4, 16]
# 2. 딕셔너리 컴프리헨션
names = ["A", "B", "C"]
ids = {name: idx for idx, name in enumerate(names)}
print(ids) # {'A': 0, 'B': 1, 'C': 2}python
고급 Python (Advanced Python)
데코레이터 (Decorators)
데코레이터는 기존 소스코드를 손대지 않고 타겟 함수의 실행 전후에 공통 로직(실행 시간 트래킹, 로깅 등)을 덧씌우는 우아한 기법입니다.
import time
# 공통 시간 측정 데코레이터 정의
def timer_decorator(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"[{func.__name__}] 실행 완료: {end - start:.4f}초 소요")
return result
return wrapper
@timer_decorator
def run_heavy_task():
time.sleep(0.5)
return "완료"
run_heavy_task()python
제너레이터 (Generators)
제너레이터는 대량의 모든 데이터를 메모리에 동시 로딩하는 대신, 호출되는 시점에 yield 키워드를 통해 필요한 원소 하나씩만 생성 반환하여 가비지 메모리를 비약적으로 차단하는 이터레이터 생산 장치입니다.
# 제너레이터 함수 정의
def token_stream(text: str):
for token in text.split():
yield token
stream = token_stream("TestForge AI Model is powerful")
for t in stream:
print(t) # 각 단어가 필요한 순간 하나씩 쏙쏙 호출 출력됨python
컨텍스트 매니저 (Context Managers)
with 구문과 함께 사용되는 컨텍스트 매니저는 파일 입출력, 네트워크 소켓, 데이터베이스 트랜잭션 등 리소스를 안정적으로 열고 닫을 수 있도록 보장합니다.
# 사용자 정의 컨텍스트 매니저 클래스
class ResourceHandler:
def __enter__(self):
print("1. 리소스 잠금 설정 완료")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("2. 리소스 잠금 해제 및 파일 close")
with ResourceHandler() as handler:
print("-> 작업 수행 중...")python
타입 힌팅 (Type Hinting)
동적 타입 언어인 파이썬의 최대 약점인 타입 모호성을 해결하기 위해, 정적 컴파일러 툴의 지원을 받을 수 있도록 타입을 명시하는 현대 파이썬 코딩의 규범입니다.
from typing import List, Dict, Optional
def get_user_metadata(user_id: int) -> Dict[str, Optional[str]]:
return {"name": "홍길동", "email": None}
users: List[int] = [101, 102]python
비동기 프로그래밍 (Asynchronous Programming)
싱글 스레드 환경에서 수많은 비동기 네트워크 API 호출(예: 수백 개의 LLM API 동시 수신)의 대기 병목을 초고효율로 통제하는 async/await 코루틴 패러다임입니다.
import asyncio
async def fetch_llm_response(prompt: str):
print(f"API 요청 시작: {prompt}")
await asyncio.sleep(0.5) # 비동기 잠자기 (네트워크 대기 시뮬레이션)
return f"{prompt}에 대한 답변"
async def main():
# 여러 요청을 비동기 병렬로 동시 대기 수집
responses = await asyncio.gather(
fetch_llm_response("안녕"),
fetch_llm_response("반가워")
)
print("전체 수신:", responses)
asyncio.run(main())python
NumPy & Pandas
파이썬 AI/ML 데이터 가공 및 행렬 다차원 연산에 중추가 되는 핵심 라이브러리들입니다.
import numpy as np
import pandas as pd
# 1. NumPy 다차원 배열 연산
arr = np.array([[1, 2], [3, 4]])
print(arr * 2) # 행렬 전체 원소 동시 연산
# 2. Pandas DataFrame 구조화
data = {"Name": ["Alice", "Bob"], "Age": [25, 30]}
df = pd.DataFrame(data)
print(df)python
PyTorch 딥러닝 (Deep Learning with PyTorch)
연구부터 대형 서비스 서빙까지 AI 진영을 제패한 딥러닝 텐서 라이브러리인 PyTorch를 활용한 뼈대 모델링 선언 구조입니다.
import torch
import torch.nn as nn
# 커스텀 신경망 정의
class SimpleNN(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(10, 2) # 10개 입력 -> 2개 출력
def forward(self, x):
return self.fc(x)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = SimpleNN().to(device)
print("구동 장비:", device)python
LLM 개발 (LLM & Agent Development)
자연어 처리의 꽃인 Transformers와 LLM 오케스트레이션의 대명사인 LangChain을 엮어 모델링을 개발하는 방법입니다.
Transformers
from transformers import pipeline
# 감성 분석 파이프라인 즉시 빌드 및 실행
classifier = pipeline("sentiment-analysis")
res = classifier("TestForge is absolutely fantastic!")
print(res)python
OpenAI SDK
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
# 채팅 모델 답변 수신
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "파이썬 가이드를 한 마디로 요약해줘"}]
)
print(completion.choices[0].message.content)python
LangChain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# 템플릿과 LLM 체이닝 조립
prompt = ChatPromptTemplate.from_template("{topic}에 대해 설명해줘")
llm = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | llm
# chain.invoke({"topic": "RAG"})python
FastAPI — AI API 서버 (FastAPI AI Serving)
Pydantic 모델을 통한 초고속 엄격한 스키마 검증과 비동기 라우팅을 지원하며, /docs에서 자동 API 명세까지 생성하는 AI 모델 서빙의 표준 프레임워크입니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Query(BaseModel):
prompt: str
@app.post("/predict")
async def predict_api(query: Query):
# AI 모델 추론 과정 수행
return {"prediction": f"입력하신 prompt '{query.prompt}'에 대한 결과 완료"}python
패키지 관리 (Package Management)
기존 requirements.txt보다 훨씬 진일보한 차세대 파이썬 패키지 종속성 관리 도구인 **Poetry**와 차세대 컴패니언 **uv**를 실무에서는 절대 표준으로 구성합니다.
# 1. Poetry를 통한 패키지 환경 구축
poetry init
poetry add requests fastapi
# 2. lock파일을 완벽히 매핑한 의존성 설치
poetry installbash
개발 도구 (Development Tools)
팀 단위의 파이썬 코드 품질을 유지하고 문법적 실수를 철두철미하게 잡아내기 위한 현대 파이썬 3대 절대 도구들을 세팅합니다.
- Ruff: 기존 Flake8, black, isort 등을 모두 흡수한 Rust 기반의 초고속 통합 린터 및 포맷터
- Mypy: 타입 힌팅 구문의 정적 분석 검사기
# ruff 린팅 및 즉시 자동 수정 수행
ruff check --fix
# mypy 타입 엄격도 검사 수행
mypy app.pybash