教程:在GPT Store上发布ChatGPT的自定义版本
GPT商店和可定制的GPTs
OpenAI于1月10日推出了GPT Store,为ChatGPT Plus、Team和Enterprise用户提供了一个平台,用于查找和创建定制版的ChatGPT。 这些可定制的GPTs在11月份的OpenAI DevDay上首次宣布,可以根据特定任务进行定制,并且可以轻松与其他订阅者共享。此外,OpenAI还宣布将在第一季度推出一个GPT构建者收入计划,最初仅向美国构建者开放,他们将根据用户对他们的GPTs的参与度来获得收益。
一个GPT只需要20分钟就可以创建,但是有些可能需要进行数小时、数天或数周的迭代、数据选择和提示微调来提高性能并覆盖边缘情况。它们还可以通过在幕后构建任何复杂程度的API来更加复杂化。
OpenAI披露已经创建了3百万个GPT!尽管其中许多可能只是基本的自定义提示,但也有很多使用OpenAI内置的检索系统,通过自定义数据集实现了基本的检索增强生成。一些更高级的GPT还通过API提供服务,并与外部构建的软件和检索增强生成系统配套使用。
如何创建和发布 GPT
本教程将探索这些GPT的功能。特别值得一提的是,它包括自定义的“操作”,通过使用外部API扩展了ChatGPT的功能。它们类似于ChatGPT早期版本中可用的插件功能。
让我们看看如何使用我们的AI Tutor chatbot作为示例来创建一个使用自定义操作的GPT。为了进行Gen AI 360认证,我们开发了一个自定义的检索增强生成(RAG)系统。该系统使AI Tutor chatbot能够回答关于认证课程的问题,避免了与ChatGPT的知识截断和Web浏览功能无法直接访问课程的一些限制。
此外,如果您对学习如何创建高级检索增强生成系统感兴趣,请务必查看我们的认证计划中有关使用LangChain和LlamaIndex进行生产的检索增强生成!
了解GPT和其特点
定制化GPT为所有ChatGPT Plus订阅用户提供有趣的关键功能,并不附加任何额外费用。
- 可配置性:设置自定义指令并上传相关文件以增强知识,也称为“检索增强生成”或“知识检索”。
- 共享性:通过独特的URL和GPT商店轻松共享您的自定义GPT。
综合功能:包括网页浏览、Dall-E图像生成、代码解释器执行以及API交互,这里称为“动作”。
+
通过自定义操作设置一个GPT
展示GPT的能力,我们将我们的RAG系统封装在一个API和一个托管在谷歌云服务上的终端上。目前通过GPT设置可以获得的"知识检索"系统仅限于10个文档,而我们定制的RAG系统可以访问数千个Towards AI文章和课程教材。这个设置将使GPT能够根据用户问题查询相关信息。
我们将指导您将此自定义API整合到GPT自定义界面中。当用户提问时,模型将查询此API,获取最相关的课程信息。
借助OpenAI的函数调用功能,GPT模型将与我们提供的API无缝交互。
本教程侧重于集成方面,而不是API开发方面。如果您对涵盖API开发部分的教程感兴趣,请告诉我们!
个性化您的GPT
在这里,我们将使用“配置”菜单来自定义GPT,因为目前这是设置自定义操作的唯一方法。我们将逐步填写不同的字段:
- 给你的GPT起名字
给你的GPT取一个名字;在这里,我们选择“AI导师”。
AI Tutor
2. 描述:
提供一个用户友好的描述。当用户与聊天机器人开始新对话时,他们将看到此消息。让用户了解您的 GPT 能做什么非常重要。
Hello and welcome! If you have any questions about our course or AI, ask.
We're here to help you learn and have fun!
3. 指导:
在这个 HTML 结构中,详细定义聊天机器人的行为和功能。在 OpenAI API 中也称为“系统提示”,这些指令指导 LLM 如何与用户交互,尤其是学生用户,并且我们还定义了如何利用 API 工具来获取相关信息。我们告诉 GPT 要总结 API 工具接收到的信息来回答学生的问题。接下来我们将在以下步骤中设置 API 工具。
我们将说明书写成了一系列项目符号,因为我们发现这样更容易遵循说明。但是,请随意尝试不同的格式来定制您自己的GPT!
You are a helpful AI tutor. You will answer questions from students of
an applied artificial intelligence course on Large Language Models (LLMs).
You give straightforward and easy-to-understand explanations.
- You will use the API tool provided to you to get relevant information.
- First, send the user question to the API tool and summarize its response.
- Do not use bullet points.
- Cite all the sources received at the end of the summary, with URLs included
in Markdown.
- Make sure to include the similarity score for each source, which is also
provided by the API tool for each source.
- If the tool does not respond with relevant information, use the web-browsing
tool available.
4. 额外功能
我们还将开启网页浏览功能。这样一来,学生们就可以直接浏览因课程之外的知识而在互联网上进一步学习了。
5. 整合“行动”。
选择“创建新操作”进行API集成,然后输入API模式。我们可以直接复制和粘贴我们的API模式,也可以提供一个URL。我们在这个教程中使用Python和FastAPI开发了API,并将其托管在Google Cloud Services上。
使用FastAPI,我们可以通过转到您的端点并添加/openapi.json来访问OpenAPI架构。
[Your Base URL]/openapi.json
您还需要手动包含“servers”块,并按下面示例的方式添加您的URL端点。FastAPI开放API模式不直接包含该部分。
{
"openapi": "3.1.0",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"servers": [
{
"url": "https://url_api.com",
"description": "Local development server"
}
],
"paths": {
"/": {
"get": {
"summary": "Read Root",
"operationId": "read_root__get",
"parameters": [
{
"name": "API_KEY",
"in": "header",
"required": false,
"schema": {
"type": "string",
"title": "Api Key"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/get_chunks/": {
"post": {
"summary": "Retrieve Chunks Endpoint",
"operationId": "retrieve_chunks_endpoint_get_chunks__post",
"parameters": [
{
"name": "API_KEY",
"in": "header",
"required": false,
"schema": {
"type": "string",
"title": "Api Key"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AnswerRequest"
}
}
}
},
"responses": {
"200": {
"description": "Successful Response"
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"AnswerRequest": {
"properties": {
"user_input": {
"type": "string",
"title": "User Input",
"default": ""
}
},
"type": "object",
"title": "AnswerRequest"
},
"HTTPValidationError": {
"properties": {
"detail": {
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
},
"ValidationError": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
}
}
}
}
在粘贴Schema后,您将看到自定义GPT的可用终点。如果需要,您还可以提供API密钥。在我们的情况下,我们收到与API密钥相关的一些警告。
我们可以忽略这些警告。我们会在上方的菜单中的下一步中设置我们的 API 密钥。
我们还必须制定隐私政策。本文档解释了API在运行过程中如何收集、使用、存储和保护可能涉及的个人或敏感信息。隐私政策必须托管在一个公共的网页上。考虑使用您自己的或者使用在线的免费模板生成器构建一个。然后,您可以将其托管在GitHub页面甚至一个公开的Google文档上。
在我们的情况下,我们将隐私政策设置为https://towardsai.net/privacy。
6. 添加对话的开始者。
然后我们可以添加一些对话开端,这样用户可以更好地理解您的自定义GPT的功能。
7. 公开发布您的GPT
你可以公开发布你的GPT,或只分发给有链接的人。
保留您的GPT对于每个人(任何有链接的人将不会在商店显示)。
b. 验证您的建筑者个人资料(设置 → 建筑者个人资料 → 启用您的姓名或已验证的网站)。
请在以下链接中查看此教程所创建的GPT!
请访问以下链接来查看将英文文本翻译成简体中文的结果: https://chat.openai.com/g/g-o6HsqUHst-ai-tutor
结论
在本教程中,您学习了如何使用自定义操作来自定义GPT。自定义操作是一项强大的功能,使ChatGPT能够使用外部工具。我们创建了一个AI导师,可以在教育环境中为您提供帮助,并通过API集成获取我们的课程知识。欢迎您分享关于创建自定义GPT的反馈和经验,请与我们分享!加入Discord并与大家分享您的创作!