GPTs로 경제 뉴스 챗봇 만들기

소개

안녕하세요, 저는 GPTs로 경제 뉴스를 크롤링하여 리스트업해주는 챗봇을 만들었습니다.

매주 경제 스터디를 하는데, 뉴스를 찾고 고르는 것만으로도 시간이 오래 걸리더라구요.

그래서 키워드로만 검색하더라도 원하는 주제의 뉴스들을 리스트업 할 수 있는 챗봇을 제작했습니다.

진행 방법

  1. GPT 만들기 초기 세팅:

    1. GPT 만들기에서 '경제 뉴스 스크랩을 하는 챗봇'을 제작하고 싶다고 입력했습니다.

    2. 초기 구성을 바탕으로 아래 템플릿에 맞게 지침을 만들어 달라고 GPT에게 물어봤습니다.

#Role (역할):
사용자의 검색어를 기반으로 경제 관련 뉴스 데이터를 제공하고 요약, 저장 기능을 지원.
최대 10개까지 리스트업. 

#Context (맥락):
사용자는 특정 키워드의 최신 뉴스를 빠르게 검색하고 결과를 활용(요약/저장)하고자 함.

#Dialog Flow (대화 순서):
시작: "검색어를 입력해주세요."
검색: 입력된 키워드로 뉴스 검색 후 결과 제공.
추가 옵션: 요약, CSV 저장, 트렌드 분석 등 제공.
종료: 다른 검색 요청 또는 프로그램 종료 안내.

#Guideline (지침):
친근하고 명확한 대화 유지.
실시간 검색 결과와 저장 옵션 제공.
검색 실패 또는 오류 시 적절히 안내.
[A를 하기 위함]과 같이,  “-함.”, “-임.” 등 “-ㅁ/-음”체로 문장을 마무리.

#Constraints (제약사항):
뉴스 요약은 API 데이터에 한정.
사용자 데이터 비공개 유지.

  1. GPTs Action 세팅:

    1. API 연동:

      1. 팁: 뉴스를 크롤링하려면 api를 연동해야 되는데요, 네이버 developers에 있는 api는 api key를 2개 넣어야 하는데, 이건 Open AI에선 지원하지 않는다고 하여 Serp api를 활용했습니다.

      2. 팁2: Serp api에 있는 cURL을 Open AI Schema로 변환해서 action에 입력해보니 invalid url이라는 얼럿이 떠서 유튜브(하단 참조) 참고하여 코드 작성했습니다.

        1. 구글 검색 API: https://serpapi.com/search-api

        2. 네이버 검색 API: https://serpapi.com/naver-search-api

        3. 유튜브 검색 API: https://serpapi.com/youtube-search-api

      3. 다음은 제가 입력한 schema 전문입니다.

    {
      "openapi": "3.1.0",
      "info": {
        "title": "Mulitple Search API",
        "description": "API for searching Google, Youtube, Naver using specific queries.",
        "version": "v1.0.0"
      },
      "servers": [
        {
          "url": "https://serpapi.com"
        }
      ],
      "paths": {
        "/search": {
          "get": {
            "summary": "Search Naver, Google, or Youtube",
            "operationId": "searchEngine",
            "description": "Retrieves search results from Naver, Google, or Youtub for a given query.",
            "parameters": [
              {
                "name": "engine",
                "in": "query",
                "description": "Search engine to use, set to 'naver' or 'google' or 'youtube'.",
                "required": true,
                "schema": {
                  "type": "string",
                  "enum": [
                    "naver",
                    "google",
                    "youtube"
                  ],
                  "example": "naver"
                }
              },
              {
                "name": "query",
                "in": "query",
                "description": "Query to search for on Naver.",
                "required": false,
                "schema": {
                  "type": "string"
                }
              },
              {
                "name": "search_query",
                "in": "query",
                "description": "Query to search for on Youtube.",
                "required": false,
                "schema": {
                  "type": "string"
                }
              },
              {
                "name": "q",
                "in": "query",
                "description": "Query to search for on Google.",
                "required": false,
                "schema": {
                  "type": "string"
                }
              },
              {
                "name": "api_key",
                "in": "query",
                "required": true,
                "schema": {
                  "type": "string",
                  "enum": [
                    "본인 api key 입력"
                  ]
                }
              }
            ],
            "responses": {
              "200": {
                "description": "Successful response with search results.",
                "content": {
                  "application/json": {
                    "schema": {
                      "type": "object",
                      "properties": {
                        "results": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
한국어 텍스트가 포함된 검은 화면의 스크린샷

결과와 배운 점

  1. ChatGPT는 의외로 오류가 많다. GPT가 만든 코드를 구글 colab에서 실행해봤는데 오류가 떴다. 그러나 다시 GPT한테 오류 수정해달라고 코드 던지면 알아서 수정해준다. (오류가 있다고 말하지 않고, 코드만 입력해도 오류값 바로 수정해줌)

  2. 그래도 해결 안 될 때는 구글링하면 웬만한 오류 해결 방안을 찾을 수 있다.

  3. GPTs로 챗봇을 만들기 위해서 이렇게 했지만, 구글 스프레드 시트로 정리한 뉴스를 특정 시간대에 이메일로 발송해달라는 트리거를 설정하면 더 편할 것 같다.

도움 받은 글 (옵션)

처음 GPTs > Action에서 Schema를 세팅했을 때 계속 invalid URL이라고 뜨더라구요. 검색하다 찾은 유튜브 영상인데, 도움이 많이 됐습니다.

https://youtu.be/ZUt5-TTXLX0?si=vvStwMkAyDWhCHlo

5
3개의 답글

👉 이 게시글도 읽어보세요