[목 차]
옮긴이 머리말 xi
베타리더 후기 xii
시작하며 xv
CHAPTER 1 OpenAI API를 시작하자 1
1.1 OpenAI API를 사용하기 위한 준비 1
__1.1.1 ChatGPT가 준 충격 1
__1.1.2 OpenAI API 3
__1.1.3 OpenAI 개발자 페이지 5
__1.1.4 OpenAI 계정 등록 9
__1.1.5 Playground에서 OpenAI API를 사용해보자 12
1.2 OpenAI 계정 설정 17
__1.2.1 API 사용 현황 관리 18
__1.2.2 Settings 18
__1.2.3 API 키 작성 27
1.3 파이썬/Node.js로 API 사용하기 30
__1.3.1 OpenAI API 개발 환경 30
__1.3.2 [파이썬] 파이썬 준비 30
__1.3.3 [Node.js] Node.js 준비 34
1.4 웹 애플리케이션에서 API 사용하기 37
__1.4.1 [파이썬] 플라스크 애플리케이션 37
__1.4.2 애플리케이션의 메인 프로그램 작성 39
__1.4.3 템플릿 파일 생성 41
__1.4.4 [Node.js] Express 애플리케이션 43
__1.4.5 Express 애플리케이션 작성 46
__1.4.6 index.js 49
__1.4.7 index.ejs 템플릿 파일 생성 51
__1.4.8 OpenAI에 익숙해지자 54
CHAPTER 2 API 사용법을 익혀보자 55
2.1 파이썬에서 API 사용하기 55
__2.1.1 OpenAI API와 Completions API 55
__2.1.2 API 사용하기 57
__2.1.3 스크립트 작성하기 58
__2.1.4 스크립트 내용 살펴보기 59
__2.1.5 반환값 60
__2.1.6 Completion에서 Chat Completion으로 62
2.2 Node.js에서 API 사용하기 63
__2.2.1 API 사용하기 63
__2.2.2 스크립트 작성하기 66
__2.2.3 스크립트 구조 살펴보기 68
__2.2.4 access_openai 함수에서의 API 접근 70
2.3 웹 API 직접 사용하기 71
__2.3.1 웹 API에 직접 접근하기 71
__2.3.2 자바스크립트로 API에 접근하기 72
__2.3.3 콜백 함수와 반환값 처리 74
__2.3.4 API를 사용하는 웹페이지 만들기 75
__2.3.5 클라이언트에서 직접 API를 사용할 때의 위험성 78
CHAPTER 3 프롬프트 디자인 80
3.1 기본 프롬프트 80
__3.1.1 프롬프트의 중요성 80
__3.1.2 지시와 메타 프롬프트 82
__3.1.3 한국어를 영어로 번역 83
__3.1.4 지시의 다양한 이용 예 85
3.2 ID와 캐릭터 설정 87
__3.2.1 ID 할당과 질의 예 87
__3.2.2 제로숏 학습과 예시 89
__3.2.3 캐릭터 할당 90
__3.2.4 재미있는 AI 봇 만들기 91
__3.2.5 Q&A용 AI 만들기 94
3.3 그 밖의 프롬프트 기능 96
__3.3.1 순서 설명 96
__3.3.2 텍스트 요약 97
__3.3.3 콘텐츠 생성 프롬프트 97
__3.3.4 선택지 제시와 입력 99
__3.3.5 문장 구조 이해시키기 102
3.4 명령어 정의와 출력 형식 104
__3.4.1 명령어 생성하기 104
__3.4.2 명령으로 프롬프트 실행하기 107
__3.4.3 출력 형식에 관한 프롬프트 110
__3.4.4 프롬프트 인젝션 111
CHAPTER 4 Completion 탐구하기 117
4.1 에러 처리/모델 API 117
__4.1.1 에러 처리 117
__4.1.2 [파이썬] Completion 에러 처리 119
__4.1.3 [Node.js] Completion 에러 처리 121
__4.1.4 모델 122
4.2 옵션 인수 126
__4.2.1 suffix를 이용한 중간 텍스트 생성 126
__4.2.2 여러 후보 생성하기 130
__4.2.3 생성 내용 조정하기 133
__4.2.4 생성 내용에 관한 옵션 138
__4.2.5 실시간 토큰 처리 144
CHAPTER 5 Chat Completion과 Transcription 147
5.1 Chat Completion 기본 147
__5.1.1 Completion과 Chat 147
__5.1.2 Chat Completions API 148
__5.1.3 API로부터의 반환값 150
__5.1.4 [파이썬] 챗 만들기 151
__5.1.5 [Node.js] 챗 만들기 154
__5.1.6 프로그램 실행 159
__5.1.7 [자바스크립트] 웹페이지에서 채팅하기 160
__5.1.8 Chat Completion의 프롬프트 디자인 163
__5.1.9 role에 함수 지정하기 166
5.2 Speech to text를 이용한 음성 입력 167
__5.2.1 오디오 파일과 문자 읽기 167
__5.2.2 [파이썬] 오디오 파일에서 텍스트 얻기 168
__5.2.3 [Node.js] 오디오 파일에서 텍스트 얻기 169
__5.2.4 프로그램 실행 171
__5.2.5 [자바스크립트] 오디오 파일에서 텍스트 얻기 171
__5.2.6 Transcription 옵션 설정 175
__5.2.7 Translation API 176
__5.2.8 Transcription과 Translation의 차이 179
CHAPTER 6 Image Generation 180
6.1 Image Generation 기본 180
__6.1.1 Image Generation으로 이미지 생성하기 180
__6.1.2 [파이썬] 이미지 생성 프로그램 만들기 183
__6.1.3 [Node.js] 이미지 생성 프로그램 만들기 184
__6.1.4 프로그램 실행 186
__6.1.5 [자바스크립트] 이미지 생성 프로그램 만들기 187
__6.1.6 여러 이미지 생성 192
__6.1.7 프롬프트를 이용한 스타일 설정 194
__6.1.8 생성 이미지 저장하기 196
6.2 이미지 편집 200
__6.2.1 이미지 일부 수정하기 200
__6.2.2 이미지 준비 201
__6.2.3 [파이썬] create_edit 함수 사용하기 203
__6.2.4 [Node.js] createImageEdit 메서드 사용하기 204
__6.2.5 프로그램 실행 206
__6.2.6 [자바스크립트] 웹 API에 직접 접근하기 206
6.3 이미지 변형 209
__6.3.1 변형을 생성하는 Variations 209
__6.3.2 [파이썬] 변형 이미지 생성 209
__6.3.3 [Node.js] 변형 이미지 생성 210
__6.3.4 프로그램 실행 212
__6.3.5 [자바스크립트] 웹 API에 직접 접근하기 213
__6.3.6 Image Generation은 이제부터! 215
CHAPTER 7 모델과 데이터 튜닝 216
7.1 파인 튜닝 216
__7.1.1 나만의 AI 모델 생성 216
__7.1.2 학습용 데이터셋 작성 218
__7.1.3 파인 튜닝/모델 생성 220
__7.1.4 파인 튜닝/모델 사용하기 225
__7.1.5 생성 모델 관리 228
7.2 Moderation을 통한 정책 점검 230
__7.2.1 OpenAI의 정책 점검 230
__7.2.2 정책 위반 점검 232
__7.2.3 프롬프트에 대한 정책 점검 234
7.3 Embedding과 시맨틱 유사성 239
__7.3.1 Embedding과 벡터 데이터 239
__7.3.2 Embedding 사용하기 241
__7.3.3 [파이썬] Embedding API에 접근 242
__7.3.4 [Node.js] Embedding API에 접근 243
__7.3.5 코사인 유사도로 벡터 사이의 유사성 확인하기 244
__7.3.6 [파이썬] openai.embeddings_utils 준비 245
__7.3.7 [Node.js] compute-cosine-similarity 준비 246
__7.3.8 선택지에서 가장 적합한 것 선택하기 247
__7.3.9 [파이썬] 선택지에서 가장 적합한 것 고르기 248
__7.3.10 [Node.js] 선택지에서 가장 적합한 것 고르기 250
__7.3.11 프로그램 실행 253
CHAPTER 8 Power Platform에서 API 사용하기 254
8.1 Power Automate에서 API 사용하기 254
__8.1.1 OpenAI API와 다양한 개발 환경 254
__8.1.2 Power Automate 255
__8.1.3 흐름 작성하기 256
__8.1.4 OpenAI 단계 작성하기 258
__8.1.5 결과를 변수에 설정하기 263
__8.1.6 Power Apps에 대한 반환값 준비하기 265
__8.1.7 테스트 수행하기(OpenAPI 커넥터) 267
__8.1.8 HTTP에 접근하는 흐름 만들기 271
__8.1.9 HTTP 커넥터 사용하기 273
__8.1.10 JSON 데이터에서 반환값 얻기 275
__8.1.11 JSON 데이터를 변수에 가져오기 277
__8.1.12 흐름 테스트 278
__8.1.13 다양한 흐름 테스트 279
8.2 Power Apps에서 API 사용하기 280
__8.2.1 Power Apps란? 280
__8.2.2 캔버스 앱 편집하기 282
__8.2.3 PowerFX 코드 입력 284
__8.2.4 Power Automate의 흐름 할당하기 286
__8.2.5 버튼에서 AccessToOpenAI 흐름 실행하기 287
__8.2.6 앱 실행하기 288
__8.2.7 어떤 애플리케이션에서도 사용할 수 있다 289
8.3 데스크톱용 Power Automate에서 API 사용하기 289
__8.3.1 데스크톱용 Power Automate란? 289
__8.3.2 흐름 편집 291
__8.3.3 OpenAI API에 접근하기 294
__8.3.4 JSON 데이터를 사용자 지정 개체로 변환하기 297
__8.3.5 결과 표시 299
__8.3.6 흐름 실행하기 301
CHAPTER 9 노코드/매크로에서 API 사용하기 302
9.1 Click에서 사용하기 302
__9.1.1 Click이란? 302
__9.1.2 애플리케이션 편집하기 304
__9.1.3 요소 편집 307
__9.1.4 ClickFlow 309
__9.1.5 맞춤 ClickFlow 작성하기 310
__9.1.6 맞춤 ClickFlow 사용하기 316
__9.1.7 애플리케이션 실행하기 318
9.2 Google Apps Script에서 사용하기 319
__9.2.1 Google Apps Script란? 319
__9.2.2 GAS의 스크립트 편집기 320
__9.2.3 OpenAI API용 함수 만들기 322
__9.2.4 테스트용 함수 준비하기 324
__9.2.5 스크립트 ID 확인하기 327
__9.2.6 스프레드시트에서 사용하기 328
__9.2.7 GAS 열기 329
__9.2.8 스크립트 입력 331
__9.2.9 매크로 가져오기 332
__9.2.10 매크로 실행하기 333
__9.2.11 다양한 구글 서비스에서 호출하기 334
9.3 AppSheet에서 사용하기 334
__9.3.1 AppSheet란? 334
__9.3.2 AppSheet의 앱 편집 화면 335
__9.3.3 데이터베이스 편집하기 337
__9.3.4 AppSheet에서 Table 1 편집하기 340
__9.3.5 View 편집하기 341
__9.3.6 Automation 작성하기 342
__9.3.7 OpenAI API에 접근하는 단계 생성 345
__9.3.8 레코드를 업데이트하는 단계 생성 349
__9.3.9 앱 동작 확인하기 352
9.4 Office Script에서 사용하기 354
__9.4.1 Office Script란? 354
__9.4.2 Office Script 작성하기 355
__9.4.3 실행하기 360
__9.4.4 Office Script는 매우 강력한 도구가 될 언어 361
찾아보기 363
[본 문]
원칙적으로는 유료이지만 API가 어떤 것인지 잠깐 사용해보고 싶은 정도라면 요금을 지불하지 않고 사용할 수 있다. / OpenAI API는 계정 등록 시 5달러의 무료 플랜을 제공하므로 그 플랜 안에서 무료로 사용할 수 있다. 고작 5달러라고 생각할 수도 있겠지만 앞서 설명한 것처럼 이용 방식에 따라 수백만 번 정도 접근할 수 있으므로 부족하지 않다. / 5달러 무료 플랜은 3개월 간 유효하므로 학습 기간 동안 충분히 사용할 수 있다. 또한 지불 정보(신용카드 정보)는 유료 플랜으로 전환할 때 등록하므로 사용하지 않고 방치하더라도 임의로 요금이 청구되지 않는다. (4쪽)
플라스크에서는 함수에 특별한 값(데커레이터)을 붙여서 핸들러를 정의했다. Express에서는 Express 객체의 get 등의 메서드를 사용해서 핸들러를 작성한다. 첫 번째 인수에는 경로를 지정하고, 두 번째 인수에는 함수를 지정한다. 이를 통해 지정한 경로에 접근하면 준비한 함수가 실행된다. / 이 함수는 최소 두 개의 인수를 갖는다. 이 인수는 Request와 Response라는 객체로, 각각 클라이언트로부터 전송된 요청과 서버로부터 클라이언트에 반환하는 응답 정보를 관리한다. / 이 함수에서 필요에 따라 프로세스를 수행하고 마지막에 Response의 render 메서드로 페이지를 작성한다. render는 첫 번째 인수에 지정한 템플릿 파일을 렌더링하고 결과를 클라이언트로 출력한다. 두 번째 인수에는 템플릿에 전달하는 값을 객체 안에 모아서 지정할 수 있다. 그러면 객체 안의 값을 템플릿 측에서 값으로 사용할 수 있다. (45쪽)
Chat Completion은 챗봇과 같은 대화형 응답(interactive response)을 생성하기 위해 설계된 모델이다. 이전 대화와 컨텍스트를 고려하면서 응답을 생성한다. / Chat Completion은 캐주얼한 대화, 고객 지원, 질의 응답 등 대화형 응답을 필요로 하는 시나리오에 최적화된 모델이다. / 종합하면 Completions API는 범용적인 텍스트를 생성하기 위해 사용되고, Chat Completions API는 대화형 응답을 생성하기 위해 특별히 설계되었다고 할 수 있다. (148쪽)
메서드는 POST를 지정하고 헤더 정보에 Content-Type과 Authorization을 전달한다. 지금까지 여러 차례 구현했으므로 익숙할 것이다. / 핵심인 바디 부분에는 prompt, n, size값을 정리한 객체를 준비한 뒤 JSON.stringify를 이용해 텍스트화하여 지정한다. 내용은 다르지만 그 동작은 같다. fetch는 비동기 함수이므로 여기서는 then으로 콜백 처리를 준비한다. 그 안에서 한 차례 더 비동기인 json을 호출하고 then에서 json의 콜백 처리를 준비한다. 그리고 API에서 받은 값을 처리한다. (191쪽)
반환값 안에 있는 data에는 Embedding한 결과가 모여 있다. 배열로 돼 있으며 각 항목의 embedding에 벡터 데이터(실수 배열)를 저장한다. Embedding 결과를 활용하고 싶을 때는 여기에 있는 벡터 데이터를 사용한다. / 이 벡터 데이터는 text-embedding-ada-002를 사용하는 경우 1536개의 실수 배열로 이루어져 있다. 즉 이 모델에서는 모든 텍스트를 1536개 지표를 기준으로 수치화한다. Embedding 모델에 따라 지표 수도 달라진다. / 이후 새로운 모델이 릴리스돼 지표 수가 증가하면 보다 명확하게 콘텐츠의 의미를 파악할 수 있다. Embedding을 통해 얻어지는 벡터 데이터 내용 또한 모델에 따라 다르다. (242쪽)
Power Automate에서는 흐름(flow)이라 불리는 것을 작성해 프로세스를 구현한다. 흐름은 다양한 서비스에 접근해 결과를 처리하는 일련의 작업을 정의하기 위한 것이다. Power Automate로 무언가 작업을 수행하려면 먼저 수행할 내용에 맞는 흐름을 작성하고 그 흐름 안에 다양한 프로세스를 조합한다. (...) Power Automate는 그 자체로 어떤 프로세스를 수행한다기보다 다른 서비스와 연동하는 프로세스를 조합한다. 따라서 OpenAI API를 이용하더라도 반환값을 Power Automate 안에서 소비하는 일은 거의 없다. 값을 받으면 그 값을 엑셀 시트에 출력하거나 원드라이브(OneDrive)에 파일을 저장하거나 다른 웹 서비스에 데이터를 전송하는 식으로 사용하는 것이 일반적이다. 여기서는 그런 예의 하나로 Power Apps에서 호출하여 사용하는 흐름을 작성해본다. (256쪽)
이 책을 읽고 어떤 느낌을 받으셨나요?
리뷰를 남기고 다른 독자들과 함께 공유해보세요.
안내 열기구매(배송/수령완료) 후 리뷰를 작성하시면 적립금 300원을 드려요!