發表文章

目前顯示的是 12月, 2023的文章

以MS Bot Framework串接OpenAI API實現跨平台(頻道)機器人開發

圖片
前幾天介紹過如何透過 LINE Messaging API 來串接 OpenAI API,實現具有GPT能力的LIEN Bot。但如果你的 ChatBot 不想只支援 LINE 怎麼辦呢? Microsoft Bot Framework 是另一個不錯的選擇。 Microsoft Bot Framework 提供了一個健全的平台,讓開發者可以建立、測試、和部署具有高度互動性的聊天機器人,除了可以直接串接 LINE Bot, 還支援 Teams、Telegram、FB、Skype、Alexa、Web UI、甚至 email 和 SMS…等不同的Channel。 當它與 OpenAI 的 API 結合時,不僅可以快速的建立出對談機器人應用 ,更能確保了機器人可以在多種平台上運行,包括網頁、社交媒體平台和行動應用,使其更具可訪問性和便利性。 底下這個在MS Bot模擬器中的截圖,就是我們在上課的時讓學員做出的成果,你會看到透過 Bot Framework 設計的對談機器人,具備理解前後文與對談記憶,由於ChatGPT的加持,可以輕易的理解用戶的對談訊息,從而輕鬆地蒐集用戶的購票資訊,協助用戶進行購票。 這個範例的最後,產生了一個可以傳遞給 購票系統的 JSON 內容,只需要再加上呼叫 購票系統的API,就可以在對談中自動完成協助用戶購票的動作了。 讓 OpenAI API 產出 JSON 是為了方便開發人員後續可以直接呼叫 售票系統的 API 來完成真正的購票行為,如此一來可以更方便的做系統間的整合。 而採用 MS Bot Framework 開發的好處在於,可以輕易地透過 Azure Bot 的維護後台,以設定的方式,就可以讓串接好 ChatGPT 的 Bot 與各種不同的頻道進行整合: 這樣我們只需要撰寫一次,就可以直接支援各種不同的操作介面或App。 基本款的 MS Bot Framework + ChatGPT 範例,可以參考筆者的 Github repo: https://github.com/isdaviddong/DemoChatGPTwithMSBotFramework.git 相關課程: https://www.studyhost.tw/NewCourses/LineBot

使用LINE Bot搭配OpenAI API建立出新一代的AI機器人

圖片
ChatGPT的出現,是對談機器人一個明顯的分水嶺。 你肯定用過許多網路銀行的對談機器人服務,或是類似的其他機器人,然而效果總是讓人覺得差強人意。原因不外乎幾點,過去的對談機器人很明顯無法明白你說的話,這是NLU(natural language understanding)能力的不足。再來,過去的對談機器人大多沒有前後文的概念,也沒有記憶,因此對談起來常常讓你覺得答非所問,牛頭不對馬嘴,整體效果並不理想。 但ChatGPT卻讓人完全沒有這樣的感覺,主要是ChatGPT對於NLU有極強的能力,ChatGPT本身又有前後文記憶,這讓整體對談效果理想非常多。 透過OpenAI API,我們也可以用LINE Bot做一個類似ChatGPT的客服機器人,這一篇,就step by step來跟您介紹,如何實現一個ChatGPT能力加持的LINE Bot。 建立LINE WebHook 建立LINE Bot的方式過去我們在Blog有介紹很多次了,我們這邊就不再贅述。 我們在建立好LINE Bot之後,可以建立一個WebHook的開發專案(使用 C#與 .net core): md folder cd folder # 建立 Web API 專案 dotnet new webapi -f net5.0 # 安裝套件 dotnet add package linebotsdk # 安裝程式碼範本 dotnet new --install isRock.Template.LineWebHook dotnet new linewebhook # 開啟VS Code ( OR vs2019/vs2022) code . 上面這段CLI指令會建立出一個 .net core 的 webapi 專案,建立好後透過 VS Code 開啟,並且修改 LineBotChatGPTWebHookController.cs 中的 Admin User ID 與 Channel Access Token: 這個動作是讓 WebHook 可以控制你的LINE Bot來 接收 與 發送 訊息。 接著看同一支程式碼中的 117 行,由於我們要呼叫 OpenAI 的 ChatCompletion API,因此我們把程式碼中的 117 行從 CallAzureOpenAIChatAPI ...

如何申請 OpenAI API 金鑰:Step By Step

圖片
引言 在當今由AI驅動的世界中,讓你的應用程式能夠連接先進的人工智能技術,是許多開發者和企業的重要需求。提供ChatGPT 服務的 OpenAI ,提供了一系列強大的 API,包括著名的 GPT 模型,它們可以幫助開發人員在各種應用中實現自然語言處理(NLP)。要使用這些 API,首先需要申請一個 API 金鑰。 以下是申請過程的逐步指南。 步驟 1:進入 OpenAI 網站 首先,前往 OpenAI 開發人員官方網站 。在網站的右上角,您會找到“註冊”或“登錄”選項。如果您還沒有 OpenAI 賬戶,您需要先註冊一個。 步驟 2:登入賬戶 建議採用 Google 帳號以SSO方式進行登入: 登入後,即可前往 https://platform.openai.com/account/billing/overview 網址,並且設定付款方式: 步驟 3:申請 API 金鑰 登入完成付款方式後,即可前往 https://platform.openai.com/api-keys 網址,建立新的 API 金鑰: 建立好金鑰後,即可開始使用 OpenAI 的 API囉。 不妨,先從 文件生成 和 圖像生成 開始? 相關課程: https://www.studyhost.tw/NewCourses/LineBot

善用 OpenAI 的 Completions API

圖片
OpenAI 的 Completions API 雖然已經是屬於legacy的API,但其實一直以來它都是一個挺方便的文字生成工具。 這個 API 提供了對 GPT-3 和最新的 GPT-4 模型的存取,允許用戶輕鬆創建自然語言應用。無論是文章 自動生成 、 語言翻譯 還是 情緒分析 ,Completions API 都是相當便捷好用的API。 要使用 OpenAI Completions API,開發人員可透過 POST 方法與 API 互動。在 Request 的 Header 中,應包含 Authorization 字段,其值為 Bearer [你的API金鑰] ,以認證API的使用者身份。 ( 金鑰申請方式 ) Request 的 Body 則需包含數個參數,主要是 model (指定使用的 GPT 模型), prompt (輸入給模型的提示文本),以及 max_tokens (指定生成文本的最大長度)等。透過指定這些參數,開發者可精確控制生成出的文字,例如: 你會發現,當使用 OpenAI Completions API 的 POST 請求時,Body 部分的撰寫相當重要。這部分的內容指導了 AI 模型如何回應需求。其中, prompt 屬性是控制AI Model生成文字的起點,而 max_tokens 則指定生成內容的最大長度。其他可用的參數包括 temperature (控制回應的創造性), top_p (影響回應的多樣性),以及 frequency_penalty 和 presence_penalty (用於調節特定詞語的重複出現)。合理的設定這些細節,能夠讓開發者有效地定制模型的回應,以符合其特定應用場景的需求。 我們再透過一個例子來看 Completions API的另一種用法。假設我們想要生成一段關於人工智能未來趨勢的文字,我們的 POST 請求的 JSON Body 可以如下: { "model" : "gpt-3.5-turbo-instruct" , "prompt" : "描述未來五年內人工智能的發展趨勢" , "max_tokens" : 1450 , "temperatu...

使用 OpenAI 的 Chat Completion API

圖片
OpenAI 在 ChatGPT 紅了之後,開始逐步把背後的 LLM(大型語言模型) 開放給開發人員使用(當然是收錢的),LLM 作為對談機器人實際的運算主體,它隱藏在雲端的某一個角落悄悄的運行著,而外部的 UI 則是透過 API 來存取這個大型語言模型(LLM): ChatGPT 採用 Web 的方式實作此操作界面,背後也是透過 OpenAI 的 API 來叫用LLM。而當開發人員有了API可以呼叫LLM之後,我們(企業內的開發人員),也可以建立自己的界面,或在自己開發的應用程式中直接來使用AI,不管是 App、Web 或是ChatBot (像是 LINE Bot),都可以透過串接 OpenAI 的 API ,來叫用 LLM 實現各種 AI 加值功能。 其中, OpenAI 釋出的 Chat Completion API 就是作為對談機器人應用的主要API 。它讓開發人員可以直接叫用最新的 GPT 模型(GPT-3 or GPT-4),生成流暢、(與提示)關聯性高、且自然的回應對話。 在接下來的介紹當中,我們將深入檢視該功能的REST API 呼叫方式,並通過實際例子來展示其用法。 功能概述 從功能面來說,Chat Completion API 能夠理解用戶傳來的訊息(提示),並且以智能助理的角色來回應,由於LLM具有基礎知識,其回應範圍從日常對話到專業的主題,都可以很好的進行問題解答、情緒分析、故事講述等多種任務,甚至可以生成 JSON(這對於開發人員相當重要)。 要使用 Chat Completion API,開發人員可以通過 HTTP Request與之互動。該API標準的HTTP請求包括以下幾個部分: Endpoint : API 的 URL 端點,就Chat Completion API 來說,目前是 https://api.openai.com/v1/chat/completions。 Headers : 包括用於認證的 Authorization 欄位,其值應為 Bearer [您的API金鑰] 。 Body : 包含請求參數,如 model (指定 GPT 模型), messages (包含一系列對話歷史和當前用戶消息的陣列),例如: { "model" : "gpt-3.5-tu...

使用DALL-E3在程式碼中動態生成圖片

圖片
我依稀還記得AI的上一波潮流,大概是在2016年前後,各種基於類神經網路模型的應用開始市場化。但當時,還沒有到現在這種遍地開花的程度。 自從去年2023年11月,ChatGPT出現之後,坊間對生成式AI的 各種想像 開始變成了 各種應用 ,圖像生成當然也是其中之一。 如今,透過雲端的API,使用程式碼來動態產生圖片,已經是人人都能夠做的事情。OpenAI除了提供文字的生成,也提供了圖像的生成,採用的是DALL-E技術,最新的更新是DALL-E3,加入了類似於 ChatGPT 的 AI 聊天機器人技術來幫助完善圖像生成的提示,也因為這樣,你只需要透過自然語言,以形容的方式,甚至只需要打個關鍵字,就可以讓AI輕易的為你繪製出想要的圖片,支援不同的大小( 1024x1024 , 1792x1024 , or 1024x1792 )與風格。​ 熟悉REST API使用的開發人員,可以輕易地透過底下這樣的方式,來呼叫API,產生所需的圖片(底下是透過postman工具呼叫API的擷圖): 如同上面API呼叫中的提示,我們要生成 “ 麥當勞美味的漢堡 ” ,出現的圖片如下: 完整的HTTP/1.1 呼叫為: POST /v1/images/generations Host: api.openai.com Authorization: Bearer ______API_KEY______________ { "model": "dall-e-3", "prompt": "麥當勞美味的漢堡" , "n": 1, "size": "1792x1024" } 你會發現,其實呼叫方式相當簡單,endpoint 是 https://api.openai.com/v1/images/generations ,只需要在http Header中提供 API Key 即可呼叫,API Key的建立方式在 這裡 。不過當然,好的服務是要付費的,OpenAI 關於DALL-E的費用在 這裡 。 使用C#呼叫API的程式碼如下: using System; using System.Net.Http; using Syste...

在MyGPT Action中,透過串接API整合企業內部資訊系統

圖片
先前曾經提過,My GPT的Action功能,讓我們可以在自行設計的客製化GPT當中,呼叫外部API,這將使我們能夠輕易地透過 ChatGPT 強大的自然語言對話能力,讓用戶透過語音或文字就可以操作企業內的資訊系統。 未來,在企業內想要用語音或文字Chat Bot 來控制電腦請假、簽核、自動填寫各種表單,甚至操控企業的資訊系統,都將不是難事了。(我自己覺得,這對幾十年來,紅了好一陣子的UI/UX 會是一個很大的影響,但我由衷期待一個可以透過語音控制資訊系統的時代來臨) 底下這個MY GPT的Demo,展示出的就是這樣的效果: 具體設計 action 的方式如下: 不過這些在企業內的API,大多都是必須要透過API KEY進行驗證與授權後才能呼叫的。因此,這一篇我們就來看,需要KEY的API,要如何在MyGPT的Action中被呼叫。 首先,底下是一個需要KEY才能呼叫的API,如果我們把 header 中的 API Key 移除,你會發現呼叫時就會出現 401 Access Denied錯誤: 因此,當我們在 MyGPT中使用這組API,當然也會出錯: 這時,你可以在 MyGPT 下方的 Action 處,設定Authentication,並且填入該API所需要的 http header key 和 value: 例如,上圖中的 Ocp-Apim-Subscription-Key Header,就是APIM中很常見用來保護API的訂閱金鑰,前面提過的API,當有金鑰驗證之後,就可以呼叫了: 也因此,當我們對 MyGPT做了同樣的驗證金鑰配置之後,MyGPT也可以順利呼叫受金鑰保護的API了: 或許,要不了多久時間,我們就可以在螢幕前用語音跟電腦說:『幫我訂一張從南港到左營的高鐵票,要找靠窗的座位,8點左右出發,最好是能夠直達的班次…』 然後,我們的訂票GPT,就能夠自動呼叫高鐵班次查詢與購票API,幫我們持續搜尋最適合的班次與座位,最後完成訂票。 靠一張嘴完成所有事情的時代,終於將要出現。 相關課程: https://www.studyhost.tw/NewCourses/LineBot

(無須程式碼)三分鐘建立出自己的GPT請假助手

圖片
OpenAI DevDay 最驚豔的展示之一,就是現在人人都可以設計自己的GPT了。 (成果展示影片請參考底下) 不用寫程式,只需要跟ChatGPT以對談的方式,ChatGPT就可以自動幫你做出客製化的GPT,給你的公司、客戶、甚至上架給所有人使用。 只要你有ChatGPT帳號,即可開始建立: ChatGPT會問你想建立什麼功能的GPT,用對談的方式,一步一步引導你做出自己客製化版本的GPT,還可以即時預覽: 你可以用對談的方式(當然也可以上傳文件),讓ChatGPT知道請假規則: 對談之中,不知不覺的,你的客製化GPT已經完成,你可以選擇公開給全世界所有人,或是只給自己的好友或企業使用: 可預見的未來,將能更進一步的,串接企業系統的API,與自己企業內的ERP、CRM、HR系統整合。 半年前,我在一次受訪中曾說,ChatGPT的出現,將會改寫資訊系統的UI發展方向,如同電影Star Trek中,以自然語言語音控制電腦實現你想要完成的任何功能,現在已經近在眼前。 做完之後,用戶就可以透過客製化GPT以自然語言的對話方式請假了: 改變真的很大,未來將會發生什麼變化,就留給大家自己想像了… 相關課程: https://www.studyhost.tw/NewCourses/LineBot