首頁 > 科技週邊 > IT業界 > 如何使用Chatgpt構建簡單的拼寫檢查程序

如何使用Chatgpt構建簡單的拼寫檢查程序

William Shakespeare
發布: 2025-02-09 11:24:10
原創
782 人瀏覽過

如何使用Chatgpt構建簡單的拼寫檢查程序

在本教程中,我們將學習如何使用chatgpt在雲功能中構建拼寫檢查器。

OpenAI的大型語言模型Chapgpt不僅僅是聊天界面。它是針對一系列任務的強大工具,包括翻譯,代碼生成以及我們將在下面看到的,甚至拼寫檢查。通過其REST API,Chatgpt提供了一種簡單而極其有效的方法,可以在項目中添加AI語言分析和發電能力。

>您可以在github上找到本教程的所有代碼。

>

鑰匙要點

    利用chatgpt進行高級拼寫檢查:本教程演示瞭如何通過OpenAI API進行有效地用於拼寫檢查任務,而不是簡單的錯誤檢測來理解和糾正基於上下文的語法細微差別。
  1. >
  2. >將AI與雲函數集成:本文將AI功能集成到雲功能中,特別是使用AWS Lambda的集成,為構建在基於雲的環境中運行的拼寫檢查器提供了逐步指南。 在OpenAi中探索調用函數:本教程的關鍵部分是探索OpenAI模型中函數調用功能的探索,該功能允許結構化的JSON響應而不是純文本,從而可以開發更複雜和交互式AI-Power的應用程序。
  3. 雲功能

這是雲功能的代碼:>

此打字稿功能將成為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本身更好的地方!

如何使用Chatgpt構建簡單的拼寫檢查程序

>本文是對我們的拼寫檢查員的良好測試,因為它包含明顯的錯誤串行,例如“ Essense”,但也包含一些更複雜的語法錯誤,例如“原理”而不是“ principt”。這樣的錯誤將測試我們的拼寫檢查器,超出了僅查找字典中沒有出現的單詞的領域。 principle princional都是有效的英語單詞,因此我們的SpellChecker將需要使用它們出現的上下文來正確檢測此錯誤。真實的測試!

>文本中,文字輸出

>在我們的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>
登入後複製
登入後複製
>在這裡對函數和所有參數的描述都很重要,因為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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板