ChatGPT搭建AI网站实战

1.概述

ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模型快速搭建一个AI网站。

2.内容

在实战中,我发现ChatGPT的最大优势在于其自然流畅的对话交互能力。ChatGPT能够自动理解用户的意图和提出的问题,并针对性地给出回答和建议。同时,它还可以基于已有的上下文信息生成更加丰富的回复,从而实现更加自然和贴近人类的交互效果。

下面我将分享一些关于如何使用ChatGPT的实战经验,大概流程如下所示:

在使用ChatGPT前,我们需要对数据进行预处理。预处理的目的是将原始文本转换为模型可以理解的格式。具体来说,需要进行的预处理步骤包括:分词、标记化、向量化等。这些步骤都可以使用常见的NLP工具库来实现,如NLTK、spaCy、transformers等。在预处理完数据后,我们需要使用训练数据来训练ChatGPT模型。通常情况下,我们会使用一些优秀的深度学习框架来实现模型的训练,如PyTorch、TensorFlow等。在模型训练过程中,我们需要设置一些超参数,如学习率、批量大小、模型深度等。在模型训练完成后,我们需要对模型进行评估。评估的目的是了解模型的性能和表现,从而决定是否需要进行进一步的调整和优化。常见的模型评估指标包括:准确率、召回率、F1值等。在完成模型训练和评估后,我们需要将ChatGPT应用到实际场景中。通常情况下,我们需要将ChatGPT集成到我们的应用程序中,如在线客服、智能助手等。在部署过程中,我们需要考虑一些问题,如性能、可靠性、安全性等。

3.如何使用ChatGPT快速实现一个AI网站呢?

使用ChatGPT实现一个AI网站,大概步骤如下所示:

首先,您需要确定您的AI网站将用于哪些目的和哪些受众。您的目标可能是提供在线客服、智能问答、语音识别、自动翻译等功能。您的受众可能是您的客户、读者、访问者等。通过明确您的目标和受众,您可以更好地规划您的网站架构和设计。要构建一个AI网站,您需要选择一个Web开发框架。常用的Web开发框架包括Django、Flask、Express等。这些框架提供了许多常见的功能和模板,可以帮助您更快速地开发网站,并提高开发效率。集成ChatGPT是实现AI网站的关键步骤。您可以使用Python或JavaScript等编程语言来调用ChatGPT API并将其嵌入到您的Web应用程序中。这样,您的网站就可以通过ChatGPT提供更好的用户体验和服务。例如,用户可以通过与ChatGPT交互来获取问题的答案、进行语音交互等。

为了让用户能够更好地与ChatGPT交互,您需要创建一个用户友好的界面。您可以使用HTML、CSS、JavaScript等技术来设计和创建您的用户界面。您需要考虑到用户的需求和体验,并确保您的界面简洁、易用、美观等。为了让ChatGPT能够准确地回答用户的问题,您需要对ChatGPT进行训练。您可以使用自然语言处理技术来训练ChatGPT,以便它能够理解和响应用户的问题。您可以使用开源的数据集和算法来训练ChatGPT,并优化模型以提高精度和效率。

在将您的网站部署到生产环境之前,您需要对它进行测试和优化。您应该检查所有功能并确保它们能够正常运行,同时还应该优化性能和用户体验,以提高用户满意度。您可以使用自动化测试工具来测试您的网站,并使用性能分析工具来识别瓶颈和优化点。您可以收集用户反馈并进行改进,以不断改善您的网站。

当您准备好将您的网站部署到生产环境时,您需要选择一个合适的Web服务器和数据库。常用的Web服务器包括Apache、Nginx等,常用的数据库包括MySQL、PostgreSQL等。您还需要选择一个合适的云服务提供商,如AWS、Google Cloud等,并将您的应用程序部署到云服务器上。一旦您的网站部署到生产环境,您需要进行定期的维护和升级。您应该定期备份您的数据并更新您的应用程序以确保安全性和稳定性。您还应该持续地优化您的用户体验和功能,以满足用户的需求和期望。

4.基于promptable快速实现

如果你不懂算法,那么可以通过在promptable 快速建立prompt,然后部署生成一个PromptID,通过这个PromptID直接调用OpenAI的接口得到模型输出的结果。操作如下:

4.1 编写一个hook模块

用来调用OpenAI的接口,获取输出结果,实现代码如下所示:

import { addMessage, getHistoryString } from "@/utils/chatHistory";
import React, { useEffect } from "react";export const useChatGpt = (message, promptId, chatHistory) => {// Send user meesage to api, meesage and prompt in body// then update state value with response//   console.log("Hook api call", message, promptId);const [data, setData] = React.useState("");const [isLoading, setIsLoading] = React.useState(false);const [isError, setIsError] = React.useState(false);const [history, setHistory] = React.useState(chatHistory);const [isSuccess, setIsSuccess] = React.useState(false);const fetchData = async () => {setIsLoading(true);try {const response = await fetch("/api/chatgpt", {method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({message,promptId,chatHistory: getHistoryString(chatHistory),}),}).then((res) => res.json());if (response.reply) {console.log("Hook api call response", response.reply);setData(response.reply);setIsSuccess(true);setHistory(addMessage(chatHistory, response.reply, "agent"));} else {setIsError(true);}} catch (error) {setIsError(true);}setIsLoading(false);};useEffect(() => {setIsError(false);setIsSuccess(false);if (message) {fetchData();}}, [message]);useEffect(() => {setHistory(chatHistory);}, [chatHistory]);useEffect(() => {if (promptId) {setIsError(false);setIsSuccess(false);setHistory([]);}}, [promptId]);return {data,isLoading,isError,history,isSuccess,};
};

4.2 编写一个页面组件

通过编写一个页面组件,用来实现与后台接口服务交互使用,该模块用来调用模型并得到输出结果,实现代码如下所示:

import { useChatGpt } from "@/hook/useChatGpt";
import { addMessage } from "@/utils/chatHistory";
import { Button, TextField } from "@mui/material";
import React, { useEffect } from "react";
import { ChatHistoryFrame } from "./ChatHistoryFrame";const promptId = "xxxxxx"; // 通过Prompt自动生成获取IDexport const ChatContainer = () => {const [pendingMessage, setPendingMessage] = React.useState("");const [message, setMessage] = React.useState("");const [chatHistory, setChatHistory] = React.useState([]);const { isLoading, history, isSuccess, isError } = useChatGpt(message,promptId,chatHistory);useEffect(() => {if (isSuccess || isError) {setMessage("");}}, [isSuccess, isError]);return (<div id="chat-container"><h1>MOVIE to emoji</h1></a><ChatHistoryFrame chatHistory={chatHistory} isLoading={isLoading} /><div id="chat-input"><TextFieldtype="text"onChange={(e) => {setPendingMessage(e.target.value);}}/><Buttonstyle={{backgroundColor: "black",width: "80px",}}variant="contained"onClick={() => {setMessage(pendingMessage);setChatHistory(addMessage(history || [], pendingMessage, "user"));}}>Send</Button><Buttonstyle={{color: "black",width: "80px",borderColor: "black",}}variant="outlined"onClick={() => {setMessage("");setChatHistory([]);}}>Clear</Button></div></div>);
};

4.3 ChatGPT核心模块

编写一个调用ChatGPT接口逻辑的核心模块,用来与API交互得到输出结果,具体实现细节如下:

import { PromptableApi } from "promptable";
import { Configuration, OpenAIApi } from "openai";
import GPT3Tokenizer from "gpt3-tokenizer";const configuration = new Configuration({apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const tokenizer = new GPT3Tokenizer({ type: "gpt3" });const chatgpt = async (req, res) => {const { message, promptId, chatHistory } = req.body;console.log("api call entry", message, promptId);if (!message) {res.status(400).json({ error: "Message is required" });return;}if (!promptId) {res.status(400).json({ error: "Prompt ID is required" });return;}// call prompt ai api and openai apiconst reply = await getReply(message, promptId, chatHistory || "");res.status(200).json({ reply });return;
};const getReply = async (message, promptId, chatHistory) => {// get prompt from prompt ai api based on promptIdif (!promptId) {throw new Error("Prompt ID is required");}const promptDeployment = await PromptableApi.getActiveDeployment({promptId: promptId,});console.log("prompt deployment", promptDeployment);if (!promptDeployment) {throw new Error("Prompt deployment not found");}// replace prompt with messageconst beforeChatHistory = promptDeployment.text.replace("{{input}}", message);const numTokens = countBPETokens(beforeChatHistory);const afterChatHistory = beforeChatHistory.replace("{{chat history}}",chatHistory);const finalPromptText = leftTruncateTranscript(afterChatHistory,4000 - numTokens);const revisedPrompt = {...promptDeployment,text: finalPromptText,};console.log("revised prompt", revisedPrompt);// call openai apiconst response = await openai.createCompletion({model: revisedPrompt.config.model,prompt: revisedPrompt.text,temperature: revisedPrompt.config.temperature,max_tokens: revisedPrompt.config.max_tokens,top_p: 1.0,frequency_penalty: 0.0,presence_penalty: 0.0,stop: revisedPrompt.config.stop,});console.log("openai response", response.data);if (response.data.choices && response.data.choices.length > 0) {return response.data.choices[0].text;} else {return "I'm sorry, I don't understand.";}
};function countBPETokens(text) {const encoded = tokenizer.encode(text);return encoded.bpe.length;
}function leftTruncateTranscript(text, maxTokens) {const encoded = tokenizer.encode(text);const numTokens = encoded.bpe.length;const truncated = encoded.bpe.slice(numTokens - maxTokens);const decoded = tokenizer.decode(truncated);return decoded;
}export default chatgpt;

4.4 使用依赖

最后,我们工程所使用的依赖包,如下所示:

"dependencies": {"@emotion/react": "^11.10.5","@emotion/styled": "^11.10.5","@mui/material": "^5.11.6","@next/font": "13.1.6","eslint": "8.32.0","eslint-config-next": "13.1.6","gpt3-tokenizer": "^1.1.5","next": "13.1.6","openai": "^3.2.1","promptable": "^0.0.5","react": "18.2.0","react-dom": "18.2.0"}

4.5 编写Prompt

在完成核心模块的后台逻辑编写后,可以访问Prompt后台,通过编写Prompt来获取ID,操作如下:

4.6 部署Prompt

完成Prompt编写后,我们就可以部署Prompt了,部署成功后会生成一个PromptID,如下图所示:

 这里,在部署Prompt里面有参考代码实现,具体如下:

import axios from 'axios'// 这里面的xxxxxxx是部署Prompt自动生成的ID,这里我用xxxxxxx替换了
const { data } = await axios.get('https://promptable.ai/api/prompt/xxxxxxx/deployment/active')const prompt = data.inputs?.reduce((acc, input) => {// Replace input.value with your value!return acc.replaceAll(`{{${input.name}}}, ${input.value}`)
}, data.text)const res = await axios.get('https://openai.com/v1/completions', {data: {// your promptprompt,// your model configs from promptableconfig: {...data.config,// add any other configs here}}
})// Your completion!
console.log(res.data.choices[0].text)

4.7 ChatGPT实现的AI网站预览

最后,我们基于OpenAI最新的gpt-3.5-turbo模型,开发一个AI网站,效果如下:

 这里为了节省token费用,通过点击“停止对话”按钮暂时输出了。因为使用OpenAI的接口是按照token来算费用的,英文字母算一个token,一个汉字算两个token,收费明细如下:

5.总结

本文介绍了如何使用ChatGPT来实现一个AI网站。通过选择合适的Web开发框架、集成ChatGPT、创建用户界面、训练ChatGPT、测试和优化、部署到生产环境以及进行维护和升级等步骤,您可以构建一个功能强大的AI网站,并提供更好的用户体验和服务。

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

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

相关文章

20230623百度 Vs Google,百度差在哪里?【喊话李彦宏:为中华造芯IC】

20230623百度 Vs Google&#xff0c;百度差在哪里&#xff1f; 2023/6/23 18:45 百度搜索&#xff1a;google PDK 【百度可以为未来长期投资什么】 https://blog.csdn.net/cf2SudS8x8F0v/article/details/126187739 人人皆可免费造芯&#xff1f;谷歌开源芯片计划已释放90nm、…

2023年网络安全趋势

数据安全越来越重要。 我国《数据安全法》提出“建立健全数据安全治理体系”&#xff0c;各地区部门均在探索和简历数据分类分级、重要数据识别与重点保护制度。 数据安全治理不仅是一系列技术应用或产品&#xff0c;更是包括组织构建、规范制定、技术支撑等要素共同完成数据…

大模型时代下的全新变革

大模型的技术突破为人类的技术视野撕开全新AI宇宙的一角&#xff0c;让人类立刻畅想万花筒般的未来。当相信成为一种力量&#xff0c;它将助推不可估量的飞跃发展。在九章云极DataCanvas新产品发布会上&#xff0c;九章云极DataCanvas公司董事长方磊从AI科技企业角度阐述了独到…

ChatGPT实践应用和大模型技术解析

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 Column of Computer Vision Institute 从技术原理、实战、应用等多维角度&#xff0c;共同探讨ChatGPT和大模…

AI+人类,实现高效网络安全

导语 聊天机器人和生成式人工智能&#xff08;如 ChatGPT&#xff09;突然成为主流让很多人感到担忧。很多人开始担忧&#xff0c;人工智能取代人的时代已经到来。 幸运的是&#xff0c;事实并非如此。 更有可能的情况是&#xff0c;人类将与 AI 合作创建工作角色的混合模型。…

世优科技创始人纪智辉:数字人技术与应用场景

2023年3月25日&#xff0c;由映魅咨询主办的2023年迎新交流论坛在上海举行。在本次迎新论坛中&#xff0c;映魅咨询邀请了在教育科技领域、元宇宙人工智能领域以及出海服务领域的优秀企业代表和与会听众们进行了深入的分享探讨。 世优科技创始人兼CEO纪智辉出席了本次论坛的元…

ChatGPT背后模型被证实具有人类心智!斯坦福新研究炸了,知名学者:“这一天终于来了”...

‍‍ 丰色 萧箫 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT原来是拥有心智的&#xff1f;&#xff01; “原本认为是人类独有的心智理论&#xff08;Theory of Mind&#xff0c;ToM&#xff09;&#xff0c;已经出现在ChatGPT背后的AI模型上。” 这是来自斯坦福大学的…

广东小学计算机,广州11区电脑派位和小学对口直升表,你想知道的都在这里了!...

很多家长在购买学位房的时候&#xff0c;除了考虑到地段小学的教学质量&#xff0c;也会参考对口初中的实力如何。上了这个小学&#xff0c;孩子初中去哪儿呢&#xff1f;&#xff01; 科普目前&#xff0c;广州市公办小学升公办初中主要通过“电脑派位”和“对口直升”两大方式…

【微信小程序】粤语教学平台-粤言粤语

展示视频 粤言粤语小程序演示视频 1 项目简介 1.1 项目背景 1.1.1 创意来源 根据中共中央办公厅、国务院办公厅印发的《关于实施中华优秀传统文化传承发展工程的意见》&#xff0c;我小组计划开发一款推广中国部分地区传统文化的可广泛推广的软件。为紧贴国家计划在2025年前…

音乐标签修改 android,音乐标签修改(Star Music Tag Editor)

Star Music Tag Editor可以对你音乐当中的各种标签信息来进行修改&#xff0c;在某些音乐信息出现错误之时你能够利用这款软件来直接的进行改正&#xff0c;让你的标签信息变得更加的容易进行分类&#xff0c;如果你感兴趣的话就快来下载这款Star Music Tag Editor&#xff01;…

项目三:声乐盒(音节+音乐)实验

摘要&#xff1a; 本项目以AT89C52为基础&#xff0c;通过矩阵键盘实现7个基本音节的低、中、高音&#xff0c;并在数码管上加以显示&#xff0c;同时通过按键切换模式&#xff0c;不同模式可以播放不同的歌曲 一.主体思路 单片机控制蜂鸣器需要一定频率的方波信号&#xff0…

计算机中班音乐,【精品】中班音乐教案6篇

【精品】中班音乐教案6篇 作为一名无私奉献的老师&#xff0c;就难以避免地要准备教案&#xff0c;编写教案有利于我们科学、合理地支配课堂时间。教案应该怎么写呢&#xff1f;下面是小编为大家整理的中班音乐教案6篇&#xff0c;仅供参考&#xff0c;希望能够帮助到大家。 中…

在线绘图网站

https://www.freedgo.com/

https://app.diagrams.net/在线画图的一些技巧

最近工作需要,实践了在线画图的case, 下面就把使用心得记录一下: 关于diagrams 的一些小技巧: 登入的网页是:Flowchart Maker & Online Diagram Software 1: 利用group 的选项,这个可以整体移动,不用担心会漏掉一个: 就是选中一个图标,然后,看右边arrange 下面…

在线画图网站Graph Editor的使用

网站链接 链接 网站介绍 CS Academy是一个在线的算法学习和竞赛的网站&#xff0c;打开网站左侧导航栏中的App目录下有一个可以在线画图的应用Graph Editor&#xff0c;用来画图&#xff08;有向、无向&#xff09;非常好用。 网站使用 网站的界面如下&#xff1a; 左侧为…

一个实例讲讲 ChatGPT 推理

吴恩达与 OpenAI 官方联合推出了 1.5 小时的免费视频课&#xff1a;地址&#xff1a; https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines 今天我学了第四讲&#xff0c;ChatGPT Inferring&#xff0c;即推理 教学中&#xff0c;给的例子是情绪判断。 我很…

AUTOSAR的现状和利弊

利 篇 做AUTOSAR项目一段时间了&#xff0c;做完了几个基于AUTOSAR架构的控制器软件项目&#xff0c;也完成了符合功能安全ASILC的AUTOSAR架构的软件平台。 在做这些项目的过程中&#xff0c;通过项目招标&#xff0c;供应商考察&#xff0c;对比同行以及自己亲自实施的情况&…

软件测试助理利弊,女生做软件测试的利弊都有什么?

在编程领域&#xff0c;女程序猿是相对较少的&#xff0c;因为编程思维即逻辑思维就难倒了大部分女生。但是在另外一个领域&#xff0c;女生却在近来几年占据越来越多&#xff0c;那就是软件测试行业。相对于其他IT岗位来说&#xff0c;软件测试对技术的要求没有那么高&#xf…

机器人改变生活利弊英语作文_机器人的利弊作文

人类在里面住上一辈子也没关系,只有操纵器和一个透明的东西,却随时可以看到机器人在街道上走来走去? 以下是小学生作文网小编为你推荐的末来的机器人作文 &#xff0c;希望对你有所帮助。... 2018-12-28 阅读全文 >> 机器人是自动控制机器(Robot)的俗称&#xff0c;自动…

使用ChatGPT生成思维导图

前言 当我们要处理一些复杂的事务&#xff0c;特别是需要组织和整理很多信息时&#xff0c;思维导图是一种非常有用的工具。它是一种图像化的表示方法&#xff0c;通过将相关的概念和信息写在一个中心主题的周围&#xff0c;然后随着我们的思考和积累&#xff0c;不断地添加和…