圖書名稱:ChatGPT 開發手冊 - 用 OpenAI API‧LangChain‧Embeddings 設計 Plugin、LINE/Discord bot、股票分析與客服自動化助理
VIDEO 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 請其他開發者測試外掛 提交外掛
第 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 切割視覺...