GPT 작업에서 사용자 인증: 개인 일정 보조 도우미 구축
사용자에게 맞춤형 경험을 제공하는 GPT를 만들어보세요. 이 튜토리얼에서는 OAuth를 사용하여 개인 일정 보조 GPT를 만드는 방법을 보여줍니다.
GPTs는 특정 사용 사례에 맞추어 ChatGPT 경험을 깊이 있게 맞춤화할 수 있는 훌륭한 도구입니다. 또한, actions을 사용하여 서비스와 직접 상호작용할 수 있도록 해줍니다.
이 튜토리얼에서는 OAuth를 사용하여 GPT 작업에서 사용자를 인증하는 방법을 보여줍니다. 사용자가 GPT에서 직접 이벤트를 관리할 수 있는 개인 일정 보조 도우미를 만들 것입니다.
최종 GPT는 다음과 같습니다:
왼쪽은 GPT와의 사용자 상호작용, 오른쪽은 사용자의 일정을 보여주는 웹 앱입니다. 이 접근 방식으로 가능한 더 많은 가능성들이 있습니다.
- 사용자의 이메일과 뉴스를 요약하는 개인 비서 만들기.
- 대화를 떠나지 않고 항공편을 검색하고 예약하도록 하는 GPT 만들기.
이 튜토리얼의 결과물과 리소스:
- 최종 GPT는 ChatGPT에서 사용할 수 있습니다.
- 데모 웹 앱은 gpt-agenda.fordemo.app에서 이용할 수 있습니다.
- 전체 코드는 GitHub에서 확인할 수 있습니다.
사전 준비
- 이 문서를 작성할 당시, GPT는 ChatGPT Plus 이상 사용자에게만 제공됩니다.
- Logto Cloud 테넌트. 무료로 가입하세요.
- 제어할 수 있는 도메인. 이 도메인은 GPT와 Logto Cloud 모두에 사용됩니다.
- REST API를 노출할 수 있는 웹 앱. 이 튜토리얼에서는 미리 구축된 일정 앱을 사용합니다.
GPT 생성 및 구성
GPT 생성
- ChatGPT를 열고, 왼쪽에서 Explore GPTs 버튼을 클릭한 다음, 오른쪽 상단의 Create 버튼을 클릭합니다.
- 새로운 GPT 페이지에서 GPT의 이름과 설명을 입력합니다. 예를 들어, Agenda Assistant 및 Manages your agenda directly in the conversation.
- GPT의 로고를 업로드하거나, 플러스 아이콘을 클릭해서 DALL-E로 생성할 수 있습니다.
작업 생성
하단의 Create new action 버튼을 클릭합니다. 새로운 페이지에는 세 가지 섹션이 있습니다:
- 인증: 사용자 인증 구성을 할 수 있는 섹션입니다. 지금은 None으로 설정해 놓습니다.
- 스키마: 작업의 REST API를 정의하는 YAML 형식의 OpenAPI 스키마입니다. 스키마가 자세할수록 GPT가 사용자의 의도를 더 잘 이해합니다.
- 개인정보 보호정책: 작업의 개인정보 보호 URL입니다.
이 튜토리얼에서는 사용자의 일정을 관리하기 위한 REST API를 제공하는 미리 제작된 일정 앱을 사용합니다. OpenAPI 스키마는 GitHub repo에서 찾을 수 있습니다.
스키마를 붙여넣으면 GPT는 자동으로 엔드포인트를 인식하고 테이블을 생성해 줍니다. Test 버튼을 눌러 엔드포인트를 테스트할 수 있습니다.
GPT는 API 호출을 수행하기 위한 허가를 요청할 것입니다. Allow 또는 Always Allow 버튼을 눌러 계속 진행합니다.
엔드포인트가 인증을 필요로 하는 경우, 위와 같은 오류 메시지를 볼 수 있습니다. 서버 로그를 확인하면 GPT가 인증 정보 없이 요청을 보내고 있음을 알 수 있습니다.
Logto Cloud에서 사용자 지정 도메인 구성
ChatGPT는 작업과 인증 엔드포인트가 동일한 루트 도메인에 있어야 합니다. 예를 들어, 작업의 엔드포인트가 https://api.example.com/
이라면, 인증 엔드포인트는 https://auth.example.com/
과 같은 형식이어야 합니다.
이 요구 사항에 맞추기 위해 Logto Cloud에서 사용자 지정 도메인을 구성해야 합니다. Logto Cloud에 로그인한 후, 왼쪽의 Settings 탭을 클릭하고, 상단의 Domains 탭을 클릭합니다.
일반적으로 구성을 완료하는 데 몇 분밖에 걸리지 않습니다. 완료되면 사용자 지정 도메인이 사용 중이라고 표시됩니다.
Logto Cloud에서 앱 생성하기
OAuth 인증을 수행하기 위해 Logto Cloud에서 앱을 만들어야 합니다. Logto Cloud에 로그인한 후, 왼쪽의 Applications 탭을 클릭한 다음 오른쪽 상단의 Create application 버튼을 클릭합니다.
새 페이지에서 하단의 "Create app without framework"를 클릭합니다. "Traditional web"을 애플리케이션 유형으로 선택하고 앱의 이름을 입력합니다. 예를 들어, GPT Agenda Assistant. 그런 다음, 하단의 "Create application"을 클릭합니다.
앱이 생성되면, ENDPOINTS & CREDENTIALS 카드로 이동합니다 (약간 스크롤해야 할 수 있습니다). Show endpoint details를 클릭하여 정보를 확장합니다.
작업 구성
이제, GPT 작업 페이지로 다시 이동하여 Authentication 섹션을 클릭하고, OAuth를 선택합니다. 양식 항목은 Logto Cloud의 정보와 다음과 같이 일치합니다:
- 클라이언트 ID: Logto Cloud의 App ID
- 클라이언트 비밀: Logto Cloud의 App secret
- 인증 URL: Logto Cloud의 Authorization endpoint
- 토큰 URL: Logto Cloud의 Token endpoint
Scope 필드에는 openid offline_access
를 입력합니다; 톡스익스체인지방법 `` 필드에서는 기본값을 유지합니다 (POST 요청).
마지막으로, 하단의 Save 버튼을 클릭합니다.
Logto 앱 구성 업데이트
GPT 구성 페이지로 돌아가면, 이제 Actions 섹션 아래에 Callback URL 필드를 볼 수 있습니다.
해당 URL을 복사한 다음, Logto Cloud 앱 페이지로 돌아갑니다. Redirect URIs 섹션에 URL을 붙여넣습니다.
이제 하단으로 스크롤하여 항상 리프레시 토큰 발급을 활성화하여 GPT의 리프레시 토큰 지원을 활성화합니다. 이는 사용자들이 GPT에서 더 오랜 기간 동안 로그인 상태를 유지할 수 있도록 도와줍니다.
그런 다음, 하단의 Save 버튼을 클릭합니다.
체크포인트: OAuth 흐름 테스트하기
이제 준비가 완료되었으니, OAuth 흐름이 예상대로 작동하는지 확인하기 위해 테스트를 해봅시다. GPT 구성 페이지로 돌아가 우리가 만든 작업을 클릭하고, listItems 엔드포인트 (첫 번째 엔드포인트)를 위해 Test 버튼을 클릭합니다.
미리보기 섹션은 로그인하라고 프롬프트를 표시할 것입니다. [작업 이름]으로 로그인 버튼을 클릭한 다음 OAuth 흐름을 완료하세요.
Logto Cloud에서 브랜딩과 로그인 방법 등을 통해 로그인 경험을 사용자 정의할 수 있습니다. 자 세한 정보는 🎨 로그인 경험 사용자 정의를 참고하십시오.
모두 예상대로 작동하면, 백엔드 서버는 Authorization
헤더에 액세스 토큰이 있는 요청을 받고 있어야 합니다. 우리의 경우 백엔드 서버는 일정 앱입니다. 요청 본문에서 사용자의 일정을 반환할 것입니다:
놀랍게도, 우리의 OpenAPI 스키마가 충분히 상세하므로, GPT는 추가 구성 없이도 API 호출을 수행할 수 있습니다. 예를 들어, createItems 엔드포인트에 대한 Test 버튼을 클릭하면, GPT가 요청 본문을 생성하고 있거나 (혹은 누락된 정보를 요청할 수 있습니다).
접근 토큰 유효성 확인
OAuth 흐름이 작동함에 따라, 이제 백엔드 서비스에서 접속 토큰을 유효성 검사하여 요청이 인증된 사용자로부터 오는지 확인할 수 있습니다. Logto는 OIDC 제공자로, Userinfo 엔드포인트를 사용하여 접속 토큰을 확인할 수 있습니다. 엔드포인트는 Logto Cloud 앱 페이지에 있습니다.
해당 엔드포인트에 접속 토큰을 Authorization
헤더에 포함하여 GET 요청을 보내세요. 접속 토큰이 유효한 경우, 엔드포인트는 응답 본문에 사용자의 정보를 반환할 것입니다. 다음은 Node.js를 사용한 예입니다:
전체 코드는 GitHub repo에서 찾을 수 있습니다.
보너스: 메인 앱과의 실시간 동기화
자신만의 일정 앱이 있다면, 인증을 통해 대화를 떠나지 않고도 사용자의 일정을 실시간으로 동기화할 수 있습니다. 실시간 동기화를 보고 싶다면 웹 앱으로 가서 데모 GPT에서 사용한 동일한 계정으로 로그인하세요.
결론
GPT 작업은 사용자 경험을 개인화하는 강력한 도구가 될 수 있습니다. 질문이나 의견이 있다면 Discord 서버를 방문하여 토론해 주세요.