brunch

You can make anything
by writing

C.S.Lewis

by being cognitive May 27. 2024

NewsPick.ai ('23.5월)

ChatGPT 기반 Toy Project #3

'22.11월에 ChatGPT가 대중에 공개된 이후 AI 대생성시대가 열렸습니다. 이후로 워낙 빠른 발전 속도로 인해 그 트렌드에 올라타기는 커녕 그 트렌드를 읽는 것 조차 버거운 하루하루인 것도 사실입니다만,

저는 최근 AI를 거울삼아 우리 인간에 대한 이해가 보다 깊어지고 있는 경험이 소중하다고 느낍니다. 

이에 그동안 느꼈던 그리고 앞으로 느낄/경험할 감정들을 기록해놓기 위해, 과거 페이스북에 남겨놨던 노트들을 정리해두고자 합니다. 


#'23.5월 만들었던 ChatGPT api 기반 토이프로젝트를 공유합니다.



안녕하세요...! 주말 입코더답게, 이번에도 새로운 토이 프로젝트 NewsPick.ai를 들고 찾아왔습니다... (이제는 포스팅 하나를 위해서 서비스를 만드는 기분...?) 이번엔 서비스라기보다는, 하나의 실험 정도로 봐주시면 좋겠습니다!


[ 실험명 : 뉴스픽AI ] 

https://NewsPick.AI 


[ 풀고싶은 문제 ]


뉴스에 Clickbait가 너무 많음. (e.g. "경악!", "충격!") 클릭량이 아닌, 기사 자체의 품질을 바탕으로 필터링된 뉴스를 볼 수 없을까?


[ 배경 ] 


- 반년 가까이 기술 뉴스만 따라가다 보니까, 세상 뉴스에 많이 어두워진 느낌이 들었습니다.

- 그런데, 막상 뉴스를 켜보면 수많은 Clickbait(낚시기사, 어그로...)들에 머리가 어질어질합니다. 물론, 알고리즘의 이름 하에, 클릭 기반의 비즈니스를 운영하게 된 언론사들의 상황도 이해합니다. 


[ 솔루션 ]


- ChatGPT와 같은 생성형AI시대를 맞은 지금, 뉴스 콘텐츠를 보여주는 방식이 반드시 클릭량 기반의 추천일 필요는 없다고 생각합니다. AI가 미리 기사를 읽어주고, 상호 합의된 기준 하에 기사를 먼저 평가해서 저에게 필터된 기사만 보여주는건 어떨까요?


 (1) "양질"의 기사에 대한 기준을 세운다. > (2) 뉴스기사를 가져온다. > (3) ChatGPT가 기사를 읽고 평가해서 필터링된 기사만 보여준다.


[ 의사결정 사항 ]


  - "양질"의 기사에 대한 기준 또한 AI와 함께 세웠습니다 (우리말로 만들었을 때에 저도 모르게 나올 수 있는 bias 또한 제거하기 위해, 의도적으로 영어로 진행하였습니다.) : 'Relevance', 'Importance', 'Novelty', 'Clarity', 'Objectivity', 'Trustworthiness', 'Insightfulness'.


[ 아키텍처 ]


  - 프론트엔드: CloudFlare 호스팅, 그리고 Vue.js프레임워크 처음 써봤는데 좋네요.

  - 백엔드 : Google Cloud Run + Cloud SQL

  - 뉴스 기사 API 

    . newsapi.org (하루에 100건 호출 무료)

    . Naver Open API (하루에 25,000건 호출 가능)

  - 생성형 AI : ChatGPT API (gpt-3.5-turbo) 


[ 한계 ] 

  - 크롤링같은 방법을 쓰지않고 API로 뉴스 기사를 가져올 수 있는 방법은 생각보다 많지 않았습니다. 그래서, newsapi.org 와 Naver Open API를 사용해서 기사의 '제목'만을 가져왔습니다.

  - 개인 비용으로 진행하는 실험 프로젝트이므로, 호출당 검토 기사 제목의 개수 또한 20개로 제약하고, 이 중 3개의 기사 제목을 선정하는 방식을 택했습니다. 


[ 같이 나누고 싶은 화두 ]


  - AI의 대중화에 의해, 서비스 공급자들만 AI를 사용하는 시대는 금방 사라질 듯. 이와 같이 서비스 소비자들 입장에서도 AI를 개인 비서로 활용하는 사례가 늘어날 것.


  - 위와 같은 이런저런 명분을 더 붙일 수 있지만, 어쨌건 AI에 의해 우리 혹은 우리의 산출물이 평가받는 시대를 우리는 어떻게 받아들일것인까? (혹은, 이미 우리는 AI면접을 보고 있는데, 이미 받아들인걸까?)


  - 개인적으로는 AI 수용의 임계점은 "이러느니 차라리"가 기준이 되지 않을까?라는 생각을 많이 하고 있습니다. (사람들의 클릭량을 바탕으로 알고리즘이 동작하니까, 뉴스가 Clickbait로 변질되어버린다. "이러느니 차라리" 클릭량에 영향 받지 않고 모든 뉴스 콘텐츠를 AI가 상호 합의된 기준으로 '공.정.'하게 평가하는게 '차라리' 낫지 않은가?)


[ 기타 개발 후기 ]


  - 이번에는 ChatGPT가 약70%, 제가 그래도 이번엔 30%는 개발을 했습니다. 아무래도 몇번 ChatGPT랑 같이 일하다보니까, 어디까지 맡겨도 될지... 어느 순간부터 검색을 해야할지 감이 오더라구요.


  - 언제나 배포가 가장 힘드네요 ^^; Google Cloud SQL은 이번에 처음 써봤는데, 네트워크 설정 등 하면서 또 배우는게 많았습니다.


  - CHATgpt여서 모든 컨셉을 CHAT으로만 사용할 필요는 없습니다. 지식 노동의 모든 것을 실행시킬 수 있으며, HTML테이블 혹은 JSON과 같은 특정 포맷으로 디테일하게 규약하면 그만큼의 아웃풋을 일정하게 만들어냅니다. 


* 이번에 제가 사용한 System Prompt에서도 JSON으로 리턴값을 받았습니다. : `Your name is NewsPickAI. We never want our users to waste their time on low-quality news.


    You will be given ${fetched_news_titles.length} news titles in the format of <id>news_id</id><title>title</title>.


    Read each news title and pick ${numTargetNews} most valuable news titles by your evaluation of using the following criteria shown in triple quotes. Assign scores between 0.00 (lowest) and 10.00 (highest) per each criteria. 


    """(A) Relevance, (B) Importance, (C) Novelty, (D) Clarity, (E) Objectivity, (F) Trustworthiness, and (G) Insightfulness.""" 


    For the ${numTargetNews} top news chosen by you, make your response in only in JSON format with the following keys : news_id(don't create another id, just use the news_id you got from <id>news_id</id>), A, B, C, D, E, F, G, and Overall_Rationale.


    Only reply with JSON format like the following, without any other explanations.`



* 이미 멈출 수 없는 AI 전력 질주는 시작되었습니다. 수많은 천재 연구자들이 굉장히 빠른 시간 안에 상상을 초월하는 기술들을 만들어낼텐데요,


저도 저 나름대로 제가 중요하다고 생각하는 화두들을 이런 식의 서비스화 예시 등을 통해서 계속 던질 수 있도록 노력하겠습니다. 


모두들 화이팅입니다.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari