」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 ChatGPT API 與 Node.js 集成

如何將 ChatGPT API 與 Node.js 集成

發佈於2024-11-09
瀏覽:825

Como Integrar a API do ChatGPT com Node.js

將 ChatGPT API 與 Node.js 整合是向應用程式添加自然語言處理功能的強大方法。在這篇文章中,我們將探討如何設定集成,從安裝必要的函式庫到實作 ChatGPT API 呼叫。

1. 先決條件

  • Node.js 安裝在您的電腦上。
  • 一個 OpenAI 帳戶和一個有效的 API 金鑰。
  • 基本上熟悉 JavaScript 和 Node.js。

2. 安裝依賴項

首先,建立一個新的 Node.js 專案並安裝必要的依賴項。我們將使用 axios 發出 HTTP 請求,並使用 dotenv 來管理環境變數。

mkdir chatgpt-nodejs
cd chatgpt-nodejs
npm init -y
npm install axios dotenv

3. 配置項目

在您的專案目錄中,建立一個 .env 檔案來儲存您的 OpenAI API 金鑰:

OPENAI_API_KEY=your-api-key-here

現在,建立一個index.js檔案並加入基本程式碼來設定dotenv和axios的使用:

require('dotenv').config();
const axios = require('axios');

const apiKey = process.env.OPENAI_API_KEY;
const apiUrl = 'https://api.openai.com/v1/chat/completions';

async function getChatGPTResponse(prompt) {
    try {
        const response = await axios.post(apiUrl, {
            model: "gpt-4",
            messages: [{ role: "user", content: prompt }],
            max_tokens: 150,
        }, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        const reply = response.data.choices[0].message.content;
        console.log('ChatGPT:', reply);
    } catch (error) {
        console.error('Error fetching response:', error.response ? error.response.data : error.message);
    }
}

getChatGPTResponse('Olá, como você está?');

4. 理解代碼

  • dotenv:從 .env 檔案載入環境變數。
  • axios:對 ChatGPT API 進行 POST 呼叫。
  • apiKey:儲存請求中使用的 API 金鑰。
  • apiUrl:ChatGPT API URL。
  • getChatGPTResponse:非同步函數,將提示傳送到 ChatGPT 並顯示回應。

5. 運行代碼

要運行程式碼,請執行指令:

node index.js

如果一切配置正確,您將在控制台中看到 ChatGPT 回應。

6. 客製化整合

您可以調整 API 呼叫中的多個參數,例如模型、回應令牌的數量 (max_tokens),甚至可以在訊息清單中包含上下文訊息。例如:

const conversation = [
    { role: "system", content: "Você é um assistente útil." },
    { role: "user", content: "Me explique o que é uma API." }
];

async function getChatGPTResponse(messages) {
    try {
        const response = await axios.post(apiUrl, {
            model: "gpt-4",
            messages: messages,
            max_tokens: 150,
        }, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        const reply = response.data.choices[0].message.content;
        console.log('ChatGPT:', reply);
    } catch (error) {
        console.error('Error fetching response:', error.response ? error.response.data : error.message);
    }
}

getChatGPTResponse(conversation);

7. 結論

將 ChatGPT API 與 Node.js 整合是一項相對簡單的任務,可為您的應用程式添加高級 AI 功能。借助 API 的靈活性,您可以創建從會話助手到複雜的自然語言處理系統的所有內容。

嘗試不同的提示和設置,看看 ChatGPT 如何適應您的特定需求!


這是開始整合的基本範例。隨著您對 API 越來越熟悉,您可以探索更高級的功能,例如微調模型和使用更複雜的對話上下文。

版本聲明 本文轉載於:https://dev.to/lucaspereiradesouzat/como-integrar-a-api-do-chatgpt-com-nodejs-4g7l?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • PHP SimpleXML解析帶命名空間冒號的XML方法
    PHP SimpleXML解析帶命名空間冒號的XML方法
    在php 很少,請使用該限制很大,很少有很高。例如:這種技術可確保可以通過遍歷XML樹和使用兒童()方法()方法的XML樹和切換名稱空間來訪問名稱空間內的元素。
    程式設計 發佈於2025-07-13
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-07-13
  • 如何將來自三個MySQL表的數據組合到新表中?
    如何將來自三個MySQL表的數據組合到新表中?
    mysql:從三個表和列的新表創建新表 答案:為了實現這一目標,您可以利用一個3-way Join。 選擇p。 *,d.content作為年齡 來自人為p的人 加入d.person_id = p.id上的d的詳細信息 加入T.Id = d.detail_id的分類法 其中t.taxonomy ...
    程式設計 發佈於2025-07-13
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-07-13
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-07-13
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-07-13
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-07-13
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-07-13
  • 您如何在Laravel Blade模板中定義變量?
    您如何在Laravel Blade模板中定義變量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配變量對於存儲以後使用的數據至關重要。在使用“ {{}}”分配變量的同時,它可能並不總是最優雅的解決方案。 幸運的是,Blade通過@php Directive提供了更優雅的方法: $ old_section =...
    程式設計 發佈於2025-07-13
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-13
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-13
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-07-13
  • CSS可以根據任何屬性值來定位HTML元素嗎?
    CSS可以根據任何屬性值來定位HTML元素嗎?
    靶向html元素,在CSS 中使用任何屬性值,在CSS中,可以基於特定屬性(如下所示)基於特定屬性的基於特定屬性的emants目標元素: 字體家庭:康斯拉斯(Consolas); } 但是,出現一個常見的問題:元素可以根據任何屬性值而定位嗎?本文探討了此主題。 的目標元素有任何任何屬性值,...
    程式設計 發佈於2025-07-13
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示 僅通過Python的MlStripper 來簡化剝離過程,Python Standard庫提供了一個專門的功能,MLSTREPERE,MLSTREPERIPLE,MLSTREPERE,MLSTREPERIPE,MLSTREPERCE,MLST...
    程式設計 發佈於2025-07-13
  • Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    程式設計 發佈於2025-07-13

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3