Skip to content

자바 개발자의 AI 입문기 (1편) - Python 환경 세팅과 OpenAI 첫 호출





TL;DR

  • 목표: 자바 개발자가 AI 개발 환경을 세팅하고 첫 API 호출까지 해보기
  • 도구: Cursor IDE + Python + OpenAI API
  • 소요 시간: 약 30분~1시간
  • 비용: OpenAI API 크레딧 $5 정도면 연습하기 충분
  • 핵심: 자바 알면 Python 문법은 금방 익힘, 바이브코딩으로 배우면 더 빠름
  • 한계: OpenAI API는 유료 서비스 (실습 시 소액 비용 발생), 인터넷 연결 필수




이 시리즈를 시작하며

저는 9년 차 자바 백엔드 개발자입니다.

요즘 AI 얘기가 너무 많아요. 회사에서도 “AI 기능 붙이면 좋겠다”는 말이 나오고, 개발자 커뮤니티에서도 LangChain, RAG, LangGraph 같은 단어들이 쏟아집니다.

솔직히 처음엔 “그게 뭔데…” 했습니다.

그래서 직접 부딪혀보기로 했어요. 토이프로젝트로 하나씩 만들어보면서 개념을 익히는 거죠. 그 과정을 5편의 시리즈로 정리합니다.

이번 시리즈에서 다룰 내용:

  1. (1편) Python 환경 세팅과 OpenAI 첫 호출 ← 현재 글
  2. (2편) LangChain 기초 - 체이닝과 프롬프트 템플릿
  3. (3편) RAG 기초 - 문서를 벡터로 저장하기
  4. (4편) RAG 실전 - Knowledge Base 검색 챗봇 만들기
  5. (5편) LangGraph - 상태 기반 멀티 에이전트




왜 Python인가? (자바 개발자의 한숨)

솔직히 자바로 하고 싶었습니다.

LangChain4j라는 자바 라이브러리도 있긴 해요. 근데 문서가… 공식 문서조차도 Python 예제가 대부분이고, 커뮤니티 질문도 Python 기준이에요.

결국 포기하고 Python으로 왔습니다.

다행히 자바 개발자라면 Python 문법은 금방 익혀요. 타입 힌트도 있고, 클래스도 있고, 익숙한 개념들이 많거든요.

Java 개발자 → Python 적응 기간: 반나절~하루
(조건: 바이브코딩 + Cursor IDE 사용)




1단계: Cursor IDE 설치

Cursor IDE는 VS Code 기반의 AI 코딩 에디터입니다.

왜 IntelliJ 대신 Cursor인가요?

항목IntelliJ + AI 플러그인Cursor IDE
AI 통합도플러그인 수준네이티브 수준
바이브코딩제한적자연스러움
Python 지원PyCharm 별도 필요기본 지원
가격유료 (AI 기능 추가 시)무료 (Pro 월 $20)

Cursor 설치는 간단합니다:

  1. cursor.com에서 다운로드
  2. 설치 후 실행
  3. GitHub 계정으로 로그인

VS Code 쓰시던 분이라면 설정, 익스텐션까지 그대로 가져올 수 있어요.





2단계: Python 환경 세팅

Python이 처음이라도 걱정 마세요. Cursor에게 물어보면 됩니다.

Python 설치 확인

터미널에서 Python 버전을 확인합니다:

python --version
# 또는
python3 --version

3.10 이상이면 OK입니다. 없다면 python.org에서 설치하세요.

가상환경 생성

Python은 프로젝트별로 가상환경을 만드는 게 관례입니다. 자바의 Maven/Gradle처럼 의존성을 격리하는 거예요.

# 프로젝트 폴더 생성
mkdir ai-toy-project
cd ai-toy-project

# 가상환경 생성
python -m venv venv

# 가상환경 활성화 (맥/리눅스)
source venv/bin/activate

# 가상환경 활성화 (윈도우)
venv\Scripts\activate

활성화되면 터미널 앞에 (venv)가 붙어요.

필요한 패키지 설치

pip install openai python-dotenv
  • openai: OpenAI API 클라이언트
  • python-dotenv: 환경변수 관리 (.env 파일)




3단계: OpenAI API 키 발급

OpenAI 플랫폼에서 API 키를 발급받습니다.

  1. platform.openai.com 접속
  2. 로그인 후 API Keys 메뉴
  3. “Create new secret key” 클릭
  4. 키 복사 (한 번만 보여주니까 꼭 저장)

프로젝트 루트에 .env 파일을 만들고:

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

주의: .gitignore.env 추가하는 거 잊지 마세요.





4단계: 첫 번째 AI 호출

드디어 코드를 작성합니다. main.py 파일을 만들어요.

가장 간단한 예제

from openai import OpenAI
from dotenv import load_dotenv

# .env 파일에서 API 키 로드
load_dotenv()

# OpenAI 클라이언트 생성
client = OpenAI()

# 채팅 완성 요청
response = client.chat.completions.create(
    model="gpt-3.5-turbo",  # 저렴한 모델로 시작
    messages=[
        {"role": "user", "content": "안녕? 나는 자바 개발자야. 한 줄로 인사해줘."}
    ]
)

# 응답 출력
print(response.choices[0].message.content)

실행:

python main.py

결과:

안녕하세요! 자바 개발자님, 반갑습니다!

성공이에요. 이게 AI API 호출의 전부입니다.



자바 개발자를 위한 코드 해설

Python 코드가 낯설 수 있으니 자바와 비교해볼게요.

# Python
from openai import OpenAI
client = OpenAI()
// Java (비슷한 구조)
import com.openai.OpenAI;
OpenAI client = new OpenAI();

거의 비슷하죠? 차이점:

  • new 키워드 없음
  • 세미콜론 없음
  • 타입 선언 없음 (선택적)
# Python - 딕셔너리
{"role": "user", "content": "안녕"}
// Java - Map
Map.of("role", "user", "content", "안녕");

Python의 딕셔너리는 자바의 Map과 비슷합니다.





5단계: 조금 더 실용적인 예제

이번엔 코드 리뷰어를 만들어봅시다.

from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()
client = OpenAI()

def review_code(code: str) -> str:
    """자바 코드를 리뷰하는 AI 함수"""
    response = client.chat.completions.create(
        model="gpt-4o-mini",  # gpt-3.5-turbo보다 똑똑하고 저렴
        messages=[
            {
                "role": "system",
                "content": """당신은 10년차 자바 시니어 개발자입니다.
                주어진 코드를 리뷰하고, 개선점을 3가지 이내로 간결하게 제안하세요.
                한국어로 답변하세요."""
            },
            {
                "role": "user", 
                "content": f"다음 자바 코드를 리뷰해주세요:\n\n```java\n{code}\n```"
            }
        ],
        temperature=0.3  # 일관된 응답을 위해 낮게 설정
    )
    return response.choices[0].message.content


# 테스트할 자바 코드
sample_code = """
public class UserService {
    public User findUser(Long id) {
        User user = userRepository.findById(id).get();
        if (user == null) {
            throw new RuntimeException("User not found");
        }
        return user;
    }
}
"""

print(review_code(sample_code))

실행 결과:

리뷰 결과:

1. **Optional 처리 개선**: `.get()` 대신 `.orElseThrow()`를 사용하세요.
   `findById(id).get()`은 NoSuchElementException을 던질 수 있습니다.

2. **예외 타입 구체화**: `RuntimeException` 대신 `UserNotFoundException` 같은
   커스텀 예외를 사용하면 예외 처리가 명확해집니다.

3. **null 체크 불필요**: `.get()` 이후의 null 체크는 의미 없습니다.
   `.get()`은 값이 없으면 예외를 던지지, null을 반환하지 않습니다.

오, 꽤 쓸만하죠?





바이브코딩으로 배우기

사실 위 코드들, 제가 다 치지 않았어요.

Cursor에서 이렇게 입력했습니다:

OpenAI API로 자바 코드 리뷰하는 Python 함수 만들어줘.
시스템 프롬프트에는 10년차 자바 시니어 개발자 역할을 부여해.

Cursor가 코드를 생성하고, 저는 조금 수정한 거예요. 이게 바이브코딩입니다.

바이브코딩의 핵심:

  1. 의도를 명확히 전달: “자바 코드 리뷰 함수” + “시니어 역할”
  2. 생성된 코드 이해: 그냥 복붙하지 말고, 왜 이렇게 됐는지 파악
  3. 점진적 수정: 작게 시작해서 조금씩 기능 추가

Python 모르는 상태에서 시작해도, 이렇게 하면 자연스럽게 배우게 됩니다.





비용 정리

걱정되는 게 비용이죠. 정리해봤습니다.

모델입력 비용 (1K 토큰)출력 비용 (1K 토큰)특징
gpt-3.5-turbo$0.0005$0.0015빠르고 저렴
gpt-4o-mini$0.00015$0.0006더 저렴하고 똑똑
gpt-4o$0.0025$0.01가장 똑똑, 비쌈

연습할 때는 gpt-4o-mini 추천입니다. gpt-3.5-turbo보다 저렴하면서 성능은 더 좋아요.

API 크레딧 $5면 수천 번 호출 가능합니다. 연습하기엔 충분해요.





다음 편 예고

이번 편에서는 환경 세팅과 기본 API 호출을 다뤘습니다.

다음 편에서는 LangChain을 다룹니다:

  • 프롬프트 템플릿으로 재사용 가능한 질문 만들기
  • 체이닝으로 여러 AI 호출을 연결하기
  • 자바의 Stream API와 비슷한 패턴이에요

(2편) LangChain 기초로 계속





실습 체크리스트

따라하고 나서 아래 항목들을 점검해보세요:

  • Python 3.10 이상 설치 확인 (python --version)
  • 가상환경 활성화 확인 (터미널에 (venv) 표시)
  • .env 파일에 OPENAI_API_KEY 설정 완료
  • .gitignore.env, venv/ 추가 완료
  • python main.py 실행 시 AI 응답 정상 출력 확인




참고:

OpenAI API 공식 문서: https://platform.openai.com/docs
Cursor IDE: https://cursor.com
Python 공식 문서: https://docs.python.org/3/




읽어주셔서 감사합니다.🖐


Ramsbaby
Written byRamsbaby
이 블로그는 직접 개발/운영하는 블로그이므로 당신을 불쾌하게 만드는 불필요한 광고가 없습니다.

#My Github#소개 페이지#Blog OpenSource Github#Blog OpenSource Demo Site