일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이론
- async
- 옵셔널
- uikit
- 네트워크
- 세종대학교
- 토이프로젝트
- 학과별커뮤니티
- 대표
- mvc
- Kingfisher
- 반응형
- 스트럭트
- Optional
- 앱개발
- 프로토콜
- MVVM
- CS
- struct
- 구름톤 유니브
- SwiftUI
- GCD
- 동시성
- collectionview
- 기초문법
- ios
- WeatherKit
- swift
- RxSwift
- 실습
- Today
- Total
스윞한 개발자
IOS - ChatGPT 연결 본문
안녕하세요! 이번 포스팅은 OpenAI의 ChatGPT를 연결시켜 사용해 보겠습니다!

기록하며 실시간으로 궁금한 점에 대해 생성형 AI에게 물어보는 서비스를 개발 중인데, 챗GPT를 연결시켜 보는 실습을 진행해 보았습니다!
1. OpenAI 사이트 접속/로그인/회원가입
OpenAI
Introducing Sora: Creating video from text
openai.com

2. OpenAI API를 사용하기 위한 앱키 발급!

API를 사용하기 위해 앱키를 발급받습니다. 앱키는 유출되면 안 되니 조심히 사용해 주세요! 저는 앱키가 한번 유출당했어서 OpenAI 측에서 메일로 앱키를 강제 삭제 시킨 적이 있습니다. 여러분들도 주의하세요!

앱키를 발급받으셨다면, API 사용한도를 설정해 주세요! 토큰당 저렴한 가격으로 결제가 되지만, 저는 1달러로 제한을 두고 넘으면 메일이 오게 설정해두었습니다. OpenAI 측에서 약 12달러 정도는 무료로 하고 있으나, 혹시 모르니 설정해주세요!

3. playground 확인해 보기!!⭐️
저는 처음에 연결을 시킬 때 분명 원하는 조건을 다 맞추었지만, 되지 않았던 경험이 있었는데요! 그럴 때 연결시키기 전 꼭 playground에서 한번 실행해 보는 걸 추천드립니다. playground에서 잘 작동이 된다면, 코드 상으로 필요한 조건을 다 갖추었다는 가정하에 연결이 잘 될 거예요!

4. Xcode에서 코드 작성
먼저 ChatGPT로부터 받아오는 형식의 Model을 작성해 줍니다.
import Foundation
struct ChatServiceModel : Codable {
let choices : [Choice]
}
struct Choice : Codable {
let message: Message
}
struct Message: Codable {
let content: String
}
그 후 GPT를 이용할 서비스 코드를 만들어 줍니다. 저는 Alamofire 라이브러리를 사용해서 통신을 진행했습니다.
func requestChat(searchTitle : ChatModel) -> Observable<ChatServiceModel> {
return Observable.create { observer in
let apiKey = ""
let url = "https://api.openai.com/v1/chat/completions"
let parameters: [String: Any] = [
"model": "gpt-3.5-turbo",
"messages": [
["role": "system", "content": "About the SearchInfo I am searching for, please tell me 1. Theoretical definition 2. Examples used in real life 3. Basic problems and answers using the theory. You must answer in Korean."],
["role": "user", "content": "SearchInfo : \(searchTitle.searchTitle)"]
]
]
AF.request(url, method: .post ,parameters: parameters, encoding: JSONEncoding.default, headers: ["Authorization" : "Bearer \(apiKey)", "Content-Type" : "application/json"])
.validate()
.responseDecodable(of: ChatServiceModel.self){ response in
switch response.result {
case .success(let data):
observer.onNext(data)
observer.onCompleted()
case .failure(let error):
observer.onError(error)
}
}
return Disposables.create()
}
}
통신할 때 필요한 발급받은 apiKey, url을 위와 같이 설정해 주고, 3.5 터보 모델을 사용해 post로 파라미터를 위와 같이 설정해 주었습니다. 제가 원하는 형식으로 챗 에게 역할을 부여해 주었고, 헤더값에는 인증에 "Bearer" + 앱키, Content-Type은 application/json으로 설정해주었습니다.
5. 마무리!
검색 결과를 바탕으로 저는
1. 이론적 정의
2. 실생활 예시
3. 문제점과 해결책
을 알려달라고 AI에게 정의를 내렸습니다.
아래의 이미지와 같이 생성형 AI에게 전달받은 글을 뷰로 잘 보이는 것을 확인할 수 있습니다.


이번 포스팅에서는 chatGPT를 연결해 보는 실습을 해보았고요 다음 포스팅에서는 더 유익한 글로 돌아오겠습니다!

'Swift 실습' 카테고리의 다른 글
IOS(#UIkit) - WeatherKit (4) | 2024.02.23 |
---|---|
IOS - UIKit protocol delegate pattern (0) | 2024.02.06 |
IOS - ManiaDB를 연결해 노래찾기/음원검색 (0) | 2024.02.03 |
IOS UIKit 사진앨범, 카메라, 동영상촬영 (4) | 2024.01.29 |
IOS UIKit 앱개발 노티피케이션 센터, 이벤트 전달 (2) | 2024.01.29 |