1. 介绍
在这篇教程中,我们将学习如何创建一个简单的ChatGPT插件。我们将创建一个"Hello World"插件,这个插件只有一个功能:当用户输入"Hello World Plugin Say Hello"时,插件会回复"Hello, world!"。
2. 创建你的第一个ChatGPT插件
2.1 使用express构建API
Express是一个基于Node.js的web应用框架,它提供了一种简单而灵活的方式来创建web应用,包括API。我们选择使用Express,是因为它的简单性和灵活性,以及它强大的功能,如路由、中间件、模板引擎等。
例如,我们可以使用Node.js和Express来创建一个简单的API。首先,我们需要在一个新的文件(例如,server.js
)中编写以下代码:
const express = require('express');
const app = express();
const port = 3000;
app.use(express.static('public'));
app.get('/hello', (req, res) => {
res.json({ message: 'Hello World!' });
}); // 构建一个/hello的get方法
app.listen(port, () => {
console.log(`Server is running at <http://localhost>:${port}`);
});
我们需要在根目录创建一个名为'public'的文件夹,用于存放后续需要用到的静态文件。
2.2 创建Plugin manifest
接下来,我们需要创建一个插件清单(Plugin manifest)。
插件清单(Plugin manifest)是一个描述我们插件基本信息的JSON文件。它包括了插件的名称、描述、API URL等信息。这些信息对于ChatGPT来说是非常重要的,因为它们告诉ChatGPT插件是什么,它能做什么,以及如何与它进行交互。因此,创建一个准确且完整的插件清单是非常重要的。
我们可以在项目的/public/.well-known目录下创建一个新的文件ai-plugin.json
,并在这个文件中定义插件清单(Plugin manifest):
{
"schema_version": "v1",
"name_for_human": "Hello World Plugin",
"name_for_model": "hello_world",
"description_for_human": "A simple plugin that says hello to the world.",
"description_for_model": "A simple plugin that says hello to the world.",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "<http://localhost:3000/openapi.yaml>",
"is_user_authenticated": false
},
"logo_url": "<http://localhost:3000/logo.png>",
"contact_email": "support@example.com",
"legal_info_url": "<http://www.example.com/legal>"
}
在这个文件中,我们定义了插件的名称、描述、API URL等信息。我们的API URL是http://localhost:3000/openapi.yaml
,这是我们即将创建的OpenAPI插件描述文件的URL。
2.3 创建OpenAPI插件描述文件
OpenAPI插件描述文件是一个用于描述API的规范。通过使用OpenAPI插件描述文件,我们可以清晰地描述API的行为,包括我们的API有哪些endpoint,这些endpoint接受什么样的请求,以及这些端点会返回什么样的响应。这对于我们来说是非常有用的,因为它可以帮助我们更好地理解和设计我们的API。
我们可以在项目的/public目录下创建一个名为openapi.yaml
的新文件,并在其中定义OpenAPI描述:
openapi: 3.0.0
info:
title: Hello World
version: 1.0.0
paths:
/hello:
get:
operationId: hello
summary: Returns a hello world message
responses:
'200':
description: A JSON object containing a hello world message
content:
application/json:
schema:
$ref: '#/components/schemas/HelloResponse'
components:
schemas:
HelloResponse:
type: object
properties:
message:
type: string
在这个文件中,定义了一个GET方法的/hello
endpoint。当这个endpoint被访问时,它会返回一个状态码为200的响应,响应的message是"Hello, world!"。
2.4 在本地运行你的插件
现在,插件已经准备好了,我们可以在本地运行它,看看它是否能够正确工作。
首先,需要启动Express应用。可以使用以下命令来启动应用:
node server.js
然后,我们可以在浏览器中访问http://localhost:3000/hello
,看看插件是否能够正确返回{"message":"Hello World!"}
。
如果一切顺利,我们就可以开始在ChatGPT中安装和测试我们的插件了。
2.5 使用ngrok内网穿透
由于我们的Express应用运行在本地服务器上,这意味着它默认情况下只能在我们的计算机上访问。然而,为了让ChatGPT能够访问插件,我们需要使插件在互联网上可访问。这就是我们需要使用ngrok的原因。ngrok是一个能够将本地服务器映射到公网的工具,使我们的插件能够在互联网上被访问。
首先,我们需要下载并安装ngrok。我们可以在ngrok的官网上找到下载链接和安装说明。
然后,我们可以使用以下命令来启动ngrok:
ngrok http 3000
这个命令会启动ngrok,并将它映射到本地服务器的3000端口。ngrok会显示一个公网URL,我们可以使用这个URL来访问本地服务器。
最后,我们需要在插件清单(Plugin manifest)文件中更新API URL,将其更改为我们的ngrok URL。例如,如果ngrok URL是https://xxxxx.ngrok-free.app
,那么API URL应该是https://xxxxx.ngrok-free.app/openapi.yaml
。请在ai-plugin.json文件中进行相应的更改。
3. 在ChatGPT中安装和测试插件
现在,我们的插件已经准备好了,我们可以在ChatGPT中安装和测试它。
首先,我们需要登录到ChatGPT,然后点击右上角的"Plugins"按钮,然后点击"Develop your own plugin"按钮。
在弹出的对话框中,我们需要输入我们的链接https://xxxxx.ngrok-free.app
,然后点击"Find manifest file"按钮。如果一切顺利,插件就会被安装到ChatGPT中。
然后,可以在ChatGPT中输入"Hello World Plugin Say Hello",看看插件是否能够正确回复"Hello, world!"。
4. 总结
在这篇教程中,我们学习了如何创建一个简单的ChatGPT插件。我们创建了一个"Hello World"插件,这个插件只有一个功能:当用户输入"Hello World Plugin Say Hello"时,插件会回复"Hello, world!"。
我们还学习了如何在Express应用中提供静态文件服务,如何使用ngrok映射本地服务器,以及如何在ChatGPT中安装和测试插件。
在下一篇教程中,我们将学习如何使用cloudflare提供的工具,快速开发和部署一个ChatGpt插件。