티스토리 뷰

 

벌써 3달전이었다는게 놀라운데, open AI에서 GPT를 이용해 나만의 봇을 만들 수 있는 Builder를 오픈했었다.

 

그때 글을 하나 썼었는데, 이제는 이름을 My GPTs로 명명한 것 같다.

 

GPTs를 쓰면서 나름 괜찮다고 생각했던 것 중 하나가 외부 API를 연동을 지원한다는 것이다.

 

작년 중순부터 Function Calling이란 기능으로 GPT가 텍스트로 작성한 API를 사용할 수 있는 기능을 제공하긴했는데, 개발자가 사용하기엔 좀 불편함이 있었다.(키워드 추출을 잘 못해준다던가, 원하는 매서드에 매핑이 정확히 안된다던가 등등)

 

이걸 GPT 서버에서 API가 필요하다고 판단되면 쓰게끔해준다니, 챗봇의 기능을 비약적으로 향상시킬 수 있다고 생각이 들었다.

 

그래서 써봤는데... 생각보다 더 좋은 성능을 보여줘서 공유해보려고 한다.

 

단, 두 가지를 알아야하는데

 

1. OPEN API 규격에 대해서 알아야한다.

2024.01.20 - [개발/SPRING] - API 문서화 : Kotlin + Open API 3 + Swagger-ui 사용하기(springdoc-openapi v2.x.x)

 

2. SSL/TLS가 적용된 API만이 가능하다.

2024.01.26 - [개발/AWS] - AWS EC2에 SSL/TLS(HTTPS) 인증서 적용기 

 

한번씩 정리했던 내용들이라 생각보다 빠르게 적용해 볼 수 있었다.

 

이 포스팅은, 두 가지가 다 준비됐다고 가정하고 시작한다.

 

1. 간단한 API 준비

@RestController
class WolfController {
    @GetMapping("/wolf-sounds")
    fun getWolf(sound: String): ResponseEntity<Any> {
        val wolf = when {
            sound.contains("아우우") -> "하얀 늑대"
            sound.contains("하우우") -> "파란 늑대"
            sound.contains("와우우") -> "검은 늑대"
            sound.contains("캬우우") -> "빨간 늑대"
            else -> "회색 늑대"
        }

        return ResponseEntity.ok(wolf)
    }
}

 

API 테스트

잘 동작한다.

2. GPTs 준비

 

API가 text/plain 형태로 response를 주기 때문에, 적절한 instructions 작성이 필요하다.

 

그리고 문장에서 어떤 내용을 추출할지도 명시해주면 좋다.

 

3. Actions 작성

만약 swagger를 쓴다면, 편하게 추출이 가능하다.

swagger 페이지 접속 후 밑줄 친 부분을 누르면 openapi 규격의 API를 얻을수 있다.

 

json이 한줄로 작성되어 있기 때문에, json pretty 사이트를 이용하거나 GPT에게 openAPI 규격의 작성을 요청하면 좋다.

 

정 작성하기 어려우면, 요청 객체의 정보, 응답객체의 정보, API 정보를 전달하면서 GPT에게 openAPI 규격에 맞춰 작성해줘 라고 요청하면 잘 만들어준다.

 

그래서 결과물은 아래와 같이 정리된다.

{
  "openapi": "3.0.1",
  "info": {
    "title": "API to determine which wolf is crying.",
    "description": "어떤 늑대의 울음소리인지 판별하는 API.",
    "version": "v0"
  },
  "servers": [
    {
      "url": "[TLS/SSL 인증서가 적용된 URL]"
    }
  ],
  "paths": {
    "/wolf-sounds": {
      "get": {
        "description": "늑대의 울음소리를 전달받아, 어떤 늑대의 울음소리인지 String을 받아옵니다.",
        "tags": [
          "animal-controller"
        ],
        "operationId": "getWolf",
        "parameters": [
          {
            "name": "sound",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "늑대의 종류"
                }
              }
            }
          }
        }
      }
    }
  }
}

operationId는 필수다.

 

description들을 잘 쓸수록 GPT가 잘 알아듣고 답변을 생성해준다.

 

이제 이 json 규격을 Actions의 Schema에 입력해주면된다.

 

 

openAPI 규격에 맞춰 잘 작성했으면 Available actions에 API가 잡힌다.

 

이제 옆 페이지의 Preview에서 테스트를 해보자.

 

초기화면 > 데이터 입력 후 Allow 클릭 > 결과

잘 동작하는게 확인 됐다.

 

이러면 이제 우측 상단의 save를 눌러보자.

 

음.. 배포가 안된다.

 

빼먹은게 하나 있는데, Privacy Policy URL을 입력해줘야 한다.

 

Privacy Policy는 개인정보 처리 약관인데, API가 개인 정보나 API 사용 이력? 같은걸 어떻게 처리할 지에 대한 명시가 필요한 것 같다.

 

 

본인이 제공하는 서비스에서 개인정보처리 방침 약관 링크가 있으면 그걸 넣어주면 된다. 

 

GPT 포럼을 보면 https://openai.com/policies/privacy-policy 이것도 많이 넣어 주는 것 같다.

 

이번 포스팅은 테스트니 https://openai.com/policies/privacy-policy 이걸 사용했다.

 

입력이 끝나면 배포가 가능해진다.

 

Confirm을 누르면 배포가 된다.

GPTs 에서 검색해보면 검색이 잘 된다.

 

 

클릭하면 늑대울음소리판별기로 넘어간다.

 

잘 동작하는걸 확인할 수 있다.

 

회사 계정이라 검색이 안되도록 닫아뒀다.

마치며

얼마지나지 않았는데 몇 십만개의 GPTs가 생성됐다고 한다.

 

구글 플레이스토어 같이 언젠가는 엄청나게 성장할 수 있을지는 잘 모르겠지만, 벌써부터 재미있는 기능이 참 많다.

 

얼마나 커질지는 모르겠지만, 좋은 아이디어가 있으면 시장 선점을 위해 적극적으로 해보면 좋을 것 같다.

 

문제는 나는 늘 아이디어가 없다 ㅠㅠ

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함