直接在前端调用 GPT-3 API

news2025/2/24 13:16:33

〇、效果展示

在这里插入图片描述

一、代码:ask.html + app.js

ask.html(内嵌css)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>ChatGPT Web Example</title>
    <style>
      /* 你的 CSS 代码 */
      body {
        font-family: Arial, sans-serif;
        padding: 20px;
      }

      h1 {
        text-align: center;
        margin-bottom: 20px;
      }

      #chatbox {
        border: 1px solid gray;
        padding: 10px;
        margin-bottom: 20px;
        height: 300px;
        overflow-y: scroll;
      }

      .message {
        margin-bottom: 10px;
      }

      .user-message {
        text-align: right;
      }

      .chatgpt-message {
        text-align: left;
      }

      #inputbox {
        width: 100%;
        padding: 10px;
        font-size: 16px;
        margin-bottom: 20px;
      }

      #submit {
        background-color: cornflowerblue;
        color: white;
        padding: 10px 20px;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        float: right;
      }
    </style>
  </head>
  <body>
    <div id="chatbox">
      <!-- 消息列表 -->
    </div>
    <div id="input-container">
      <input id="inputbox" type="text" placeholder="请输入您的问题">
      <button id="submit">提交</button>
    </div>
    <!-- 加载动画元素 -->
    <div id="loading" style="display: none;">
      <div class="loading-icon"></div>
      <div class="loading-text">等待回答...</div>
    </div>
  </body>
  <script src="app.js"></script>
</html>

app.js

const chatboxEl = document.getElementById('chatbox');
const inputEl = document.getElementById('inputbox');
const submitEl = document.getElementById('submit');
const loadingEl = document.getElementById('loading');

submitEl.addEventListener('click', async () => {
  const input = inputEl.value;
  addMessage(input, 'user');
  inputEl.value = '';

  // 显示加载动画
  loadingEl.style.display = 'block';

  // 使用 OpenAI API 获取 ChatGPT 的回答
  const response = await getResponseFromAPI(input);

  // 隐藏加载动画
  loadingEl.style.display = 'none';

  addMessage(response, 'chatgpt');
});

function addMessage(text, sender) {
  const messageEl = document.createElement('div');
  messageEl.classList.add('message');
  messageEl.classList.add(`${sender}-message`);
  messageEl.innerHTML = text;
  chatboxEl.appendChild(messageEl);
  chatboxEl.scrollTop = chatboxEl.scrollHeight;
}

async function getResponseFromAPI(input) {
    const endpoint = 'https://api.openai.com/v1/completions';
    const apiKey = 'sk-...'; //换成自己的API Key
    const prompt = input;

    const response = await fetch(endpoint, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${apiKey}`
        },

        body: JSON.stringify({
            model: "text-davinci-003",
            prompt,
            max_tokens: 100,
            n: 1,
            stop: null,
            temperature: 0.5,
        }),
    });
    const result = await response.json();
    return result.choices[0].text;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS 轻松实现‘毛玻璃’效果

毛玻璃1. backdrop-filt 属性2. filter 属性3. backdrop-filter && filter4. 参考资料1. backdrop-filt 属性 通过为元素添加backdrop-filter:blur(模糊值) 这个 CSS 属性&#xff0c;元素所在的区域后方包括后方的其他元素会模糊或颜色有所偏移&#xff0c;元素本身包…

深拷贝的五种实现方式

一、什么是深拷贝和浅拷贝 浅拷贝是创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff0c;如果属性是引用类型&#xff0c;拷贝的就是指向内存的地址 &#xff0c;所以如果其中一个对象改变…

npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

为了解决npm命令无法正常运行的问题 接上个博客 安装完新版node后使用npm命令会出现以下错误 大致意思就是识别不了npm命令是干啥的 解决方案: 1.首先确定是不是软件没有获得管理员权限运行,右键程序选择管理员权限运行 2.如果管理员权限运行后依然出现错误,检查node的配置…

React 框架

文章目录一、React 框架简介二、配置环境三、组件&#xff08;Component&#xff09;四、Component 组件的组合与交互一、React 框架简介 介绍 CS 与 BS结合&#xff1a;像 React&#xff0c;Vue 此类框架&#xff0c;转移了部分服务器的功能到客户端。将CS 和 BS 加以结合。客…

java简历项目经验案例(java简历项目经验怎么写)

如何描述项目经验-seo简历项目经验怎么&#xff1f;seo简历项目经验怎么写 写自己从事过的什么项目。写具体什么模块。如果没有就写自己能达到什么水平&#xff0c;能做出什么模块。 什么叫项目经验&#xff1f;什么叫项目经验?简历中的项目经验可以写些什么? 项目经验与工作…

flex布局之flex-direction

一、flex布局的原理 1,flex是”flexible Box”的缩写&#xff0c;意为”弹性布局”&#xff1b; 2.当我们为父盒子设为flex布局以后&#xff0c;子元素的float、clear和vertical-align属性将会失效。 言而简之&#xff1a;flex布局原理就是通过给父盒子添加flex属性&#xff0…

VUE项目部署

前端项目的部署 1.1 开发完的vue的项目 首先运行 以下命令 对项目进行打包 npm run build1.2 安装nginx服务器 ​ nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛…

若依RuoYi-Vue前后端项目启动流程

1.git找到RuoYi-Vue RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供了 Vue3 的版本 2.本地创建文件夹&#xff0c;cmd进入该文件夹下并进行克隆项目 git cl…

webpack安装与使用(详细)

一.什么是webpack? webpack是现代javascript应用程序的静态模块打包器&#xff0c;当 webpack 处理应用程序时&#xff0c;它会递归地构建一个依赖关系图(dependency graph)&#xff0c;其中包含应用程序需要的每个模块&#xff0c;然后将所有这些模块打包成一个或多个 bundl…

蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

这里把我的想法和思路写出来&#xff0c;恳请批评指正&#xff01; 目录 考前准备 试题1&#xff1a; 试题2&#xff1a; 试题3&#xff1a; 试题4&#xff1a; 试题5&#xff1a; 试题6&#xff1a; 试题7&#xff1a; 试题8&#xff1a; 试题9&#xff1a; 试题1…

Vue开发实例(05)之搭建项目主页面头部、导航、主体等页面布局

作者简介 作者名&#xff1a;编程界明世隐 简介&#xff1a;CSDN博客专家&#xff0c;从事软件开发多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是从零开始一步步把学习成长、深知学习和积累的重要性&#xff0c;喜欢跟广大ADC一起打野升级&#xff0c;欢迎您关注&…

【Node.js实战】一文带你开发博客项目(API 对接 MySQL)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

事件循环(Event Loop)

文章目录单线程事件循环机制&#xff08;Event Loop&#xff09;1、同步任务与异步任务同步任务异步任务宏任务微任务2、执行过程3、执行顺序4、举例&#xff1a;实例1实例2单线程 JavaScript是一种单线程的编程语言&#xff0c;同一时间只能做一件事&#xff0c;所有任务都需…

【Node.js实战】一文带你开发博客项目(MySQL基础)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿 offer&#xff08;秋招&#xff09; &#x1f947;推荐学习&…

简单易懂 关于nextTick()的理解

前言 学习Vue的过程中&#xff0c;大家肯定都使用过nextTick()&#xff0c;关于nextTick()的使用时机&#xff0c;大家肯定都知道&#xff0c;那么它的工作原理是怎样的呢&#xff0c;本文就简单说一下它的nextTick()的工作原理。 nextTick的使用时机 首先记住&#xff1a;n…

vue中 router.beforeEach() 的用法

导航守卫 主要是通过跳转或取消得方式守卫导航 在前端路由跳转中&#xff0c;路由跳转前都是会经过beforeEach&#xff0c;而beforeEach可以通过next来控制到底去哪个路由。根据这个特性我们就可以在beforeEach中设置一些条件来控制路由的重定向。 常见的使用场景有&#xff1…

WordPress 中的常规设置

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且…

CSS实现背景图片模糊——毛玻璃效果 | 浅谈CSS属性 filter、backdrop-filter

&#x1f4ad;&#x1f4ad; ✨&#xff1a; CSS实现背景图片模糊——毛玻璃效果 | 浅谈CSS属性 filter、backdrop-filter   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 因为很多东西来不及去做去看可是时间很快总是赶不上&#xff0c;所以要去成长呀&…

01-Node-Express系统框架搭建(express-generator)

文章目录一、使用express-generator创建项目1.1 安装express-generator模块1.2 生成express项目结构1.3 启动项目1.4 设置nodemon自启项目二、手动创建一个Express项目2.1 创建项目文件夹并初始化2.2 安装express模块2.3 创建项目主文件2.4 编辑app.js文件2.5 启动项目2.6 使用…

【CSS应用篇】——CSS如何实现渐变背景

目录 CSS 定义了两种渐变类型&#xff1a; 格式&#xff1a; 如何使用&#xff1a; ​编辑使用透明度&#xff1a; CSS 定义了两种渐变类型&#xff1a; 线性渐变&#xff08;向下/向上/向左/向右/对角线&#xff09;&#xff1b;径向渐变&#xff08;有中心向周围展开&am…