在本教程中,我們將學習如何使用chatgpt在雲功能中構建拼寫檢查器。
OpenAI的大型語言模型Chapgpt不僅僅是聊天界面。它是針對一系列任務的強大工具,包括翻譯,代碼生成以及我們將在下面看到的,甚至拼寫檢查。通過其REST API,Chatgpt提供了一種簡單而極其有效的方法,可以在項目中添加AI語言分析和發電能力。 >您可以在github上找到本教程的所有代碼。>
鑰匙要點- 利用chatgpt進行高級拼寫檢查:本教程演示瞭如何通過OpenAI API進行有效地用於拼寫檢查任務,而不是簡單的錯誤檢測來理解和糾正基於上下文的語法細微差別。
- >
- >將AI與雲函數集成:本文將AI功能集成到雲功能中,特別是使用AWS Lambda的集成,為構建在基於雲的環境中運行的拼寫檢查器提供了逐步指南。 在OpenAi中探索調用函數:本教程的關鍵部分是探索OpenAI模型中函數調用功能的探索,該功能允許結構化的JSON響應而不是純文本,從而可以開發更複雜和交互式AI-Power的應用程序。
- 雲功能
這是雲功能的代碼:>
此打字稿功能將成為AWS lambda的處理程序,接受HTTP請求作為輸入並返回HTTP響應。在上面的示例中,我們正在從傳入的HTTP請求中解構身體字段,將其解析給JSON並從請求正文中讀取屬性TextToCheck。
openai軟件包<span>// Entry point for AWS Lambda. </span><span>export async function spellcheck({ body }: { body: string }) { </span> <span>// Read the text from the request body. </span> <span>const { textToCheck } = JSON.parse(body); </span> <span>//... perform spellchecking </span> <span>// Return an HTTP OK response </span> <span>return { </span> statusCode<span>: 200, </span> body<span>: JSON.stringify(...) </span> <span>}; </span><span>} </span>
>要實現SpellChecker函數,我們將將TextTocheck發送到OpenAI,並要求AI模型為我們糾正任何拼寫錯誤。為了簡化這一點,我們可以在NPM上使用OpenAI包。該軟件包由Openai保留為OpenAI REST API周圍的方便的JavaScript/Typescript包裝器。它包括我們需要的所有打字稿類型,並使調用Chatgpt變得輕而易舉。
>>像這樣安裝OpenAI包:
然後,我們可以在函數處理程序中導入並創建OpenAI類的實例,並傳遞OpenAI API密鑰,在此示例中,該鍵存儲在稱為OpenAI_KEY的環境變量中。 (登錄OpenAi後,您可以在用戶設置中找到API密鑰。)
>示例文本
<span>npm install --save openai </span>
>最後,我們想要一些帶有拼寫錯誤的示例文本來對其進行測試,還有什麼比詢問chatgpt本身更好的地方!
>本文是對我們的拼寫檢查員的良好測試,因為它包含明顯的錯誤串行,例如“ Essense”,但也包含一些更複雜的語法錯誤,例如“原理”而不是“ principt”。這樣的錯誤將測試我們的拼寫檢查器,超出了僅查找字典中沒有出現的單詞的領域。 principle
>在我們的TextTocecheck輸入中尋找拼寫錯誤的最簡單方法是創建一個提示,該提示將要求Chatgpt執行拼寫檢查並將更正的版本返回給我們。稍後,在本教程中,我們將探索一種更強大的方法,我們可以從OpenAI API中獲取其他數據,但是目前,這種簡單的方法將是一個很好的第一次迭代。
我們將需要兩個提示。第一個是指示Chatgpt檢查拼寫錯誤的用戶提示
在以下文本中,更正拼寫和語法錯誤 我們還需要一個系統提示
,這將指導模型僅返回校正的文本。>
您是一個糾正文本的複制編輯器,您總是只用更正的文本,無解釋或其他說明回复。
>系統提示對於給模型一些初始上下文很有用,並指示其為所有後續用戶提示以某種方式行事。在此處的系統提示中,我們指示Chatgpt僅返回
校正文本,而不是用描述或其他領先的文本打扮。我們可以在OpenAI Playground中測試系統和用戶提示。
>對於API調用,我們將在OpenAI類中使用OpenAi.C.COREATE.CREATE({...})方法,我們在上面實例化並返迴響應消息。 將所有內容匯總在一起,以下代碼將將這兩個提示以及輸入文本一起發送到OpenAi.chat.completions.create({...})openai api上的端點。還請注意,我們正在指定該模型將其用作GPT-3.5-Turbo。我們可以為此使用任何OpenAI模型,包括GPT-4:>
>文本,json out
> 到目前為止,我們已經編寫了一個AWS lambda雲功能,該功能將發送一些文本到chatgpt並返回文本的更正版本,並刪除了拼寫錯誤。但是OpenAI包使我們可以做更多的事情。從我們的功能中返回一些結構化的數據真的不好,這些數據實際上列出了文本中所做的替代品嗎?這將使將此云功能與前端用戶界面集成到更加容易。幸運的是,OpenAI在API上提供了可以實現此功能的功能:函數調用。
>函數調用是> OpenAI模型中的一個功能,該模型允許Chatgpt使用一些結構化的JSON響應而不是簡單的消息。通過指示AI模型調用函數,並提供可以調用的功能的詳細信息(包括所有參數),我們可以從API中收到更有用的JSON響應。
>要使用函數調用,我們在聊天完成創建選項中填充函數數組。在這裡,我們告訴chatgpt,存在一個稱為makecorrections的函數,它可以用一個稱為替換的參數來調用:
<span>// Entry point for AWS Lambda. </span><span>export async function spellcheck({ body }: { body: string }) { </span> <span>// Read the text from the request body. </span> <span>const { textToCheck } = JSON.parse(body); </span> <span>//... perform spellchecking </span> <span>// Return an HTTP OK response </span> <span>return { </span> statusCode<span>: 200, </span> body<span>: JSON.stringify(...) </span> <span>}; </span><span>} </span>>在這裡對函數和所有參數的描述都很重要,因為Chatgpt無法訪問我們的任何代碼,因此它知道該功能的所有信息都包含在我們提供的描述中。參數屬性描述了Chatgpt可以調用的函數簽名,它遵循JSON模式來描述參數的數據結構。
上面的函數具有一個稱為替換的單個參數,該參數與以下打字稿類型對齊:
在JSON模式中定義此類型將確保我們從Chatgpt返回的JSON適合此可預測的形狀,並且我們可以使用JSON.PARSE()將其驗證為此類對象:
><span>npm install --save openai </span>
將它們全部放在一起
<span>// Import the OpenAI package </span><span>import OpenAI from "openai"; </span> <span>export async function spellcheck({ body }: { body: string }) { </span> <span>const { textToCheck }: { textToCheck: string } = JSON.parse(body); </span> <span>// Create a new instance of OpenAI... </span> <span>const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY }); </span> <span>//... perform spellchecking </span> <span>return { </span> statusCode<span>: 200, </span> body<span>: JSON.stringify(...) </span> <span>}; </span><span>} </span>>這是我們AWS lambda函數的最終代碼。它調用chatgpt並將校正的
列表
返回到一段文本中。>在這裡要注意的幾個額外的事情。如前所述,只有幾個OpenAI模型支持功能調用。這些模型之一是GPT-3.5-Turbo-0613,因此已在“完成端點”的呼叫中指定了這一點。我們還添加了function_call:{name:'makeCorrections'}到呼叫。該屬性是對模型的指令,我們希望它能返回調用我們的makecorrections函數所需的參數,並且我們不希望它返回聊天消息:>
此功能可以部署到AWS lambda,並使用以下請求主體通過HTTP來調用:>它將以這樣的JSON數組的形式返回更正的列表:
<span>// Import the OpenAI package </span><span>import OpenAI from "openai"; </span> <span>export async function spellcheck({ body }: { body: string }) { </span> <span>const { textToCheck }: { textToCheck: string } = JSON.parse(body); </span> <span>// Create a new instance of OpenAI. </span> <span>const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY }); </span> <span>const userPrompt = 'Correct the spelling and grammatical errors in the following text:\n\n'; </span> <span>const gptResponse = await openai.chat.completions.create({ </span> model<span>: "gpt-3.5-turbo", </span> messages<span>: [ </span> <span>{ </span> role<span>: "system", </span> content<span>: "You are a copy editor that corrects pieces of text, you always reply with just the corrected text, no explanations or other description" </span> <span>}, </span> <span>{ </span> role<span>: "user", </span> content<span>: userPrompt + textToCheck </span> <span>} </span> <span>] </span> <span>}); </span> <span>// The message.content will contain the corrected text... </span> <span>const correctedText = gptResponse.choices[0].message.content; </span> <span>return { </span> statusCode<span>: 200, </span> body<span>: correctedText </span> <span>}; </span><span>} </span>>
結論
<span>const gptResponse = await openai.chat.completions.create({ </span> model<span>: "gpt-3.5-turbo-0613", </span> messages<span>: [ ... ], </span> functions<span>: [ </span> <span>{ </span> name<span>: "makeCorrections", </span> description<span>: "Makes spelling or grammar corrections to a body of text", </span> parameters<span>: { </span> type<span>: "object", </span> properties<span>: { </span> replacements<span>: { </span> type<span>: "array", </span> description<span>: "Array of corrections", </span> items<span>: { </span> type<span>: "object", </span> properties<span>: { </span> changeFrom<span>: { </span> type<span>: "string", </span> description<span>: "The word or phrase to change" </span> <span>}, </span> changeTo<span>: { </span> type<span>: "string", </span> description<span>: "The new word or phrase to replace it with" </span> <span>}, </span> reason<span>: { </span> type<span>: "string", </span> description<span>: "The reason this change is being made", </span> <span>enum: ["Grammar", "Spelling"] </span> <span>} </span> <span>} </span> <span>} </span> <span>} </span> <span>} </span> <span>} </span> <span>} </span> <span>], }); </span>通過利用OpenAI API和一個雲功能,您可以創建不僅識別拼寫錯誤而且還了解上下文的應用程序,從而捕獲典型的拼寫檢查員可能會忽略的複雜語法細微差別。本教程為基礎提供了基礎,但是ChatGpt在語言分析和更正中的潛在應用是廣泛的。隨著AI的繼續發展,此類工具的功能也將如此。 >您可以在github上找到本教程的所有代碼。
<span>type ReplacementsArgType = { </span> changeFrom<span>: string, </span> changeTo<span>: string, </span> reason<span>: "Grammar" | "Spelling" </span><span>}[] </span>
>
以上是如何使用Chatgpt構建簡單的拼寫檢查程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),