사용자 정의 GPT 액션 구축하기
목차
개요
안녕하세요! 이번 글에서는 개인용 GPT 작업 환경을 설정하고 사용자 정의 API를 구축하는 방법에 대해 소개하려고 합니다. 많은 정보가 없어 사용자 정의 GPT 동작과 API를 설정하는 방법에 대한 정보가 부족하다는 사실을 알게 되어 직접 만들고 설정하는 방법을 보여드리려고 합니다. 이 글을 통해 빠르게 사용자 정의 GPT 애플리케이션을 구축하고 GPT가 해당 API로부터 정보를 송수신하도록 설정하는 방법을 알아보겠습니다. 이 작업은 쉽고 재미있을 뿐만 아니라 이 기초적인 지식을 얻은 후에는 다른 목적에 적용할 수도 있습니다. 날씨 정보를 불러오기 위해 다른 API에 접근하거나 다른 인공지능에 접근하려는 앱을 만들고 싶을 수도 있습니다. 어떤 목적이든 원칙은 동일하며, 오늘 여기서 배운 지식을 해당 목적에 적용할 수 있을 겁니다. 그러면 시작해봅시다.
API 설정
우선, GPT 동작 빌더라고 하는 사용자 정의 GPT 중 하나를 활용하려고 합니다. 이 동작 빌더에는 빠른 API 응용 프로그램의 예제가 포함되어 있으며, 우리는 이를 사용하여 사용자 정의 GPT 동작을 구축합니다. 먼저 동작 빌더로 이동하는 대신 아래에 있는 버튼을 클릭하기만 하면 됩니다. API를 설정하는 이유는 바로 사용자 정의 GPT 구성 화면에 있습니다. 이 화면으로 이동하면 어떤 것을 요구하는지 알 수 있습니다. 그러나 이 요구사항을 직접 작성해야 하는 노력을 줄이기 위해 Fast API와 Pedantic을 사용하여 전부 자동 생성하도록 할 것입니다. 따라서 이 작업을 테스트하기 위해, 필요한 라이브러리를 설치하기 위해 파이썬 가상 환경에서 개발 서버를 준비합니다.
Fast API를 사용하는 이유
Fast API를 사용하는 이유는 바로 사용자 정의 GPT 구성 화면에 있습니다. 이 화면으로 이동하면 어떤 것을 요구하는지 알 수 있습니다. 그러나 이 요구사항을 직접 작성해야 하는 노력을 줄이기 위해 Fast API와 Pedantic을 사용하여 전부 자동 생성하도록 할 것입니다.
개발 서버 설정
API 애플리케이션을 실행하기 위해 파이썬 가상 환경에서 개발 서버를 설정해야 합니다. 먼저 새로운 가상 환경을 설정한 다음, 필요한 모든 라이브러리를 설치하기 위해 pip을 사용합니다. 여기에는 Fast API, Uvicorn, Pedantic, Requests 등이 필요합니다. 모든 패키지를 설치한 후 새 폴더를 만들고 그 안에 app.py 파일을 만들어 GPT 액션 빌더에서 가져온 코드를 붙여넣을 것입니다. 코드에는 몇 가지 중요한 사항이 있으며, 첫 번째로 상단에 있는 URL에서 API 서버 엔드포인트 URL을 올바르게 설정해야 합니다. 그렇지 않으면 GPT가 API 위치를 알 수 없습니다. 다음으로 중요한 것은 Pedantic 클래스와 설명입니다. 이것은 이전에 암시한 중요한 부분인데, 이를 통해 Chat GPT에게 적절한 입력 및 출력 형식을 알려줍니다. Chat GPT는 이 설명을 매우 중요하게 생각하며, 사실 지시 사항보다도 더 중요하게 여깁니다. 따라서 GPT가 이해할 수 있는 방식으로 정확하고 간결한 설명이어야 합니다. 마지막으로 각 API 엔드포인트에 대해 독스트링을 작성해야 합니다. OpenAI에서는 독스트링 길이를 300자 이하로 제한하기 때문에 독스트링을 작성할 때 오류가 발생할 수 있습니다. 이럴 경우 응용 프로그램에서 수정해야 할 부분을 알 수 있습니다. 이제 모든 작업을 마친 후 Uvicorn을 사용하여 개발 서버를 실행해 봅시다.
앱 개발
서버를 실행하기 위해 Uvicorn을 실행합니다. 이 때 개발 단계에서 유용한 reload 플래그를 사용함으로써 응용 프로그램 변경사항을 저장하면 자동으로 서버가 다시로드되게 할 수 있습니다. 0.0.0.0을 사용하여 모든 인터페이스에 바인딩하도록 지시하여 로컬 컴퓨터 외부에서도 접근할 수 있도록 합니다. 기본 포트인 8000번에 연결합니다. 추후에 다른 API가 실행될 경우 이 포트 번호를 증가시키거나 다른 포트 번호로 변경해야 할 수 있습니다. 이제 서버가 실행되었으므로 Fast API에서 제공하는 Swagger와 같은 도구를 사용하여 API를 테스트해 봅시다. 이 도구는 많은 API 엔드포인트가 필요한 경우에 유용한 참조 자료로, 입력 및 출력 형식을 이해할 수 있도록 설명서를 자동으로 생성해 줍니다. 그러나 Chat GPT가 이해할 수 있도록 바꾸어야 할 것입니다. "/docs" 대신 "/openapi.json"을 입력하면 완전히 규범적인 Open API 스키마를 얻을 수 있습니다. 스키마에는 우리가 사용할 수 있는 모든 필드가 자동으로 생성되므로 우리에게 필요한 핵심 필드를 얻을 수 있습니다. 그러나 Chat GPT 테스트 이전에 API를 테스트하고 정상적으로 작동하는지 확인할 필요가 있습니다. 이를 위해 Postman이라는 도구를 사용하면 좋습니다. Postman은 API 및 관련 애플리케이션을 테스트하는 데 매우 유용한 도구입니다. 우리의 앱을 테스트하기 위해 Postman을 시작할 때 할 일은 단 몇 가지인데, 먼저 URL 상자에서 "POST"로 설정합니다. 문서에서 우리가 설정한 엔드포인트가 "POST" 메서드를 요구하기 때문입니다. 그런 다음 해당 API를 실행하는 서버 주소와 포트를 입력합니다. API 문서를 살펴보면 어떻게 사용되는지에 대한 모든 정보를 확인할 수 있습니다. 예를 들어, "fetch HTML" 엔드포인트는 URL 정보가 포함된 Json을 "POST" 방식으로 전송하도록 요구합니다. 이러한 Json을 보내려면 Postman에서 다음과 같이 헤더를 설정해야 합니다. 헤더의 "Content-Type"을 "application/SL+Json"으로 설정해야 오류를 피할 수 있습니다. 그러나 Chat GPT가 통합되면 자동으로 헤더를 전송할 것이므로 신경 쓸 필요가 없습니다. 핵심은 "Body"를 "Raw"로 설정하고 문서에서 제공된 예제 Json을 입력하는 것입니다. 이렇게 하고 "Send" 버튼을 클릭하면 우리의 앱이 작동하는지 확인할 수 있습니다. 이 예제는 매우 기본적인 내용이며, 응답에서는 필요하지 않은 많은 내용이 포함되어 있습니다. GPT는 토큰이라는 제한된 기억 용량을 가지고 있는데, 이 토큰을 불필요한 HTML 태그에 낭비하고 싶지 않습니다. 따라서 어떻게 하면 이것을 필터링할 수 있는지 알려드리겠습니다.
API 테스트
마지막 테스트를 하기 전에 API를 테스트하여 정상적으로 작동하는지 확인하는 것이 좋습니다. 이 작업은 Postman을 사용하여 가장 편리하게 할 수 있습니다. 테스트용으로 사용한 URL이므로 Postman을 열면 할 일은 몇 가지 단계만 거치면 됩니다. 먼저 URL 상자에 Postman이 endpoint에 POST 메소드를 요청해야한다는 점을 설정합니다. 전달해야하는 URL은 API 엔드포인트를 나타내며, 위에서 보았듯이 "/docs"를 참고하면 해당 API의 모든 정보가 제공됩니다. 우리의 경우 "fetch HTML" 엔드포인트는 POST 방식으로 Json을 요구하며 이 Json에는 처리할 URL이 포함되어 있어야 합니다. Json 전송을 위해 Postman에서 다음과 같이 설정해야 합니다. 헤더에서 "Content-Type"을 "application/SL+Json"로 설정하면 오류가 발생하지 않습니다. 그런 다음 메시지 바디를 Raw로 설정한 다음 문서에서 제공된 예제 Json을 붙여넣습니다. 이제 전송 버튼을 클릭하면 우리의 응용 프로그램이 작동하는지 테스트할 수 있습니다.
HTML 태그 필터링
이 예제는 매우 기본적인 내용이며, 응답에서는 필요하지 않은 많은 내용이 포함되어 있습니다. 이를 개선하기 위해 엔드포인트를 개선하여 이러한 내용 중 일부를 필터링하도록 하겠습니다. 동일한 사용자 정의 GPT 액션 빌더를 사용하여 HTML 태그와 불필요한 공백을 필터링하는 것으로 간단하게 해결할 수 있습니다. 필요한 라이브러리도 추가해야 하므로 간단한 전환 작업을 진행한 다음 종속성을 추가하고 코드를 붙여넣습니다. 전반적인 작업 흐름은 다음과 같습니다. 우선 Chat GPT에게 HTML 태그를 필터링하고 불필요한 공백을 제거하라고 요청합니다. 그 결과로 나오는 코드 출력을 살펴보면 두 개의 새로운 라이브러리가 추가되어 있는 것을 알 수 있습니다. 이전 코드에서 누락된 추가 패키지를 가상 환경에 설치해야 합니다. 이제 새 코드를 붙여넣고 저장하면 uicorn이 응용 프로그램을 자동으로 다시로드할 것입니다. 이 과정은 개발 단계에서 매우 편리하며, vs code와 같은 코드 편집기에서 작업하는 것도 좋습니다. 기본적인 작업이 완료되었다면 Postman에서 테스트해 보겠습니다. "Send" 버튼을 클릭하면 개선된 응답을 확인할 수 있습니다. 이제 GPT가 소비할 데이터 양이 더 많기 때문에 훨씬 관리하기 쉬운 양의 데이터를 받을 수 있으며, 이를 통해 API 엔드포인트를 만족스럽게 구축했다고 할 수 있습니다.
API 인증과 보안
API 엔드포인트를 보안하기 위해 Apache와 같은 무언가로 프론트엔드를 설정해야 할 수도 있습니다. 이렇게 하면 TLS 및 SSL을 지원할 수 있으므로 GPT가 암호화되지 않은 포트로 통신하지 않을 것입니다. 요즘은 기본적인 보안 요구사항이기 때문입니다. 보안에 대해 이야기할 때 API 엔드포인트에 인증과 같은 종류의 보호 기능을 설정하는 것이 중요할 수도 있습니다. 이 예제에서는 간단하게 유지하고자 하며, 서버 구성에서 Apache를 사용하여 전송된 트래픽이 로컬 호스트 리스너를 통해 GPT에게 도달하도록 설정할 것입니다. 또한 이것이 당장 필요한 것은 아닙니다. 도커 컨테이너나 Heroku와 같은 플랫폼에서 호스팅할 수도 있습니다. 이 예제와 같이 Linux 서버에서 직접 호스팅하고 있는 경우 시스템 D 서비스 등을 설정하여 부팅시 API를 시작하도록 설정할 수도 있습니다. 일단은 터미널에서 앱을 실행하려고 합니다. 그러기 전에 앱의 URL을 Chat GPT가 연결할 URL로 업데이트해야 합니다. 이를 위해 앱을 시작하고 Chat GPT에서 인터넷을 통해 앱에 트래픽을 보낼 준비를 마쳤습니다. 이제 API에 최종 테스트를 한번 더 해보며 Chat PT에 제공할 최종 URL을 생성하기 위해 Open API 스키마를 로드합니다. 이 때 주의할 점은 이러한 리버스 프록시를 사용하면 SL Docs URL이 제대로 작동하지 않는 것 같다는 것입니다. 아마도 간단하게 수정할 수 있는 해결책이 있을 것이지만, 저희는 이 단계에서 SL Docs가 필요치 않습니다. 작동해야 하는 것은 Open API 스키마 URL이며, 공식 Open API 스키마이므로 올바른 서버를 제대로 지정하는지 확인해야 합니다. 그러면 Chat GPT와의 최종 테스트를 하기 위해 이름과 명령어를 설정하고 저장하세요. 아래 예제를 실행하여 테스트해 보세요. "Please fetch and analyze https://colab.research.google.com/gps.HTML"를 입력하세요. 그런 다음 허용해주고 우리의 앱이 Chat GPT에서 요청을 받아들이는지 확인해 보겠습니다. 요청을 받아들이는 동안 잠시 기다리시면 됩니다. 이제 로컬 머신에 대한 요청이 표시되며 일련의 성공적인 결과가 표시될 것입니다.
결론
이렇게 GPT를 사용자 정의하고 API를 설정하는 방법을 알아보았습니다. 우리는 필요한 설명, 독스트링, 데이터 입력 및 출력 형식에 대한 모든 정보가 포함된 애플리케이션을 만들었습니다. 인터넷에서 액세스할 수 있는 안전한 HTTPS로 작동하는 테스트된 API가 준비되었습니다. Open API 스키마도 올바른 것처럼 생성되었습니다. 지금까지의 모든 작업은 Chat GPT를 설정하고 GPT를 구축하는 일만 남았습니다. 마지막으로, 이 작업을 수행한 후에는 동일한 프로세스를 반복하거나 새로운 API 엔드포인트를 추가하면 됩니다. 가장 편리한 기능 중 하나는 개발 중에 원하는 테스트 버튼을 누르는 것입니다. 이를 통해 테스트할 액션 옆에 있는 버튼을 클릭할 수 있으며, 개발 단계에서 매우 유용합니다. 이 스키마는 GPT에 대한 입력 및 출력을 알려주는 역할을 한다는 것을 유념하세요. 데이터 부분에 대한 모든 사용법을 기술하지만, 특정한 동작에 대한 지침은 지시 사항 상자에 작성해야 합니다. 데이터가 어떻게 행동해야 하는지, 무엇을 해야 하는지, 어떻게 표시되어야 하는지와 같이 특정한 지침은 문서에 기록해야 합니다. 마지막으로, 공개적으로 GPT를 되도록 설정할 계획이라면 개인정보취급방침을 설정해야 합니다. 공개하려면 Privacy URL을 웹사이트 URL로 설정해야 하며, 이외에도 OpenAI가 정책에서 제한하는 내용을 준수해야 합니다. 이 예제를 그대로 사용하여 웹을 자유롭게 탐색할 수 있는 GPT를 구축하기는 일반적으로 대부분의 웹사이트에서 허용하지 않기 때문에 도움이 되지 않습니다. 또한 필요한 경우 제한된 범위의 값도 하드코딩하여 입력을 제한할 수 있으며, 지침에 입력하지 않은 경우에도 GPT에게 거짓 정보를 전달하기 쉽기 때문에 조심해야 합니다. 마지막으로 이 중요한 내용을 기억하시고 Chat GPT와의 최종 테스트를 진행하기 전에 애플리케이션에 대한 첫 번째 API 테스트를 수행하는 것이 좋습니다. 이제 여러분은 모든 준비를 마쳤습니다. 이 기술을 적용하여 멋진 애플리케이션을 만들기를 기대합니다. 미래에 이와 유사한 동영상을 더 제작할 예정이므로, 영상에 대한 좋아요와 구독을 부탁드립니다. 또한, Twitter에서 @cyri AI를 팔로우하시면 더 많은 정보를 얻을 수 있습니다. 이 글이 여러분에게 도움이 되었기를 바랍니다. 다음에 더 좋은 작품을 만나보겠습니다. 감사합니다.
하이라이트
- 사용자 정의 GPT 앱 개발을 위한 API 설정
- Fast API를 사용하여 API 구축
- 필수 라이브러리 설치와 개발 서버 설정
- API 테스트와 Postman 활용
- HTML 태그 필터링을 통한 데이터 정제
- API 인증과 보안 설정
- Chat GPT와 서버 통합 방법
- 최종 앱 배포를 위한 준비
FAQ
Q: API를 선택할 때 Fast API를 사용하는 이유는 무엇인가요?
A: Fast API는 사용하기 쉽고 빠른 속도로 개발할 수 있는 강력한 웹 프레임워크입니다. 또한, 자동으로 API 문서를 생성해주어 개발과 문서화 작업을 동시에 진행할 수 있습니다.
Q: API를 구축할 때 HTML 태그를 왜 필터링해야 하나요?
A: HTML 태그는 GPT의 토큰을 낭비할 수 있는 불필요한 정보입니다. 필터링을 통해 GPT가 효율적으로 데이터를 처리하고 불필요한 HTML 태그를 제거할 수 있습니다.
Q: API 보안에 대해 어떤 점을 고려해야 하나요?
A: API 보안은 중요한 문제이며, 암호화된 연결을 지원하는 프론트엔드 서버를 구축하고 API 엔드포인트에 인증 메커니즘을 추가하여 보호해야 합니다.
참고 자료