ChatGPT-接口调用
一、简介
1、什么是OpenAI
OpenAI是一个非营利研究公司,致力于研究人工智能领域。他们的GPT模型可用于生成基于文本的图像,包括自然语言描述的图像、语音转换为图像等。
在本文中,我们将使用OpenAI的API来生成文字描述
二、相关技术介绍
1、深度学习模型
深度学习是一种基于人工神经网络,对数据进行建模和学习的机器学习方法。
它的主要优势在于,可以对大量的复杂数据进行训练和学习,以实现有意义的预测和决策。在图像生成方面,深度学习模型被广泛应用。
2、GAN模型
GAN(Generative Adversarial Networks)是一种深度学习模型,它由生成器和判别器两部分组成。判别器用于判断输入的数据是否真实,生成器用于生成尽可能逼真的数据。这种模型可以用于图像生成、视频生成、文本生成等领域。
3、TensorFlow框架
TensorFlow是谷歌开源的深度学习框架,它提供了丰富的工具和API,可以帮助开发人员更轻松地实现深度学习模型。在本文中,我们将使用TensorFlow框架来训练和部署我们的模型。
2、搭建OpenAI API环境
要开始使用OpenAI API,您需要注册以获取API密钥,并将其与API绑定。注册OpenAI账户并创建API密钥是非常简单的,只需要遵循官方文档中提供的指导即可。
获取API key
前往地址 https://platform.openai.com/account/api-keys
登录账号,然后获取key
3、配置API参数
我们可能需要提供以下参数:
text:输入的文本内容
model:生成图像的模型名称
prompts:附加提示文本,有助于增加图像的多样性
temperature:随机性的强度,影响样本的多样性。温度越高,生成的图像样式越多样化
接口文档
https://platform.openai.com/docs/api-reference/completions/create
请求参数解析:
字段 | 说明 |
---|---|
model | 可选参数。语言模型,这里选择的是text-davinci-003 |
prompt | 必选参数。即用户的输入。 |
max_tokens | 可选参数,默认值为 16。最大分词数,会影响返回结果的长度。 |
temperature | 可选参数,默认值为 1,取值 0-2。该值越大每次返回的结果越随机,即相似度越小。 |
top_p | 可选参数,与temperature类似。 |
n | 可选参数,默认值为 1。表示对每条prompt生成多少条结果。 |
stream | 可选参数,默认值为false。表示是否回流部分结果。 |
三、编写前端代码调用接口
可以从本博客中
生活
–>chatGPT
页面查看效果
直接使用前端代码调用OpenAI的http接口
- 需要在 xhr.setRequestHeader(“Authorization”, “Bearer 你的key”) 这里配置你的key,如果不知道从哪里找key,请看前文
千万不将带有你自己key的前端代码上传到网上, 会被OPAI检测出来并将你当前暴露的key给删除掉(所以本前端代码仅适合本地测试)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Ai - Chat</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #333;
margin: 0;
padding: 0;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 15px;
}
.filter-menu {
background-color: #f4f4f4;
padding: 20px;
border-radius: 10px;
}
.filter-menu h4 {
margin: 0;
font-size: 24px;
font-weight: bold;
}
.form-control {
width: 100%;
height: auto;
margin: 20px 0;
padding: 10px;
font-size: 18px;
line-height: 1.5;
color: #333;
background-color: #f4f4f4;
border: 1px solid #ccc;
border-radius: 10px;
resize: none;
}
.btn {
display: inline-block;
font-size: 18px;
font-weight: bold;
color: #fff;
background-color: #333;
border: none;
border-radius: 10px;
padding: 15px 25px;
cursor: pointer;
transition: background-color 0.2s ease;
}
.btn:hover {
background-color: #222;
}
.spinner-border {
margin-right: 10px;
}
#chatgpt-response {
width: 100%;
height: auto;
margin: 20px 0;
padding: 10px;
font-size: 20px;
line-height: 1.5;
color: #0000FF;
font-weight: bold;
background-color: #f4f4f4;
border: 1px solid #ccc;
border-radius: 10px;
overflow: auto;
}
</style>
<script>
async function callCHATGPT() {
var responseText1 = document.getElementById("chatgpt-response");
responseText1.innerHTML = ""
function printMessage(message) {
var responseText = document.getElementById("chatgpt-response");
var index = 0;
// 创建一个定时器,每隔一段时间打印一个字符
var interval = setInterval(function() {
responseText.innerHTML += message[index];
index++;
// 当打印完成时,清除定时器
if (index >= message.length) {
clearInterval(interval);
}
},
150); // 每隔50毫秒打印一个字符
}
var xhr = new XMLHttpRequest();
var url = "https://api.openai.com/v1/completions";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Bearer 你的key");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var json = JSON.parse(xhr.responseText);
var response = json.choices[0].text;
// 将CHATGPT的返回值输出到文本框
var responseText = document.getElementById("chatgpt-response");
var index = 0;
// 创建一个定时器,每隔一段时间打印一个字符
var interval = setInterval(function() {
responseText.innerHTML += response[index];
index++;
// 当打印完成时,清除定时器
if (index >= response.length) {
clearInterval(interval);
}
},
50); // 每隔50毫秒打印一个字符
}
};
var data = JSON.stringify({
"prompt": document.getElementById("chat-gpt-input").value,
"max_tokens": 2048,
"temperature": 0.5,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"model": "text-davinci-003"
});
console.log(data);
await printMessage('正在思考,请等待......');
await xhr.send(data);
}
</script>
</head>
<body>
<div class="filter-menu text-center mb-40">
<h4>与Ai对话,请描述您的需求-支持中文、英语、日本语等</h4>
</div>
<textarea class="form-control" id="chat-gpt-input" placeholder="输入描述" rows="3" resize="none"
style="width: 135%; margin: 0 auto; background-color: #f4f4f4; color: #333; border: 1px solid #ccc; border-radius: 12px;"></textarea>
<button onclick="callCHATGPT()" autocomplete="off" class="btn btn-large" href="#"
style="background-color: #333; color: #f4f4f4; border-radius: 10px">
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>回答
</button>
<textarea class="form-control" id="chatgpt-response"
placeholder="请耐心等待回答 Ai生成它很快,但是由于网络问题我们需要等待,通常内容越长等待越久 如果长时间没反应请刷新页面重试" rows="26" resize="none"
style="width: 150%;height: auto; margin: 0 auto; background-color: #f4f4f4; color: #333; border: 1px solid #ccc; border-radius: 10px; overflow: scroll;"
readonly="true"></textarea>
1、实现效果
在实现效果方面,我们能够成功地从API中生成文字,并将其展示。通过调整API的参数和选择,我们还能够获得不同风格和多样性的文字。
当然,我们本地调用需要使用到魔法上网工具(请自行解决)