<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用Node js來調(diào)用chat API實現(xiàn)智能問答的功能

          共 8283字,需瀏覽 17分鐘

           ·

          2024-07-23 08:00

          本文適合對OPenAI的API接口應(yīng)用實戰(zhàn)感興趣的小伙伴閱讀。

          歡迎關(guān)注前端早茶,與廣東靚仔攜手共同進階~


          前言

          下面我們利用參數(shù),使用node js來調(diào)用chat API實現(xiàn)智能問答的功能。

          為了使朋友們更清晰地了解怎么去調(diào)用chat API去生成一個智能問答系統(tǒng),這里采用了基于node.js Visual Studio Code的極簡代碼的方式來進行示例。

          正文

          使用Visual Studio Code來對接Chat API的具體流程如圖3.2所示。

          3.2 智能問答交互序列圖

          序列圖解釋如下:

          1)輸入答案:用戶在UI界面輸入其需要回答的問題。

          2)調(diào)用Chat API:前端直接傳入?yún)?shù),調(diào)用chat API服務(wù)。

          3)用戶身份校驗:OpenAI 服務(wù)器利用調(diào)用者提供的key,校驗用戶身份。

          4)獲取問題的答案:OpenAI 服務(wù)器生成問題的答案。

          5)返回答案:前端UI獲取Chat API的相應(yīng)結(jié)果。

          6)處理答案:前端UI根據(jù)需要對答案進行處理。

          7)展示答案:前端UI將處理后的答案展示給用戶。

          后面是利用Visual Studio Code 來調(diào)用Chat API去實現(xiàn)智能問答的步驟。

          具體步驟

          初始化node.js項目

          首先,打開VS Code,新建項目。項目建好后,在主菜單選擇”Terminal”,打開終端,輸入命令:

          npm init -y 

          注意:此命令會將項目初始化,生成項目所需的文件夾和模塊。

          然后,我們在項目初始化后,新建“.evn”文件,作為環(huán)境變量文件,evn文件里輸入申請OpenAI API時獲得的key,如下:

          API_KEY=sk-XWre0xkvyusgJHqODU8LQIE5bkFJxrlT1A9zR3276FRSH0WA

          最后在終端子輸入命令進行加載環(huán)境變量:

          npm i dotenv openai

          引入環(huán)境變量文件

          完成node.js項目初始化之后,開始配置并引入環(huán)境變量。

          首先新建名為“question.js”的文件,在第一行加上引入環(huán)境變量的代碼,具體如下:

          import { config } from "dotenv"               //引入配置環(huán)境變量組件
          config()                                  //進行環(huán)境變量配置
          console.log(process.env.API_KEY)

          然后打開同一目錄下的“package.json”文件,在其中加入運行配置,代碼結(jié)果如下:

          {
            "name""vs",
            "version""1.0.0",
            "description""",
            "type""module",
            "main""index.js",
            "scripts": {
              "dev""node question.js"
            },
            "keywords": [],
            "author""",
            "license""ISC",
            "dependencies": {
              "dotenv""^16.0.3",
              "openai""^3.2.1"
            }
          }

          最后,在完成上面的配置修改后,打開終端,輸入npm run dev并回車,可以看到引入環(huán)境變量成功,輸出結(jié)果如下:

          sk-XWre0xkvyusgJHqODU8LQIE5bkFJxrlT1A9zR3276FRS

          調(diào)用chat API接口

          由于node.jsopenai組件可以直接調(diào)用chat API的接口,因此引入openai組件即可省去很多步驟。

          首先,在代碼中加上引入openai組件中的Configuration,OpenAIApi兩個類,具體如下:

          import { Configuration, OpenAIApi } from "openai"

          然后,引入上述兩個類之后,在其后定義接口及接口配置,其中的請求參數(shù)具體賦值按照上一節(jié)所述寫入,代碼如下:

          const res = await openai
              .createChatCompletion({
                  //請求參數(shù)
                  model: "gpt-3.5-turbo",
                  messages: [{ role: "user", content: input }],
                  temperature: 0.2,
                  max_tokens: 1000,
                  top_p: 1,
                  n: 1,
              }
              )

          增加輸入輸出命令行

          在完成了接口及其配置的代碼之后,需要對問題的輸入與答案輸出進行處理。這是一個輕量級代碼的極簡示例,因而我們使用簡潔的readline組件來作為輸入輸出介質(zhì)。

          首先,定義輸入輸出的代碼如下:

          import readline from "readline"   //引入readline組件的readline類
          //定義輸入輸出界面
          const userInterface = readline.createInterface({
              input: process.stdin,
              output: process.stdout
          })

          然后對調(diào)用openai的類的方法進行改造,使其將問題內(nèi)容作為輸入,Chat API返回的答案作為輸出,具體代碼如下:

          //調(diào)用openai組件,發(fā)送請求
          userInterface.on("line", async input => {
              const res = await openai
                  .createChatCompletion({
                      //請求參數(shù)
                      model: "gpt-3.5-turbo",
                      messages: [{ role: "user", content: input }],
                      temperature: 0.2,
                      max_tokens: 1000,
                      top_p: 1,
                      n: 1,
                  }
                  )
              console.log(res.data.choices[0].message.content)
              userInterface.prompt()
          })

          完整代碼

          至此,我們的極簡智能問答功能已經(jīng)完成??偞a清單包括以下文件:

          l.env文件:該文件通常用于存儲應(yīng)用程序的環(huán)境變量,這些變量可以包含敏感的配置信息,如數(shù)據(jù)庫連接字符串、API 密鑰、密碼等。環(huán)境變量可以在應(yīng)用程序的不同部分之間共享,并且可以在運行時根據(jù)不同的環(huán)境進行配置,這個例子里存儲了key的值。

          lpackage-lock.json文件:該文件是項目中的一個自動生成的文件,用于管理項目的依賴關(guān)系和版本信息。它主要用于鎖定依賴版本、提高項目的構(gòu)建速度、確保依賴的完整性、版本控制中的共享和協(xié)作。文件通常由 npm 在安裝依賴時自動生成和更新,無需手動編輯。

          lpackage.json文件:該文件在項目中起著非常重要的作用,它用于管理項目的元數(shù)據(jù)、依賴關(guān)系、腳本和其他配置信息,幫助開發(fā)者更好地組織和管理項目,并與其他開發(fā)者共享和協(xié)作。

          lquestion.js文件:主要代碼執(zhí)行的js文件,此系統(tǒng)的功能性代碼在這里實現(xiàn)。

          lworkspace.code-workspace文件:該文件在 中用于定義工作區(qū)的配置信息,包括項目管理、編輯器布局、首選項設(shè)置等,幫助開發(fā)者更好地組織和管理項目,并在團隊協(xié)作中提供一致的開發(fā)環(huán)境。

          lnode_modules文件夾:此文件夾是在 Node.js 項目中用于存儲第三方依賴模塊的文件夾。當你在 Node.js 項目中使用 npm 或者 yarn 等包管理工具安裝依賴時,這些依賴模塊會被下載并存放在 node_modules 文件夾中。通常來說,此文件夾由項目自動產(chǎn)生及維護,無需人工干預(yù)。

          這里需要手動添加或修改的代碼有三個文件:question.js、package.json、.evn,其余文件均使用初始化(前面輸入的“npm init -y ”命令)后生成的文件即可。

          question.js代碼如下:

          import { config } from "dotenv"
          import { Configuration, OpenAIApi } from "openai"
          import readline from "readline"
          //讀取配置文件中的key
          const openai = new OpenAIApi(
              new Configuration({
                  apiKey: process.env.API_KEY,
              })
          )

          //定義輸入輸出界面
          const userInterface = readline.createInterface({
              input: process.stdin,
              output: process.stdout
          })

          userInterface.prompt()

          //調(diào)用openai組件,發(fā)送請求
          userInterface.on("line", async input => {
              const res = await openai
                  .createChatCompletion({
                      //請求參數(shù)
                      model: "gpt-3.5-turbo",
                      messages: [{ role: "user", content: input }],
                      temperature: 0.2,
                      max_tokens: 1000,
                      top_p: 1,
                      n: 1,
                  }
                  )
              console.log(res.data.choices[0].message.content)
              userInterface.prompt()
          })
          package.json代碼如下:
          {
            "name""vs",
            "version""1.0.0",
            "description""",
            "type""module",
            "main""index.js",
            "scripts": {
              "dev""node question.js"  //手動修改此行
            },
            "keywords": [],
            "author""",
            "license""ISC",
            "dependencies": {
              "dotenv""^16.0.3",
              "openai""^3.2.1"
            }
          }

          上面的demo出至OPenAI的API接口應(yīng)用實戰(zhàn)這本書

          感興趣的朋友可以看看~

          最后

          包郵送書

          免費抽送 3 本,包郵!
          OPenAI的API接口應(yīng)用實戰(zhàn)
          活動規(guī)則如下:

           抽獎規(guī)則 

          1:從「本文在看」中隨機抽取 2幸運讀者

          2:在07月26日 開獎前我會隨機時間發(fā)布一條朋友圈,第 22個點贊的人即可中獎

          一共送 三 本?。。?/p>

          開獎時間2024 年 07 月 26 日 21:00

          注意事項:提前加我微信好友,避免開獎后聯(lián)系不到導(dǎo)致機會作廢

          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  老师的粉嫩小又紧水又多A片视频 | 日本三级高清视频组 | 中文黄色三级片 | 俺来也,俺去也 | 欧美综合社区 |