AI 공부

1. GPT API, Ollama 활용 Local LLM 으로 웹사이트 요약 구현

kdb1248 2025. 8. 17. 15:14

목차

1. 공부배경

2. DAY 1 - Ollama 활용 Local LLM 서빙, GPT API 활용 웹사이트 요약

3. DAY 2 - Ollama Local LLM 활용한 웹사이트 요약 기능 구현

 


1. 공부 배경

회사에 들어와 생성형 AI 플랫폼(LLMOps, Agent 등)을 담당하는 PO 부서에 배치되었다.

이전에 IT 회사에서 일한 경험이 있었지만, AI 관련 지식은 아예 새로운 세계였다. 

업무 과정에서 마주치는 기술 용어나 개념들은 매번 검색해 가며 이해했고, 그 외에도 꾸준히 AI 트렌드와 지식을 따라가려 노력했다. (매일 AI 관련 기사 읽기, 기사 속 주요 기술 추가 서치, 유튜브 영상 시청 등)

 

하지만 이런 부분에 어느정도 한계를 느꼈다.

단순 지식 이해 수준으로는 머릿속에서 맴도는 부분이 있달까?

이때 예전에 IT 쪽에서 일하고 공부할 때의 경험이 떠올랐다.
결국 기술은 텍스트로만 접하는 것과, 직접 코딩을 하고 만들어보는 것 사이에 큰 차이가 있다는 것.
(예를 들어, 프론트/백엔드 개념이나 API 통신을 책으로만 이해하는 것과, 작게라도 직접 웹사이트를 만들어보며 감을 잡는 것에 큰 차이가 있었달까?)

 

그래서 이번에도 똑같이 생각했다.
“AI도 직접 코딩하며 뭔가를 만들어봐야 제대로 이해할 수 있겠다.”

이를 위해 최소한 LLM 학습과 서빙을 직접 해보고, 에이전트 플로우를 구성해 보고, RAG도 구현해 보면서 뒷단의 flow를 경험해 보는 과정이 필요하다고 판단했다.
마침 회사에서 제공하는 Udemy 외국 강의 중 관련 커리큘럼이 잘 짜인 강의가 있어 영어공부도 할겸 학습을 시작했다.

듣고 있는 Udemy Ed Donner 의 강의

 

앞으로의 학습 목표는 3가지다.

  1. AI 기술 자체에 대한 이해도가 높이기 
  2. 앞으로 AI관련 기획업무를 해나갈 때 좀 더 세심한 기획을 할 수 있게 되기 
  3. 회사 업무와 별개로라도, AI 활용 product 들을 작게라도 직접 만들어 보기

 

이 목표를 이루기 위해 공부해가고 있고,

공부한 내용과 그 과정 속 느낀점들을 복습 겸 블로그에 지속적으로 적어보려 한다.

 

2. DAY 1 - Ollama 활용 Local LLM 서빙, GPT API 활용 웹사이트 요약

(실제 코드들은 첨부하는 github 링크 참고)

https://github.com/kdb1248/LLM-Study_udemy/blob/main/week1/day1.ipynb

 

LLM-Study_udemy/week1/day1.ipynb at main · kdb1248/LLM-Study_udemy

Contribute to kdb1248/LLM-Study_udemy development by creating an account on GitHub.

github.com

 

1.Ollama 활용 Local LLM 서빙

환경 세팅 외에 강의에서 가장 처음으로 진행했던 것이 "Ollama"사용이었다. 

Ollama는 로컬 환경에서 LLM을 다운로드하고 실행해 볼 수 있는 오픈소스 도구로 유명하다. 

실제 업무를 하면서 다양한 LLM 서빙프레임워크 중 하나라는 정도로 Ollama를 들어본 적 있었고,

직접 사용해보는 것은 처음이었다.

 

ollama 로고

 

아래 이미지와 같이 직접 ollama를 컴퓨터에 다운 받고, Llama 3.2 모델을 다운받아 

모델에게 메세지 요청을 보내봤다. 

ollama를 활용해 llama 3.2 모델에 스페인어 가르쳐달라고 메시지를 보내봄

 

AI 사업 관련 업무를 하다 보면, 모델을 로컬에서 다운 받아서 써야 하는 상황들도 꽤 있다. 

단순히 "로컬에서 다운받아서 쓰시면 되겠네요" 라고 말하는 정도가 아니라, 로컬에서 다운받을 땐 어떤 과정을 거치는지를 경험해 볼 수 있는 순간이었다. 그런 상황에선 이런 프레임워크 등을 통해 모델을 다운을 받고 실행을 하는 거구나를 직접 체험해 볼 수 있었던 점이 의미가 있었다. 

 

2.GPT API 활용 웹사이트 요약

특정 웹사이트 링크를 넣으면 그 웹사이트를 요약해주는 기능을 만들었다. 

 

챗 gpt를 쓰면 별거 아닌 기능일 수 있지만 이를 코드단에서 직접 만들어볼 수 있는 경험이었다. 

이를 구현하기 위해 만들었던 주요한 part는 아래와 같다.

 

1) website 클래스 제작

- website url을 넣으면 BeautifulSoup 라이브러리를 이용해 해당 웹사이트 html을 파싱

- 파싱해올때 header 값을 같이 전달해, 각 사이트의 봇 스크래핑 방지를 우회 

- 웹사이트 html 내에서 title과 body를 추출. body 추출 시에는 불필요한 tag는 날리고 순수 text만 공백제거해서 가져옴

website 클래스 제작

2) System/User prompt 지정

- GPT에게 보낼 system, user prompt를 지정해 둔다

- user prompt의 경우 앞서 만든 웹사이트 클래스를 활용

- 삽입한 url 기반 웹사이트 인스턴스(객체)를 만들고, 그 객체를 활용해 해당 url 파싱 정보를 user prompt에 삽입

(해당 url 웹사이트 내 text 전체가 user prompt에 들어가게 됨)

System/User prompt

 

3) GPT API 활용 웹사이트 요약

- 특정 웹사이트 url을 변수로 넣어 요약 기능 실행

- GPT API에 해당 url 기반으로 만들어진 프롬프트를 전달 

- GPT가 반환한 응답을 markdown 형태로 변환해 표출

GPT API 활용 웹사이트 요약

아마 챗gpt를 비롯해서 UI로 나와있는 채팅 형태의 생성형 AI에게 동일 요청을 했을 땐 이런 일련의 flow가 자동으로 작동될 거다. 

그런 flow를 웹사이트 파싱 및 전처리, 봇 스크래핑 우회 회피 등의 방법을 써가면서 직접 코딩으로 구현해보는 기회였다. 

또한 진짜 챗 GPT 응답 받아보듯이 markdown 형태로 바꿔서 응답을 시각화해봤다. 

무엇보다 GPT를 API 형태로 써보는 데 있어 그 활용법에 조금 더 익숙해지는 순간이었다고 생각한다. 

 

3. DAY 2 - Ollama Local LLM 활용한 웹사이트 요약 기능 구현

https://github.com/kdb1248/LLM-Study_udemy/blob/main/week1/day2%20EXERCISE.ipynb

 

LLM-Study_udemy/week1/day2 EXERCISE.ipynb at main · kdb1248/LLM-Study_udemy

Contribute to kdb1248/LLM-Study_udemy development by creating an account on GitHub.

github.com

 

2번째로 진행한 건 DAY1에 GPT API로 실행했던 웹사이트 요약 flow를 Ollama를 활용해 로컬 LLM으로도 실행하는 것이었다. 

 

첫 번째로 웹사이트 요약 기능 구현 전 Ollama를 활용을 위한 기본 방법을 실행해 봤다.

1. Ollama 일반사용법 써보기 

- 모델명, ollama_api 경로, 헤더를 통한 콘텐츠 타입 지정, 유저 프롬프트 등을 정함

- 이를 정해진 양식에 맞춰 전달

- 이를 통해 모델로부터 응답을 받았음

 

그 뒤엔 OpenAI python library를 활용해, 기존 GPT API를 쓸 때의 형식처럼 

ollama 모델들을 사용해 봤다. 

 

2. OpenAI python library활용한 Ollama사용해 보기

- OpenAI library를 불러오고
- 기존 GPT API를 쓸 때처럼 chat completion을 통해 모델에 요청을 보냄

- ollama를 통해 다른 모델 (ex. 딥시크)를 pull 해와서, 해당 모델에도 요청을 보내봄

확실히 OpenAI library를 쓰는 것이, 작성해야 하는 코드의 "형식" 적인 측면에서 통일감이 있어, 일반적인 ollama 사용법보다 좀 더 개인적으로 수월하게 느껴지는 부분이 있었던 거 같다. 

(한편으로 왜 테크 기업들이 통신 프로토콜/코드 형식 등을 자기네 표준으로 맞추려고 노력하는지 느껴지는 포인트였달까...? 

마치 앤트로픽이 MCP,  구글이 A2A 내놓듯..!)


그 뒤엔 Ollama Local LLM을 활용해서 DAY 1에서 만들었던 웹사이트 요약 기능을 구현해 봤다. 

 

3. Ollama Local LLM 활용한 웹사이트 요약 기능 구현

동일 기능을 GPT API 대신 Ollama를 활용해 Llama 3.2 나 딥시크로 돌려봤었다.

이렇게 local LLM으로도 API cost 없이 기능들을 구현해 볼 수 있다는 걸 경험해 볼 수 있었다. 

 

 

한편으론 직접 실행을 해보니 GPT API를 썼을 때와 달리, 다국어 지원이 완벽하게 되는 느낌은 아니었었다.

 

일례로 나는 시스템 프롬프트 상에서, 웹사이트 요약 시 해당 결과물을 한국어로 바꿔달라고 다음과 같이 요청했었는데
( ex. "when you summarize, please convert whole messages to Korean")

 

이를 반영해 결과물이 한국어로 잘 요약되어서 나왔던 GPT 4o-mini와 달리 Llama 3.2나, 딥시크는 그 결과물이 아쉬웠다. 

(물론 내 프롬프트가 더 구체적이었다면 달라지는 문제일 수도 있지만, 모델 자체의 한국어 지원이 살짝 아쉬운 느낌이었달까)

 

(좌) GPT 4o-mini API로 썼을 때 (우) llama 3.2 로컬에서 썼을 때

 

이렇게 직접 API로 프론티어 모델도 써보고, 로컬에서 오픈소스 모델도 돌려보며 

각 모델의 성능/특징 체감을 직접적으로 느껴볼 수 있는 순간이었다. 

이전까지는 막연하게 프론티어 모델과 오픈소스 모델 성능차이가 난다라고 머리로만 알고 있었다면, 

직접 내손으로 써보면서 아 이런 부분에서 차이가 있구나를 느꼈던 점이 의미가 있었다. 

 


이번 글에선 AI 공부를 시작하게 된 배경과 더불어, 1~2일 차에 GPT API와 Ollama를 활용한 Local LLM으로 각각 웹사이트 요약 기능을 만들어본 내용을 적었다. 

정말 별거 아닌 단순한 기능이라고 느낄 수도 있지만, 그걸 직접 해보면서 머리로만 대략적으로 알고 있던 부분을 좀 더 직접 경험해 볼 수 있는 순간이었다. 

 

다음 글에선 강의 기준 3~5일 차의 공부내용을 작성할 예정이다. 

생성형 AI 관련 개념(parameter, token, context window)에 대해 간략히 공부했던 내용과, AI가 마케팅 브로셔를 만들어주는 기능을 구현해 본 내용으로 찾아오겠다.