본문 바로가기
x

AI 파이프라인 연구 8 - 공중화장실 도우미 GPTS 만들기 2(FastAPI)

by Nomad3795 2024. 1. 17.
반응형

 

오늘은 7편에 이어서 공중화장실 도우미 GPTS 마무리 과정을 포스트 하겠습니다.

 

1. Chat GPT 페이지

Explore GPTs > +Create > Configure 클릭

Name : 원하는 이름

 

Description : 이름 밑에 출력될 텍스트

 

Instructions : 제일 마지막에 작성해야 하니 지금은 생략

(GPTS에게 어떤 알고리즘으로 작동할 것인가? 에 대한 지침을 적는 곳)

 

(이건 알아서 써주길 바랍니다 1편에서 작동 알고리즘에 대해서 설명했으니 충분히 해낼 수 있습니다)

(제일 중요한 게 Instructions인데 스스로 고민해 보고 테스트 후 수정 과정을 거쳐야 됩니다)

2024.01.16 - [Making money with AI] - AI 파이프라인 연구 7 - 공중화장실 도우미 GPTS 만들기 1(FastAPI)

 

 

Conversation starters : 해당 GPTS를 처음 써보는 사람들을 위한 예시 문구를 입력하는 공간

Knowledge : 데이터 파일을 업로드해서 활용할 때 쓰는 공간

 

Capabilities : 웹 브라우징, 달리 이미지 생성, 코드인터프리터 3개 다 체크

 

Actions : 이건 어떻게 정의해야 할지 애매해서 GPT에게 물어봤습니다.

(instructions 만큼 중요한 기능)

 

 

 

 

 

 

 

 

 

 

 

2. Google Maps API

이미지를 클릭하면 해당 링크로 이동합니다.

 

- SerpAPI 사이트에 접속후 회원가입을 진행

 

 

 

-왼쪽 API 리스트에서 Google Mas API 클릭

제가 알려준 내용대로 하면 이 페이지를 볼 필요는 없습니다.

하지만 한번정도는 내용을 확인해 보시는 게 좋습니다.

 

-왼쪽 메뉴에 Yout Account클릭 > Your Private API Key 복사

 

3. GPTS

-Create New Action 클릭 > Authentication : API KEY 클릭 : SerpAPI에서 받은 APIKEY 입력

( 아래에 작성할 스키마에 API KEY가 들어가 있어서 굳이 안 하셔도 작동할 거 같습니다. 저는 넣었습니다)

( 그리고 API키가 노출이 되는데 이건 저한테만 뜨는 건지 다른 사람들도 볼 수 있는 건지 모르겠습니다.)

( 안 넣고 구동이 된다면 그냥 넣지 마세요)

 

-*Schema 입력

openapi: 3.0.0
info:
  title: SerpApi Google Maps API
  version: 1.0.0
servers:
  - url: https://serpapi.com
    description: SerpApi Base Server

paths:
  /search:
    get:
      operationId: searchGoogleMaps
      summary: Perform a search on Google Maps
      parameters:
        - name: engine
          in: query
          required: true
          description: Set to 'google_maps' to use the Google Maps API engine
          schema:
            type: string
        - name: type
          in: query
          required: true
          description: Type of search, either 'search' or 'place'
          schema:
            type: string
        - name: q
          in: query
          description: Query to search
          schema:
            type: string
        - name: ll
          in: query
          description: GPS coordinates for the search (latitude, longitude, zoom)
          schema:
            type: string
        - name: google_domain
          in: query
          description: Google domain to use for the search
          schema:
            type: string
        - name: hl
          in: query
          description: Language for the search results
          schema:
            type: string
        - name: data
          in: query
          description: Search for a specific place
          schema:
            type: string
        - name: place_id
          in: query
          description: Unique reference to a place on Google Maps
          schema:
            type: string
        - name: start
          in: query
          description: Result offset for pagination
          schema:
            type: integer
        - name: no_cache
          in: query
          description: Force fetch new results instead of using cache
          schema:
            type: boolean
        - name: async
          in: query
          description: Submit search to be processed asynchronously
          schema:
            type: boolean
        - name: api_key
          in: query
          required: true
          description: <SerpAPI KEY>
          schema:
            type: string
        - name: output
          in: query
          description: Define the final output format (json or html)
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  search_metadata:
                    type: object
                  search_parameters:
                    type: object
                  search_information:
                    type: object
                  local_results:
                    type: array
                    items:
                      type: object

<SerpAPI KEY> 이 부분을 삭제 후 실제 부여받은 SerpAPI KEY를 넣으세요

 

참고사항 :  SerpApi에서 제공해 주는 무료 API 서치 횟수는 한 달에 100회

 

- *Privacy policy : https://serpapi.com/google-maps-api

 

- 입력 완료시  only me로 저장

 

- 뒤로 가기 진행 후 Create New Action 클릭

 

위에서 만든 Actions 설정은 SerpAPI를 통해서 Google Maps API와 연결하는 설정입니다.

이번에는 우리가 만든 API 서버를 연결해야 합니다.

 

-*Schema 입력

openapi: 3.0.0
info:
  title: FastAPI Toilet Locator
  version: 0.1.0
servers:
  - url: 1편에서 호스팅후 새로 받은 URL
    description: Base server for FastAPI Toilet Locator
paths:
  /get_data/:
    get:
      operationId: getData
      summary: Get Data
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: 
                type: string
  /api/coordinates:
    post:
      operationId: getClosestToilet
      summary: Get Closest Toilet
      parameters:
        - name: latitude
          in: query
          required: true
          schema:
            type: number
        - name: longitude
          in: query
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: 
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
    ValidationError:
      type: object
      properties:
        loc:
          type: array
          items:
            type: string
        msg:
          type: string
        type:
          type: string

 

<1편에서 호스팅후 새로 받은 URL>을 삭제 후 실제 URL을 입력해주세요

1편에서 제가 텍스트 파일로 저장하라고 했던 그 주소입니다.

 

- Privacy policy : https://새로받은주소/docs

 

- only me로 저장

 

- 이제 instructions  문구를 적어보시고 테스트 한 뒤 퍼블릭으로 공개하시면 됩니다.

 

제가 몇 번 테스트해본 결과입니다.

아직 주지번과 부지번 사이에 - 넣는 기능이 구현이 안 되고 있내요

 

여기까지 따라오셨다면 당신은 한 단계 성장하셨습니다.

 

저도 이 프로젝트 만드는데 4일 걸렸습니다. 시행착오 과정이 있었거든요

아무것도 모르는 상태에서 계획을 짜고 정보를 수집하고 에러를 수정하는 과정의  반복이었습니다.

 

Chat GPT가 있어도 정말 힘들었지만 프로젝트를 마무리하니까 잠도 잘 오고 소화도 잘됩니다.😊

여러분도 충분히 하실 수 있으니 도전해 보시기 바랍니다. 파이팅!

반응형