內容介紹:
ChatGPT 熱潮之後, 就是語言模型開發應用的時代, 如何將語言模型融入各式各樣的應用當中, 就是開發者接下來面臨的挑戰。利用語言模型理解文意與能言善道的超強特性, 迎來『自然語言就是程式語言』的新世代, 終端用戶使用自然語言讓語言模型自主理解規劃邏輯流程, 我們的程式做為語言模型與外界的橋樑, 串接成完整的應用。本書將帶你:
□ 【詳解 OpenAI API 個別參數】:想要善用語言模型, 就必須瞭解 API 的個別參數, temperature 到底什麼意思?怎樣可以讓語言模型生成內容避開不想要出現的字詞?怎樣可以讓語言模型選用偏好的字詞?為什麼生出內容有怪怪的東西?這些都可以透過 API 的參數控制, 如果不瞭解參數, 就只能任由語言模型恣意亂為了。
□ 【仿照 ChatGPT 設計會記憶的聊天機器人】:使用 ChatGPT 太習慣, 就會誤以為語言模型會幫你記錄一切, 沒考慮這一點, 利用 API 寫出來的程式就會變成金魚腦, 剛剛對答過的內容通通不記得。本書設計一個簡單的記憶架構, 可以像是 ChatGPT 一樣記錄對話, 即使程式結束重新啟動還是可以記得住。
□ 【利用 function calling 機制建置外掛系統】:OpenAI 語言模型受限於 2021 年 9 月的時空限制, 而且不能連網, 所以新資訊通通不知道, 也沒有辦法與外界介接。透過最新的 function calling 機制, 我們可以撰寫各式各樣的函式作為延伸語言模型能力的小工具, 讓語言模型自主判斷要使用哪些函式來達成任務, 等於是幫語言模型建立了外掛系統, 不管是搜尋網路、介接其他 API 或是服務, 通通都可以辦到, 就算是今天才發生的事也能暢所欲言。
□ 【設計串流輸出的 AI 聊天架構】:使用 ChatGPT 可以看到非常流暢地逐漸顯示生成的內容, 但是你寫的應用程式卻要等語言模型完整生出內容才能秀出來?本書會教你如何設計出類似 ChatGPT 的效果, 再也不用痴痴等完整結果, 呼叫 API 之後就會開始看到片段生成內容, 給使用者最即時的體驗。
□ 【整合 LINE/Discord bot】:實踐多年來大家夢想的 CUI(Conversation User Interface), 以自然語言控制系統。本書會帶大家整合 OpenAI API 與 LINE/Dicord bot, 除了基本的讓即時通訊軟體變身小助理, 還能理解文字幫你創意生圖/改圖/修圖, 也能幫你搜尋股市資訊, 分析股市。
□ 【使用 Embeddings 設計專屬知識的自動諮詢客服】:許多人都想要讓語言模型變成自己專屬的客服, 不但能言善道, 而且 24×7 不用休息。要做到這一點, 如果要靠輸入大量資料訓練新模型, 不但耗時耗力, 效果還不一定好。本書會帶大家透過 Embeddings 的方式彙整你的專屬文件, 用最有效率的方式搜尋到文件中相關的內容, 再由語言模型統合內容生成回覆, 快速又有效。
□ 【引入 LangChain 框架】:使用 OpenAI API 固然能夠控制最細微的功能, 不過只要善用已經幫你統整好底層 API 的高階框架, 開發起來就能事半功倍, LangChain 就是其中的佼佼者。LangChain 幫你將語言模型、提示模板、對談記錄、外部工具以及能理解推斷邏輯流程的代理元件串起來, 自動將使用者輸入的文句分解成細部工作再一一完成, 用最快的速度開發出能以自然語言操控自動生成產品文、上傳社群的自動代理系統 (agent)。
□ 【ChatGPT 外掛開發】:ChatGPT 目前最重要的就是外掛系統, 讓語言模型可以和外界接軌, 儼然建構起 ChatGPT 生態系。本書會帶大家用真實上架 Plugin store 的台鐵時刻表查詢外掛當範例, 手把手教你設計 ChatGPT Plugin, 還會帶你走一遍上架 Plugin store 流程, 讓你的應用程式與服務順暢介接進入 ChatGPT 家族。
本書的目標, 就是在【自然語言就是程式語言】的時代, 為各位奠定開發程式做為語言模型感官與外界溝通的基礎, 我們寫好各式各樣的外部工具聽任語言模型調用, 終端使用者就可以『說』得一口好程式了!
本書特色:
□ 解析 Plugin store 上架的台鐵時刻表外掛教你設計 ChatGPT Plugin
□ 善用 OpenAI API 設計 Discord 股票分析機器人
□ 利用 LangChain 製作行銷文宣自動生成上傳社群服務
□ 結合 Embeddings×LangChain 設計台灣旅遊自動諮詢客服機器人
□ 利用 function calling 設計突破時空限制的 LINE AI 聊天機器人
□ 整合 OpenAI Image API 設計 AI 文字生圖/改圖/修圖工具
□ 透過 Gradio 設計可分享的 AI 網頁應用
□ 詳解 OpenAI API 參數/掌握語言模型輸出變化
目錄:
第 1 章 OpenAI API 入門
1-1 有了 ChatGPT 為什麼還要寫程式?
流程自動化
客製化聊天內容
延伸聊天範圍
整合 AI 功能
1-2 註冊 OpenAI API 帳戶
檢查目前用量
成為付費會員
限制使用額度
1-3 利用 Playground 熟悉 API
可用的 API 模式與模型
認識 chat 模式的三種角色
保持對答脈絡
第 2 章 使用 Python 呼叫 API
2-1 使用官方 openai 套件
安裝與使用 openai 套件
傳遞多筆訊息
設定與隱藏金鑰的方法
2-2 認識 token
使用 tokenizer 頁面檢視 token
使用 tiktoken 套件計算精確 token 數
token 切割視覺化工具
ChatML 標記語言
2-3 使用 Python requests 模組呼叫 API
OpenAI API 的 HTTP 規格
使用 Python requests 模組
利用 curl 工具快速測試 API
第 3 章 API 參數解析與錯誤處理
3-1 事前準備
3-2 控制生成訊息與 token 數量
指定生成的訊息數量 - n
設定詞彙黑名單 - stop
設定回覆語句的 tokens 數量上限 - max_tokens
3-3 控制回覆內容的變化性
讓回覆更具彈性 - temperature
控制詞彙的豐富度 - top_p
控制詞彙的重複性 - presence_penalty 與 frequency_penalty
調整特定 token 的分數 - logi-bias
3-4 串流輸出
可循序傳回結果的生成器 (generator) - stream
串流多個語句
3-5 錯誤處理與使用限制
使用例外機制處理錯誤
API 存取限制
第 4 章 打造自己的 ChatGPT
4-1 文字模式簡易聊天程式
4-2 加入聊天記錄維持聊天脈絡
4-3 串流版本的聊天程式
4-4 儲存歷史紀錄下次繼續聊
掛接 Google 雲端硬碟
製作復原/儲存歷史紀錄的函式
第 5 章 突破時空限制 – 整合搜尋功能
5-1 用搜尋網頁幫 AI 補充知識
使用 Google 搜尋
5-2 整合搜尋結果讓 AI 跟上時代
5-3 使用 Google Search JSON API
建立搜尋引擎 ID
取得 API Key
使用 HTTP API 取得搜尋結果
使用客製模組
第 6 章 讓 AI 幫 AI – 自動串接流程
6-1 從 ChatGPT 外掛得到的啟示
準備工作
搭配串流/非串流模式的工具函式
6-2 由 AI 自動判斷要額外進行的工作
讓 AI 自行決定是否需要搜尋
撰寫判斷是否需要搜尋的工具函式
可自行判斷是否進行網路搜尋的聊天程式
6-3 可建構外掛系統的 Function Calling 機制
告知語言模型可用的外部工具函式
取得語言模型的建議
執行函式並傳回結果
以串流方式使用 function calling
6-4 建立 API 外掛系統
建立外部工具函式參考表
建立協助 function calling 的工具函式
建立 function_calling 版的 get_reply_f() 函式
建立 function calling 版本的 chat_f() 函式
6-5 迭代式 function-calling 機制
gpt-4 模型真的比較厲害
驗證答案必要時強制進行第二輪
第 7 章 網頁版聊天程式與文字生圖 Image API
7-1 準備工作
7-2 使用 gradio 套件快速建立網頁程式
安裝與使用 gradio
使用串流方式顯示輸出
客製使用者介面
7-3 使用 DALL‧E 的 Image API
Image API 用法
建立文字生圖像網址的函式
包裝成生成 markdown 語法的函式
第 8 章 設計 LINE AI 聊天機器人
8-1 設計簡易的 LINE 聊天機器人
Messaging API
Replit 線上開發環境
實作 LINE 聊天機器人
設定環境變數
執行程式
串接程式與通道
測試聊天機器人
8-2 升級為 AI 聊天機器人
設定環境變數
修改程式碼
執行與測試
8-3 OpenAI 變化圖像的功能
8-4 可控制變化內容的 create_edit 函式
ChatGPT code interpreter 模型來幫忙
讓 LINE 也能變化圖像背景
第 9 章 自媒體業者必看!使用 AI 自動生成高品質字幕
9-1 使用 PyTube 套件輕鬆下載 YouTube 檔案
複製 Replit 專案:輕鬆下載 YouTube 檔案
程式碼詳解:輕鬆下載 YouTube 檔案
9-2 使用 Whisper「語音轉文本」模型轉出字幕檔
複製 Replit 專案:從音訊檔轉出字幕檔
程式碼詳解:從音訊檔轉出字幕檔
9-3 影片不是中文的?讓 AI 變出中文字幕!
複製 Replit 專案:讓 AI 變出中文字幕
程式碼詳解:讓 AI 變出中文字幕
第 10 章 把 AI 帶到 Discord
10-1 建立第一個 Discord 機器人
前置作業
建立 Discord 開發者應用程式
取得 TOKEN
將 Discord 機器人加入伺服器
10-2 建立回聲機器人
複製 Replit 專案:回聲機器人
程式碼詳解:回聲機器人
10-3 讓 Discord 機器人只處理指名給自己的訊息
複製 Replit 專案:指名道姓機器人
程式碼詳解:指名道姓機器人
10-4 加入 AI 的 Discord 機器人
複製 Replit 專案:加入 AI 大腦的機器人
程式碼詳解:加入 AI 大腦的機器人
第 11 章 AI 客製化投資理財應用實戰
11-1 能抓取證交所資料的 Discord 機器人
複製 Replit 專案:能抓取證交所資料的 Discord 機器人
抓取大盤資料
抓取個股股價資料
抓取個股本益比、殖利率及淨值比資料
斜線指令:main.py
11-2 StockGPT:專業的證券分析機器人
複製 Replit 專案:StockGPT
抓取新聞資料
AI 幫你來分析
StockGPT 主程式:main.py
11-3 加入按鈕指令來優化使用者體驗
複製 Replit 專案:按鈕版的 StockGPT
按鈕指令:main.py
第 12 章 用 LangChain 實作新書宣傳自動小編
12-1 認識 LangChain
12-2 熟悉 LangChain 基本功能
使用 ChatOpenAI
提示模板 (PromptTemplate)
建立 LLMChain
對話記憶 Memory
12-3 串接 Google search 及 Agent 代理運用
建立 LangChain 代理 (Agent)
建立工具組
建立 Agent
12-4 實戰演練:用 LangChain 在社交軟體上宣傳新書
建立 Chain 元件
使用爬蟲
建立可取得單一書籍文案的函式 flag_book
宣傳文修改程式
前往 IFTTT 連接 FB
宣傳文編碼與上傳
第 13 章 用 Embeddings 實作台灣旅遊客服機器人
13-1 Embeddings 簡介
主要功能及應用
如何轉成向量
模型與花費
13-2 實作 Embeddings
建立環境
文字轉向量
比較關聯性 - 餘弦相似度
13-3 向量資料庫
動手操作
查詢資料
13-4 台灣旅遊客服機器人
快速建立資料庫
使用 RetrievalQA
使用 Gradio 建立網頁程式
第 14 章 ChatGPT Plugin 開發
14-1 火車時刻表查詢外掛簡介
14-2 使用 TDX 平台查詢台鐵資訊
查詢所有車站基本資料
指定起迄站代號查詢時刻表
取得驗證資訊
以驗證身分方式使用 API
14-3 ChatGPT 外掛實作入門 - 以查詢台鐵車站代號為例
ChatGPT 外掛基本架構
外掛描述檔
API 規格檔
後端程式
測試外掛
14-4 ChatGPT 外掛開發 - 加入時刻表查詢功能
修改外掛描述檔
修改 API 規格檔
修改後端程式
測試外掛
14-5 身分驗證
設定存取令牌
取得驗證令牌
修改後端程式
測試外掛
14-6 協同測試與上架 Plugin store
請其他開發者測試外掛
提交外掛