AIGC学习分享(二):openAI(API接口)它来了!

6,133 阅读6分钟

一、前言:

记得第一次发文章,和大家一起初识了AIGC,了解了何为AIGC、为什么要学习AIGC、并如何简单使用AIGC,过了这么多天,大家可能忘记了,所以有兴趣的小伙伴可以先看前一篇文章,再来看这篇,你对AIGC会有更加深刻的印象。 (AIGC学习分享(一):初识AIGC - 掘金 (juejin.cn)),那么根据上一篇文章的最后,我们提出可以使用openAI的api接口来实现简单的需求,那么它是什么呢??请看下面详解👇

二、API接口

老规矩,还是先简单介绍一下我们主角(API)的含义吧!

API(Application Programming Interface) —— 应用程序接口,它是由一组定义了软件系统之间交互方式的规范集合,用于在不同的软件之间进行通信和交互。简而言之,它就是一个可以为其他软件提供特定服务的接口,而且API有很多种分类,咱就不在这赘述了,总之在以后的开发过程中会经常遇到,由于它的快速扩展功能可以提高开发效率,传统程序员可以 避免因"造轮子" 而浪费大量的时间,并且它还有降低模块之间的耦合度的特性,大大增强了程序的后续可维护性

三、OpenAI API

OpenAI API是由OpenAI提供的一种人工智能服务,允许开发者利用OpenAI训练的大型语言模型(如GPT)进行文本生成、自然语言处理等任务。通过API,开发者可以将其应用程序连接到OpenAI的模型,并利用其强大的语言理解和生成能力。 要使用OpenAI API,首先需要注册OpenAI的开发者账号,并获得API密钥。然后,可以使用该密钥通过HTTP请求与OpenAI的服务器进行通信,向模型发送文本输入并接收模型生成的文本输出。

所以接下来我们看一下如何用JS实现这种人工智能服务,看看如何使用openAI吧

四、简单的人工智能服务

首先,我们需要为vscode安装node以便可以直接运行JS代码,这个相信大家都安装了,如果未安装,可以自行百度寻找。在下载后,我们创建一个项目文件chat,用vscode打开,接下来跟着我操作,为你的项目添加智能服务吧。

image.png

在文件指定的终端打开,显示如下:

image.png

在终端输入: npm init -y 进行项目初始化

  • npm 是node 的 package management 包管理器
  • init 初始化 -y 快速访问

我们会发现该文件下多了一个package-json

image.png

然后再输入:npm i openai

  • 这个就是chatgpt AIGC包
  • i 是 install的简写
  • openai 第三方的AI模块
  • 下载到本地的node_modules 目录下

然后目录又会多出一个node_modules文件夹

image.png

好,现在你已经为项目加入了openAI需要的资源文件到本地,这个openai就是我们所需的文件 image.png

开始:在创建的index.js文件内写入以下代码。

// require 关键字  首字母大写的类 JS是大小写敏感的
const OpenAI = require('openai')

在这行代码中,require('openai')是用于导入名为"openai"的第三方库的语法。

请注意,具体的库名称和路径可能会根据你的项目配置和第三方库的实际情况而有所不同。确保你已经正确安装了"openai"库,并且已经将其配置为可以在你的项目中使用。

接下来再写入:

//实例化 openai 配置
const client = new OpenAI({
          apiKey: 'sk-j4YqHmXxctMQBB7p4yOXbG0L3APpIwftnHFFFzvfa7lDLfyG',
          baseURL: 'https://api.chatanywhere.tech/v1'
})

这里简单解释就是 实例化一个OpenAI对象,添加OpenAI API Key,这个密钥是免费的,但是可能会无法使用(无法用就是过期了,你去找别的吧!),一般情况下直接连接的key不用填写域名,但是如果要填的话就是api.chatanywhere.tech/v1 或者api.openai.com/v1 前者可能更快一点,这两个都是baseURL的值哦,别填错了!

接下来:

async function main(){
          const prompt = `    
          <tr class="item">
          <td width="100" valign="top">
                  <a class="nbg" href=" " title="对你的想象">
                      < img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.webp" width="75" alt="对你的想象" class="">
                  </a >
          </td>
          <td valign="top">
              <div class="pl2">
                  <a href="https://movie.douban.com/subject/35503073/" class="">
                      对你的想象
                      / <span style="font-size:13px;">关于你的想法 / 概念中的你</span>
                  </a >
                  <p class="pl">2024-03-16(西南偏南电影节) / 2024-05-02(美国网络) / 安妮·海瑟薇 / 尼古拉斯·加利齐纳 / 艾拉·鲁宾 / 安妮·玛莫罗 / 瑞德·斯科特 / 帕芮·马费尔德 / 乔丹·亚伦·霍尔 / 玛蒂尔达·吉安诺普洛斯 / Meg Millidge / 奇克·曼诺哈 / Ray Cham / Jaiden...</p >
                      <div class="star clearfix">
                              <span class="allstar30"></span>
                              <span class="rating_nums">5.9</span>
                              <span class="pl">(21306人评价)</span>

                      </div>
              </div>
          </td>
      </tr>
      这里是一段电影html代码,我需要你通过这段代码获取电影名(name),图片(img),简介(info),评分(score),评论人数(commentsNumber).请使用括号的单词以json格式返回。
        `
          const chatCompletion = await client.chat.completions.create({
                    model: 'gpt-3.5-turbo',  //适合聊条的模型   有多种 ,选择适合的
                    messages: [{
                                        role: 'user',  //作为使用者 向大模型发送一些content
                                        content: prompt   
                    }]
          })
          console.log(chatCompletion.choices);
}
main();

main函数是程序主入口函数,且main函数内部会有异步任务 这两个是搭配使用的async + await

image.png

在函数前加入async关键字表示这是一个异步函数,其返回值是一个Promise对象,然后此代码配合await关键字使用,表示暂停函数的执行,等待一个Promise对象解决或者说完成某个任务,一旦解决,await表达式就将返回其解决值,再执行异步函数。

这里就是让函数等待上面实例化的openai对象(client)去使用chat功能完成create的任务,然后参数则是选择使用的openai模型的哪一个,并向大模型传入一个message对象和content。

最终用node执行js代码:

image.png

这里生成的content内容取决于你用messages传入的,我们也可以自己定义prompt字符串。读者可以自行选择使用。

最后分享几个OpenAI API Key:

  • sk-r4N8AJ6qidnIWrkqsilwlUMekVpKhoVJ3VEaz8Ss0LUUi7bH
  • sk-0icNotaB0sMgI1xQmk5wAV4iXbgHSH9NV3zmAdI1OJPxFPBQ
  • sk-4EALZWXkk4Qdv18mRi2R7uY5f4i3vA05IYGhiTVVURIG7nZo

ps:如果发现启动不了,请更换密钥。(都不行的话就是过期了)

  • 如果该篇文章对你有益,请不要吝啬你的赞哦,欢迎点赞和关注,也欢迎在评论区指正,谢谢。

总结

还是那句话,随着AI的快速爆发,AIGC的浪潮也开始席卷各行各业,现在!!让我们把握时代的潮流,把握AIGC带来的机遇,请拥抱人工智能,拥抱AIGC!!!