ChatGPT API 开发人员实施指南

news/2024/7/22 13:57:53/文章来源:https://blog.csdn.net/Chaochao1984a/article/details/139252726

在技​​术以惊人的速度发展的世界中,ChatGPT API 已经成为游戏规则的改变者,为开发人员开辟了无限的可能性。ChatGPT API 使将类人人工智能的强大功能集成到您的应用程序中成为可能。

在本教程中,您将学习如何在应用程序中利用 ChatGPT API 构建内容生成工具,该工具可以获取用户对文章的要求并相应地生成文章。

在您的应用程序中实现 ChatGPT API

设置启动应用程序

为了帮助您快速入门,我们已经构建了内容生成工具的前端。您可以通过在本地计算机上运行以下命令来克隆它:

bash
git clone https://github.com/krharsh17/contentgpt.git

克隆项目后,通过运行以下命令将终端的工作目录更改为项目的根目录:

bash
cd contentgpt

接下来,通过运行以下命令安装项目所需的依赖项:

bash
yarn install

安装依赖项后,您可以使用以下命令运行应用程序:

bash
yarn dev

用户界面如下所示:

 

您将在该文件中找到此 UI 的完整代码pages/index.js。有三个输入字段要求用户输入文章的标题、文章的间距和首选字数。用户输入这些详细信息并单击最后的蓝色按钮后,应用程序就会向其/api/generate端点发送请求。该端点尚未实现,您将在此处集成 ChatGPT API。应用程序期望/api/generate端点使用以下格式的 JSON 对象进行响应:

json
{"content": "<article content here>"
}

您现在已准备好将 ChatGPT API 集成到您的应用程序中。

ChatGPT API 集成

GPT-4 API 的访问,而 Completions 端点则不提供。

使用 GPT 等大型语言模型 (LLM) 时,正确表述提示非常重要。出于本文的目的,您将使用以下提示来指导模型:

json
[{"role": "system","content": "You are a content generation tool. After the user provides you with the topic name, article length, and pitch of the article, you will generate the article and respond with ONLY the article in Markdown format and no other extra text."},{"role": "user","content": "Write an article on the topic <your topic here>. The article should be close to <your word length here> words in length. Here is a pitch describing the contents of the article: <your pitch here>"}
]

This provides the model 这为模型提供了两条输入消息作为提示。第一条消息定义了它的功能,即充当内容生成工具,并且仅响应所需的输出,没有其他支持文本,例如“当然!这是您的文章:”或 ChatGPT 经常在其响应中包含的任何类似内容。这是一条系统消息,意味着它是应用程序向模型提供的内部指令。

第二条消息要求模型根据给定的描述撰写文章。这是一条用户消息,意味着这是用户给出的、模型需要采取行动(响应)的消息。您可以在OpenAI 的转换指南中了解有关消息角色的更多信息。

请随意修改提示以生成更具体的响应。您的提示越具体,模型就越有可能以正确的内容做出响应。

在开始编写 API 调用以与 ChatGPT API 交互之前,您需要首先获取 OpenAI API 密钥。

获得 API 密钥后,创建一个.env在项目中调用的新文件,并按以下格式将密钥存储在其中:

bash
OPENAI_API_KEY=<your key here>

您现在可以通过在您的服务器环境中访问此密钥process.env.OPENAI_API_KEY

使用 REST API

您现在可以继续编写在应用程序中使用 ChatGPT API 的逻辑。要了解如何集成聊天端点,您通常必须查阅 ChatGPT API 的 API 参考。然而,为了避免研究该方法的体力劳动,您将让Pieces Copilot开始工作。

如果您还不知道,Pieces是一款开发人员生产力工具,可帮助您组织和丰富代码片段,以便您可以轻松引用并共享它们。为了提高开发人员的工作效率,Pieces 最近推出了他们的 copilot,这是一个聊天机器人,它利用人工智能和通过检索增强生成对工作流程的上下文理解,帮助您在开发应用程序时快速找到解决方案和实施。

要尝试一下,您首先需要设置 Pieces。安装 Pieces 桌面应用程序后,您可以通过单击转到... > Copilot 聊天导航到 Pieces Copilot 部分:

 

您将看到一个聊天屏幕。您现在可以输入以下消息,要求 Pieces Copilot 为您提供在 Next.js 应用程序中集成 ChatGPT API 的过程:

text
How to integrate the ChatGPT REST API in a Next.js app through server functions? Make use of inbuilt packages only and do not install any external dependencies

您会注意到 Pieces Copilot 详细解释了整个过程,并提供了设置客户端和服务器逻辑的说明:

 

您可以通过发送以下文本作为下一条消息来进一步缩短此输出:

text
Provide the server-side code only

您现在会注意到,copilot 为您提供了正确的服务器端代码来帮助您在演示应用程序中设置集成:

 

经过一些修改,最终的代码片段应如下所示:

js
export default function handler(req, res) {const {title, purpose, length} = JSON.parse(req.body)const baseURL = "https://api.openai.com/v1"const endpoint = "/chat/completions"const apiKey = process.env.OPENAI_API_KEYconst requestBody = {"model": "gpt-3.5-turbo","messages": [{"role": "system","content": "You are a content generation tool. After the user provides you with the topic name, article length, and pitch of the article, you will generate the article and respond with ONLY the article in Markdown format and no other extra text."},{"role": "user","content": "Write an article on the topic \"" + title + "\". The article should be close to " + length + " words in length. Here is a pitch describing the contents of the article: " + purpose}],max_tokens: length * 1.5}fetch(baseURL + endpoint, {method: "POST",body: JSON.stringify(requestBody),headers: {"Authorization": "Bearer " + apiKey,"Content-Type": 'application/json'}}).then(r => r.json()).then(r => {console.log(r)res.status(200).json({content: r.choices[0].message.content})}).catch(e => {console.log(e)res.status(500).json({content: "The article could not be generated. Error: " + JSON.stringify(e)})})}

您需要将此代码段保存在pages/api/generate.jsNext.js 项目的文件中。您现在可以使用该yarn dev命令运行该应用程序,这就是该工具应如何运行。

Copilot 的功能远不止代码生成。在浏览器中使用它来解释您在线找到的代码片段,或者在 IDE 中使用它来帮助您理解整个存储库。另外,它同时利用云和本地 LLM,因此您可以根据您的安全限制选择使用哪个 LLM 来回答问题和生成代码。对于企业客户,我们还提供将您的自定义 API 密钥输入到 Pieces 中的选项。

使用 Node.js 平台库

正如您在上面的代码片段中看到的,REST API 管理起来非常麻烦,并且在处理实际项目时,您很可能需要在 API 上编写一个包装器,以便您可以在项目中方便地使用它。也就是说,OpenAI 提供了一要安装它,请在项目的根目录中运行以下命令:

bash
yarn add openai

接下来,将文件中的代码替换pages/api/generate.js为以下代码片段:

js
// Import the package
const OpenAI = require("openai")export default function handler(req, res) {const {title, purpose, length} = JSON.parse(req.body)// Initialize the package with the API keyconst openai = new OpenAI({apiKey: process.env.OPENAI_API_KEY,});// The body remains the same as with the REST APIconst requestBody = {"model": "gpt-3.5-turbo","messages": [{"role": "system","content": "You are a content generation tool. After the user provides you with the topic name, article length, and pitch of the article, you will generate the article and respond with ONLY the article in Markdown format and no other extra text."},{"role": "user","content": "Write an article on the topic \"" + title + "\". The article should be close to " + length + " words in length. Here is a pitch describing the contents of the article: " + purpose}],}// Instead of making a fetch call, you use the package's method insteadopenai.chat.completions.create(requestBody).then(completion => {console.log(completion)res.status(200).json({content: completion.choices[0].message.content})}).catch(e => {console.log(e)res.status(500).json({content: "The article could not be generated. Error: " + JSON.stringify(e)})})}

您现在可以重新启动开发服务器并尝试再次运行该应用程序。它应该继续正常运行。这是因为即使您在实现中从 REST API 更改为 Node.js 包,集成逻辑仍然保持不变。在这里查看它的实际效果。

您现在已成功将 ChatGPT API 集成到内容生成应用程序中。请随意使用演示应用程序,尝试不同的 GPT 模型,或为提示添加更多特异性以获得更好的结果。您可以在此 GitHub 存储库的已完成分支上找到该应用程序的完整代码。

结论

本文演示了如何使用 REST API 和 Node.js SDK 在 Next.js 应用程序中使用 ChatGPT API。在此过程中,您还学习了如何使用Pieces Copilot通过快速生成代码来提高工作效率,而不是花时间筛选 ChatGPT API 文档。

开发人员生产力是Pieces提供的所有产品和服务的核心焦点。您还可以尝试Pieces 提供的Microsoft Teams 集成,使您能够提出与代码相关的问题并直接从 Microsoft Teams 工作区生成代码。请务必尝试 Pieces 并将API 参考保存在 Pieces 中以保持井井有条

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1054426.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精通推荐算法7:多任务学习 -- 总体架构

1 多任务学习的总体架构 目前的互联网主流推荐场景在大多数情况下需要优化多个业务目标。例如在淘宝商品推荐中&#xff0c;需要兼顾点击率和转化率。在抖音短视频推荐中&#xff0c;需要考虑完播率、播放时长、点赞率、评论率、关注率等目标。为了提升各项业务目标&#xff0…

【全开源】Java养老护理助浴陪诊小程序医院陪护陪诊小程序APP源码

打造智慧养老服务新篇章 一、引言&#xff1a;养老护理的数字化转型 随着老龄化社会的到来&#xff0c;养老护理需求日益凸显。为了更好地满足老年人及其家庭的需求&#xff0c;我们推出了养老护理助浴陪诊小程序系统源码。该系统源码旨在通过数字化技术&#xff0c;优化养老…

[AIGC] Nginx常用变量详解

Nginx非常强大&#xff0c;其主要功能包括HTTP服务器、反向代理、负载均衡等。Nginx的配置中有许多内置的变量&#xff0c;你可以在配置文件中使用这些变量进行灵活的配置。在本篇文章中&#xff0c;我们将介绍一些Nginx中常见的变量&#xff0c;包括proxy_add_header。 常见变…

Money Trees

思路分析: 利用双指针 l1始终作为起点,ri,不断更新终点 #include<iostream> #include<cstring> #include<string> #include<algorithm> #define int long long using namespace std; int w[2000005],h[2000005],s[2000005]; int t,n,m,l,r; signed m…

嵌入式单片机笔试题

DC-DC 和 LDO两者有何区别&#xff1f; DC-DC转换器&#xff08;直流-直流转换器&#xff09;和LDO&#xff08;低压差线性稳压器&#xff09;都是用于电源管理的设备&#xff0c;但它们在原理和特性上有一些显著的区别&#xff1a; 原理&#xff1a; DC-DC转换器通过改变输…

前端 CSS 经典:图片边框

前言&#xff1a;有这么一个业务&#xff0c;需要边框随着图片宽度的变化而变化&#xff0c;比如一些聊天的气泡框等。 实现原理&#xff1a;使用 border-image 属性 效果图&#xff1a; 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><he…

vue项目中使用json编辑器

实现效果&#xff1a; 借助插件json-editor-vue3实现效果如图一&#xff0c;如果嫌丑可以通过类名改一下样式如图二。 实现过程&#xff1a; 安装插件&#xff1a;npm install json-editor-vue3 文档链接&#xff1a;GitCode - 开发者的代码家园 <script setup name&quo…

day17

第一题 本题可以采用快速排序的思想&#xff0c;适应随机数指定和三指针划分数组为三个区域的思想&#xff1a; 其中指针的移动细节如上题故事&#xff0c;如下所示&#xff1a; 当a区域的商都大于k时&#xff0c;我们要查找的k位置元素就在左区域&#xff0c;我们进一步在左区…

【LORA协议栈】工作记录

一、硬件资源 MCU型号&#xff1a;STM32F401xE。Lora芯片&#xff1a;SX1276。硬件看门狗。ATT7022E三相电能专用计量芯片。 二、功能简介 作为一个组件&#xff0c;通过485与网关或者各种子设备连接在一起。支持boot升级。通过SPI与LORA芯片通信。接收和发送数据。有3路通信…

vue3 调用本地exe

1、注册表注册 在注册表中直接按照图2注册数据&#xff1b;也可以按照图3注册表的文件创建文档&#xff0c;然后点击打开&#xff0c;将会将注册表写入window系统。 图2 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\F1] "URL:F1 Protocol Handler" &q…

Rust 赋能前端 -- 写一个 File 转 Img 的功能

所有耀眼的成绩,都需要苦熬,熬得过,出众;熬不过,出局 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 Rustwasm-bindgen/js-sys/web-sysWeb WorkerWebAssemblyWebpack/Vite配置WebAssemblyOffscreenCanvas脚手架生成项…

Android Ktor 网络请求框架

Ktor 是一个由 JetBrains 开发的用于 Kotlin 编程语言的应用框架&#xff0c;旨在创建高性能的异步服务器和客户端应用程序。由于完全基于 Kotlin 语言&#xff0c;Ktor 能够让开发者编写出简洁、可读性强且功能强大的代码&#xff0c;特别适合那些已经熟悉 Kotlin 的开发人员。…

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

ROS运行文件(LaunchFile)和参数(Parameter)

本文主要介绍ROS的Launch File和Parameter概念&#xff0c;通过Launch File启动单个或多个节点&#xff0c;并通过Parameter配置启动参数。 更多内容&#xff0c;访问专栏目录获取实时更新。 当你的应用中包含了很多工作包&#xff0c;每个工作包了又包含了多个节点时&#xff…

香橙派AIpro开发板初体验

香橙派AIpro开发板初体验 一、引言 在当前的AI发展浪潮中&#xff0c;边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板&#xff0c;凭借其强大的算力和丰富的接口&#xff0c;为AI边缘计算提供了强大的支持。最近&#xff0c;我也是拿到了官…

VUE3 学习笔记(6):data数据的监听、表单绑定、操作DOM

data数据的监听&#xff08;侦听&#xff09; 对于data的值的监听&#xff0c;可以用watch中与data中的参数命名一致的值做为函数进行获取监听变动前后的值再做逻辑判断&#xff0c;如下图所示。 示例代码 <template><div><p :class"classDemo">{…

用Python实现办公自动化

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

机器学习-3-特征工程的重要性及常用特征选择方法

参考特征重要性:理解机器学习模型预测中的关键因素 参考[数据分析]特征选择的方法 1 特征重要性 特征重要性帮助我们理解哪些特征或变量对模型预测的影响最大。 特征重要性是数据科学中一个至关重要的概念,尤其是在建立预测性任务的模型时。想象你正在尝试预测明天是否会下…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目&#xff0c;使用IDEA打开hmall项目&#xff0c;查看项目结构如图&#xff1a; 我们要部署的就是其中的hm-service&#xff0c;其中的配置文件采用…

开源与闭源:AI大模型发展路径的博弈

一、引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;大模型以其卓越的性能和广泛的应用前景&#xff0c;成为了近年来技术发展的热点。然而&#xff0c;在大模型的发展路径上&#xff0c;开源与闭源两种模式一直存在着激烈的博弈。本文将深入探讨这两种模式在大模…