목차
이런 고민, 해보셨나요? (Hook)
- “모델 답변이 들쭉날쭉해서 자동화 품질이 흔들려요.”
- “코드는 굴러가는데, 유지보수성이 너무 낮아요.”
- “프롬프트/지침을 바꾸니 결과가 확 좋아졌는데, 기록과 재현성이 부족해요.”
이번 글은 ChatGPT 지침을 체계화하고, 그 지침에 맞춰 파이썬 코드를 전면 교체한 실전 경험을 정리했습니다.
먼저 Codex 가 뭔지 살펴보겠습니다.
Codex란?
https://openai.com/ko-KR/index/introducing-codex/
여기서 알 수 있듯이, 초기 기반: Codex는 GPT-3 모델의 후손으로, 특히 프로그래밍에 최적화된 버전으로 처음 출시되었습니다.
현재 모델 (업데이트됨): 지금 ChatGPT 사이드바 등을 통해 일반적으로 제공되는 Codex 기능은 최신 모델인 GPT-5-Codex에 의해 구동됩니다. GPT-5-Codex는 OpenAI의 최신 GPT-5 계열 모델을 소프트웨어 엔지니어링 작업에 맞게 더욱 최적화한 버전입니다.
주요 기능 :
| 구분 | 내용 |
| 코드 생성/수정 | 자연어 프롬프트를 입력하면 코드를 작성하거나 수정합니다. |
| 코드베이스 질문 | 코드베이스에 대한 질문을 이해하고 답변할 수 있습니다. |
| 격리된 환경 | 각 작업은 코드베이스가 미리 로드된 격리된 가상 환경(샌드박스)에서 독립적으로 처리되어 안전합니다. |
| 작업 실행 능력 | 파일을 읽고 편집할 수 있으며, 테스트 하네스, 린터, 타입 체커 등 다양한 명령을 실행할 수 있습니다. |
| 자동 테스트 및 수정 | 코드를 작성한 후 자체적으로 테스트를 수행하고, 실패하면 코드를 반복적으로 수정하여 성공적인 결과를 도출합니다. |
| GitHub 통합 |
GitHub 저장소와 연결하여 코드베이스를 불러오고, 변경 사항에 대한 Pull Request(PR)를 자동으로 생성할 수 있습니다. |
| 진행 상황 모니터링 |
작업의 복잡성에 따라 수 분에서 수십 분이 소요되며, 실시간으로 진행 상황을 확인할 수 있습니다. |
접근 및 사용 :
접근 방법: 현재 ChatGPT의 사이드바를 통해 'Codex' 기능으로 접근할 수 있습니다.
사용자: 주로 ChatGPT Pro, Enterprise, Team 등 유료 플랜 사용자에게 제공됩니다 (플랜에 따라 접근 가능 여부가 다를 수 있음).
테스트 기반 개발까지 수행하는 지능형 코딩 에이전트로서 개발 생산성 향상을 목표로 합니다.
AI로 날개 단 Naver 뉴스 요약 크롤러: VSCode와 OpenAI Codex로 자동화하기
Naver News를 요약해주는 크롤러 및 자동화 Python을 작성중이었다고 가정해 봅시다.
배경
매일 업데이트되는 네이버 뉴스의 주요 기사를 일일이 읽고 요약하는 일은 꽤 번거로운 작업입니다. 그런데 개발자가 모든 코드를 직접 작성하지 않고, AI 코딩 비서의 도움을 받아 이런 뉴스 요약 크롤러를 만든다면 어떨까요? 이번 포스트에서는 기존의 레거시 뉴스 크롤러를 OpenAI Codex를 이용해 VSCode 상에서 리팩토링하고, 네이버 뉴스 상위 5개 기사를 자동으로 요약해주는 Python 크롤러로 재탄생시킨 사례를 공유합니다. 자동화와 AI의 힘으로 초보 개발자도 어떻게 생산성을 높일 수 있는지 하나씩 살펴보겠습니다.
OpenAI Codex 활용 예시
리팩토링 과정에서 OpenAI Codex의 도움을 받아 생산성을 크게 높일 수 있었습니다. Codex는 GPT 계열 모델 중에서도 코드 작업에 특화된 버전으로, 코드베이스에 대한 질문에 답하거나 새로운 기능을 작성하는 등 다양한 작업을 수행할 수 있는 AI 모델입니다. VSCode 편집기 내에서 확장 기능을 통해 Codex에 코드를 설명해 달라거나 개선 방향을 물어보면, AI가 관련 제안을 즉시 제공해주므로 개발 흐름이 매우 빨라졌습니다.
예를 들어, 기존 코드를 개선하기 전에 Codex에게 내 코드를 일단 분석해줄래? 라고 요청하니, 아래와 같은 핵심 요약을 얻을 수 있었습니다: (예시)
|
위와 같이 Codex가 코드베이스를 자동으로 이해하고 요약해주므로, 개발자는 큰 그림을 빠르게 파악하고 누락된 부분이 없는지 검토할 수 있었습니다. 또한 Codex를 대화형으로 활용하여 "~~함수를 리팩토링해줘", "~~기능을 추가해줘" 등의 명령을 내리면 원하는 기능의 초기 코드 초안을 빠르게 생성해주어 시간을 절약할 수 있었습니다. 이러한 AI 보조를 통해 복잡한 구현도 부담을 줄이며 진행할 수 있었죠.
핵심 함수: Ollama 요약 요청과 결과 처리
이번 프로젝트의 하이라이트는 뉴스 내용의 자동 요약 기능입니다. 새로운 코드에서는 오픈소스 LLM(Local LLM) 모델을 활용해 이 작업을 수행하는데, 이를 위해 우선 요약에 필요한 각종 파라미터를 관리하는 SummarizerConfig 클래스와, 실제로 LLM에 요약 요청을 보내는 request_ollama 함수를 구현했습니다. 요약에는 Ollama라는 로컬 LLM 서버를 활용하였는데, Ollama는 PC에서 오픈소스 대형 언어 모델(예: Llama2)을 구동하고 REST API를 통해 프롬프트에 대한 응답을 생성할 수 있게 해주는 플랫폼입니다. 이를 사용하면 외부 OpenAI API를 호출하지 않고도 로컬에서 직접 AI 요약을 수행할 수 있어, 데이터 유출 걱정을 줄이고 비용 없이도 고성능 요약을 활용할 수 있습니다.
아래는 request_ollama 함수의 주요 부분을 발췌한 코드입니다. 이 함수는 주어진 기사 본문을 Ollama 서버에 보내 요약을 생성하고, 결과를 반환하는 역할을 합니다:
def request_ollama(prompt: str, config: SummarizerConfig, logger: logging.Logger) -> str:
payload = {
"system": config.system_prompt, # 사전 정의된 요약 지시 프롬프트
"prompt": prompt, # 요약 대상 기사 본문 텍스트
"temperature": config.temperature,
"top_p": config.top_p,
"repeat_penalty": config.repeat_penalty,
"num_ctx": config.num_ctx
}
url = config.base_url.rstrip("/") + "/api/generate"
last_exc: Optional[Exception] = None
for attempt in range(1, config.retries + 1):
try:
resp = requests.post(url, json=payload,
timeout=(config.connect_timeout, config.read_timeout))
resp.raise_for_status()
data = resp.json()
summary_text = data.get("response", "")
return summary_text.strip()
except Exception as e:
last_exc = e
logger.error(f"요약 요청 실패 (시도 {attempt}): {e}")
time.sleep(1)
# 모든 시도가 실패하면 예외 발생
raise last_exc if last_exc else RuntimeError("요약 요청 실패")
위 함수에서는 config로부터 Ollama API 서버 주소(URL)와 요약 프롬프트, 그리고 temperature 등의 파라미터를 가져와 JSON 형식의 payload를 구성합니다. 그런 다음 requests.post를 통해 해당 URL (base_url/api/generate)로 요약 요청을 보내고, 응답을 JSON으로 받아 파싱합니다. 정상 응답이면 내부에서 요약된 텍스트를 추출하여 반환하고, 만약 실패하면 로그를 남긴 뒤 정해진 횟수만큼 재시도하도록 구현되었습니다. 모든 시도에서 실패한 경우 최종 예외를 일으켜 상위 로직에서 처리할 수 있게 합니다.
payload에 포함된 system 프롬프트에는 요약 생성 규칙이 한국어로 담겨 있습니다. 예를 들어 "기사 내용을 읽고 두 개의 핵심 포인트 목록과 하나의 요약 문단을 작성하세요" 와 같은 지시를 미리 넣어 두어, 모델이 항상 일정한 포맷으로 (- 핵심 포인트 bullet 두 줄 + 요약 본문) 응답을 생성하도록 유도했습니다. 이렇게 받아온 모델의 응답 텍스트에 대해서는, 코드에서 각 줄을 검사하여 '- ' 로 시작하는 부분은 핵심 포인트 목록으로, 나머지 부분은 요약 본문으로 분리했습니다. 그리고 이 정보를 Python 객체로 구조화한 뒤 파일로 저장하거나 출력하는 식입니다. (개선된 코드에서는 요약 결과를 딕셔너리로 모아 JSON 파일로 저장하고, 마크다운 형식으로도 정리하여 outputs/naver_summary.md로 저장합니다.)
또한 개발 단계에서 요약 API 없이도 동작을 검증할 수 있도록 dry_run 모드를 지원하여, 이 모드에서는 실제 Ollama 요청을 건너뛰고 임시로 준비된 더미 요약 결과를 반환하게 했습니다. 이렇게 하면 Ollama 환경이 준비되지 않은 상태에서도 크롤러의 나머지 부분(크롤링 및 파일 출력 등)을 테스트할 수 있어 편리합니다.
크롤러 실행 결과 (Dry-run)

위 그림은 VSCode 환경에서 새로 작성된 크롤러를 실행한 모습입니다. 좌측 패널에는 Codex가 생성한 코드 변경 요약 내용이 표시되고, 우측에는 generate.py 파일의 request_ollama 함수 구현 코드가 열려 있습니다. 하단의 터미널(Output 창)에는 프로그램을 실행한 로그가 실시간으로 출력되고 있습니다. 각 뉴스 기사에 대해 [INFO] 로그로 기사 URL이 표시된 다음, 두 개의 - 핵심 포인트 항목과 요약 본문이 차례로 출력되는 것을 볼 수 있습니다. 이러한 형태로 5개의 주요 뉴스 기사에 대한 요약이 순차적으로 터미널에 나타나며, 실행 완료 후에는 모든 결과가 하나의 마크다운 리포트 파일로도 저장됩니다.
예를 들어 터미널 출력 로그의 일부는 다음과 같습니다:
[12:44:24] INFO naver_summarizer - https://n.news.naver.com/article/055/0001298525
[12:44:24] INFO naver_summarizer - - 핵심 포인트 예시 1
[12:44:24] INFO naver_summarizer - - 핵심 포인트 예시 2
[12:44:24] INFO naver_summarizer - 요약 본문 예시입니다. ...
(위 내용은 형식을 보여드리기 위한 예시이며, 실제 실행 시에는 해당 시각의 인기 뉴스 기사들이 요약되어 출력됩니다.) 프로그램 실행 후 outputs/naver_summary.md 파일을 열어보면, 각 기사별로 제목, 링크, 핵심 요약 포인트, 요약 본문이 보기 좋게 정리된 마크다운 문서를 확인할 수 있습니다. 이제 터미널 로그를 일일이 복사하지 않고도 한눈에 요약 결과를 공유하거나 검토할 수 있게 된 것이죠.
마무리 및 Codex 활용 팁
이번 포스팅에서는 OpenAI Codex를 활용하여 낡은 뉴스 크롤러를 리팩토링하고, 네이버 뉴스 상위 기사들을 자동으로 요약해주는 파이썬 크롤러로 재구축한 과정을 살펴보았습니다. AI 코딩 도구의 도움으로 반복적이고 까다로운 작업 일부를 자동화하고, 핵심 로직의 개선과 새로운 기능 구현에 집중함으로써 단기간에 유지보수성이 높은 결과물을 얻을 수 있었습니다.
마지막으로, Codex와 같은 AI 코딩 도구를 활용할 때 유용한 몇 가지 팁을 정리하면 다음과 같습니다:
- 명확한 요청 작성: Codex에게 원하는 작업을 시킬 때는 요구사항을 구체적으로 설명하는 것이 중요합니다. 예를 들어 "네이버 뉴스 메인 페이지의 HTML을 파싱해 상위 5개 기사 링크를 추출하는 함수 작성"처럼 목적과 조건을 상세히 제시하면 더 정확한 코드를 생성합니다. 필요한 경우 원하는 출력 형식이나 예시도 함께 알려주세요.
- 작은 단위로 나누어 진행: 한 번에 지나치게 많은 수정이나 생성을 요구하기보다, 작업을 작은 단계로 쪼개어 Codex를 활용하세요. 예를 들어 먼저 "기사 리스트를 가져오는 함수 작성", 다음으로 "가져온 기사 본문을 요약하는 부분 추가" 식으로 단계별로 물어보면 Codex의 응답을 검토하며 진행하기 수월합니다. 이렇게 하면 생성된 코드의 문제를 부분적으로 확인하고 수정 지시를 내리기가 쉬워집니다.
- 코드 검토와 테스트는 필수: Codex가 만들어준 코드라고 해서 바로 신뢰해서는 안 됩니다. AI가 생성한 코드도 사람이 작성한 코드와 마찬가지로 오류가 있을 수 있으므로, 항상 직접 리뷰하고 테스트를 거치세요. 실제로 Codex를 효과적으로 활용하는 개발자들은 Codex를 유능한 주니어 개발자가 코드를 짜주는 도구로 여기고, 자신은 그 코드의 리뷰어가 된다는 마음가짐으로 임한다고 합니다. 즉, Codex가 초안을 만들면 개발자가 그 Diff를 꼼꼼히 살펴보며 프로젝트의 스타일 가이드에 맞는지, 버그나 빠진 부분은 없는지 검토한 후 필요하면 수정이나 추가 지시를 하는 식입니다. 자동화 테스트나 린터 등을 함께 활용하면 더욱 안전하게 Codex를 활용할 수 있습니다.
- 지속적 학습의 기회로 활용: Codex의 제안을 살펴보면 내가 몰랐던 파이썬 라이브러리 사용법이나 더 효율적인 구현 방법을 발견하는 등 학습의 기회가 되기도 합니다. AI가 항상 최적의 답을 주는 것은 아니지만, 때로는 새로운 접근법을 제시해주기도 하므로 이를 참고해보세요. 물론 프로젝트에 적용할 때는 해당 코드의 장단점을 이해하고 판단하는 과정이 필요합니다.
- 언어 설정 유연하게: Codex는 한국어로도 질문을 이해하고 답변할 수 있지만, 복잡한 코딩 문맥에서는 영어로 질문하는 편이 더 정확한 응답을 얻는 데 유리할 때가 있습니다. 영어로 된 방대한 프로그래밍 지식 학습 덕분에 정확도가 높은 경우가 많기 때문입니다. 상황에 따라 한국어 설명 + 코드 조각 등의 형태로 혼용하여 시도해보고, 가장 효과적인 프롬프트 방식을 찾아가는 것도 좋습니다.
OpenAI Codex와 같은 AI 코딩 도구는 초심자 개발자에게도 든든한 조력자가 되어줄 수 있습니다. 자동 완성 이상의 활용법을 익히면, 반복 작업을 줄이고 새로운 기술에도 과감히 도전해볼 수 있는 자신감을 얻게 됩니다. 다만 어디까지나 코드의 최종 책임은 개발자에게 있음을 항상 염두에 두고, Codex를 똑똑한 보조 개발자로 삼아 똑똑하게 활용해 보시기 바랍니다!
(여담) ollama를 통한 명령어 수행

- 모델 다운로드 및 수행까지
- 먼저 가상환경(선택 사항)을 활성화한 뒤 pip install -r requirements.txt로 의존성을 설치하세요.
- Ollama 데스크톱 앱 또는 서버를 실행하고, 사용할 모델(예: mistral:7b-instruct)을 ollama pull mistral:7b-instruct 명령으로 미리 내려받습니다.
- 준비가 끝나면 프로젝트 루트(d:\Dev\My_Maker)에서 다음과 같이 실행하면 됩니다
python main.py --count 5 --model mistral:7b-instruct
- 옵션 설명:
- --count는 요약할 기사 수(기본 5)
- --model은 Ollama 모델 이름(미입력 시 코드 기본값)
- --dry-run을 추가하면 Ollama 호출 없이 더미 요약으로 테스트
- --output-dir로 결과 저장 경로 지정 가능
- 실행 후 outputs/naver_summary.json과 outputs/naver_summary.md에 결과가 생기며, 콘솔에도 요약 미리보기가 표시됩니다.
수행화면
위 명령어를 통해 수행하면, 모델까지 선정이 되는 것이다.


[14:17:17] INFO naver_summarizer - ===== Naver Main News Summary =====
[14:17:17] INFO naver_summarizer - 1. [속보] 중국, 희토류·기술 수출통제 강화…미중 갈등 재점화 가능성 (매일경제)
[14:17:17] INFO naver_summarizer - https://n.news.naver.com/article/009/0005570374
[14:17:17] INFO naver_summarizer - 1. 요약
[14:17:17] INFO naver_summarizer - 중국이 희토류와 기술 수출을 통제하는 조치를 강화한 것으로 알려졌습니다. 미국과의 갈등 이 재점화될 가능성이 있습니다.
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. 주요 사실
[14:17:17] INFO naver_summarizer - - 중국은 희토류 및 기술 수출을 강화하는 조치를 취하였습니다.
[14:17:17] INFO naver_summarizer - - 미국과의 갈등이 재점화될 가능성이 있습니다.
[14:17:17] INFO naver_summarizer - ...
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. [속보] 정청래 “추석 민심, ‘뻔뻔한 내란당 빨리 해체 안 하고 뭐하냐’고 말해” (매일경제)
[14:17:17] INFO naver_summarizer - https://n.news.naver.com/article/022/0004073781
[14:17:17] INFO naver_summarizer - 1. 요약: 정청래는 추석 민심에서 '뻔뻔한 내란당 빨리 해체 안 하고 뭐하냐'라는 말을 했습니다.
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. 주요 사실:
[14:17:17] INFO naver_summarizer - - 정청래가 추석 민심에서 발표한 말
[14:17:17] INFO naver_summarizer - - 정청래가 '뻔뻔한 내란'이라는 표현을 사용했음
[14:17:17] INFO naver_summarizer - - 정청래가 해체를 빨리 하라는 의미로 이르렀음
[14:17:17] INFO naver_summarizer - ...
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 3. "싸워 이기면 빌린 돈 갚을게"..폭행·협박한 20대 집유 (kbc광주방송)
[14:17:17] INFO naver_summarizer - https://n.news.naver.com/article/660/0000094401
[14:17:17] INFO naver_summarizer - 1. 요약
[14:17:17] INFO naver_summarizer - - 20대 인물이 부산 지구에서 폭행과 협박으로 한 사람을 집유했다.
[14:17:17] INFO naver_summarizer - - 이 사건에서 빌린 돈을 잠금하고 있었고, 사건 해결 후 갚을 계획이다.
[14:17:17] INFO naver_summarizer - - 관련 정보는 부산지법 서부지원에서 발표했다.
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. 주요 사실 요약
[14:17:17] INFO naver_summarizer - ...
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 4. '방산특수' 한화 시총, 1년 새 3배 성장…10대그룹 3∼7위 모두 변동 (주간조선)
[14:17:17] INFO naver_summarizer - https://n.news.naver.com/article/053/0000052784
[14:17:17] INFO naver_summarizer - 1. 요약
[14:17:17] INFO naver_summarizer - - 최근 2일 오후, 추석 명절을 앞두고 코스피는 최고가를 기록했다.
[14:17:17] INFO naver_summarizer - - 한화 시총은 1년 새로운 3배 성장한 것으로 나타났다.
[14:17:17] INFO naver_summarizer - - 10대 그룹 모두 변동이 있었다.
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. 주요 사실
[14:17:17] INFO naver_summarizer - ...
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 5. 美 이어 EU도 철강 관세 50%…여야 합의 'K-스틸법'은 제자리 (전자신문)
[14:17:17] INFO naver_summarizer - https://n.news.naver.com/article/030/0003357679
[14:17:17] INFO naver_summarizer - 1. 요약: 8일 경기도 평택항에서 철강 제품이 쌓여있는 모습이 공개됐다. 이 외에도, 미국과 EU도 철강 관세 50% 가격 지원을 시작했다고 보도되었다. 이러한 상황에서 "K-스틸법"은 제자리에 유지되고 있음을 알 수 있다.
[14:17:17] INFO naver_summarizer -
[14:17:17] INFO naver_summarizer - 2. 주요 사실 요약:
[14:17:17] INFO naver_summarizer - - 8일 경기도 평택항에서 철강 제품이 쌓여있는 모습 공개
[14:17:17] INFO naver_summarizer - - 미국과 EU도 철강 관세 50% 가격 지원 시작
[14:17:17] INFO naver_summarizer - - "K-스틸법"은 제자리에 유지
[14:17:17] INFO naver_summarizer - ...
--끝--
'IT 트렌드 > 가볍게 배우는 신기술 이야기' 카테고리의 다른 글
| 운영 서버 교체 전, 안드로이드·아이폰 앱에서 새 서버 테스트하기 (Hosts 파일 없이 안전하게!) (0) | 2025.11.02 |
|---|---|
| Terraform를 활용한 IaC 인프라 관리: 개념, 설치 방법, 명령어, 사용 사례 총정리 (8) | 2025.09.05 |
| LLM 열풍: 역사와 발전 과정부터 Ollama로 로컬 LLM 실행 (6) | 2025.08.18 |