如何使用Chatgpt構建簡單的拼寫檢查程序
在本教程中,我們將學習如何使用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 } = <{ textToCheck: string }>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 } = <{ textToCheck: string }>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>
上面的函數具有一個稱為替換的單個參數,該參數與以下打字稿類型對齊:
在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>
列表
返回到一段文本中。>在這裡要注意的幾個額外的事情。如前所述,只有幾個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>
<span>type ReplacementsArgType = { </span> changeFrom<span>: string, </span> changeTo<span>: string, </span> reason<span>: "Grammar" | "Spelling" </span><span>}[] </span>
>
以上是如何使用Chatgpt構建簡單的拼寫檢查程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

Arm64 架構開源軟件的 CI/CD 難題與解決方案 在 Arm64 架構上部署開源軟件需要一個強大的 CI/CD 環境。然而,Arm64 和傳統 x86 處理器架構的支持水平之間存在差異,Arm64 通常處於劣勢。面向多種架構的基礎設施組件開發人員對工作環境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因採用不太流行的平台而需要改變開發流程。 性能:平台和支持機制具有良好的性能,確保在支持多個平台時部署方案不會因速度不足而受影響。 測試覆蓋率:對所有平台同時進行效率、合規性和

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显著改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

我們都體驗過傳統自動化平台如Zapier和IFTTT的神奇之處。它們擅長連接應用程序並自動化簡單的“如果這樣,則那樣”序列:新表單提交創建電子表格行,傳入郵件觸發Slack警報。簡單、有效,且對於基本任務來說是巨大的時間節省者。但是,你的實際工作流程有多麼簡單?一旦你的工作流程需要理解細微的上下文、優雅地處理錯誤或處理非結構化數據,這些工具往往會遇到障礙。它們的簡單性使其易於使用,但也成為一種限制。當簡單規則不夠用時:考慮一下客戶支持。票務系統湧入非結構化數據——聊天片段、屏幕截圖、複雜的用戶描
