如何构建自定义 GPT:分步教程
作者:Peter Aideloje ✏️
科技界对人工智能的作用存在不同看法。一些人认为人工智能可能威胁到就业保障,而另一些人则认识到它带来的巨大益处。OpenAI 的 ChatGPT 是一款工具,如果使用得当,可以提高包括开发人员在内的所有技术人员和非技术人员的生产力和效率。
在瞬息万变的科技领域,保持领先,或者至少跟上人工智能领域的最新动态至关重要。例如,2023 年 11 月的 ChatGPT 更新催生了自定义 GPT——个性化聊天机器人。本教程将深入探讨自定义 GPT。
什么是 GPT?
GPT(生成式预训练Transformer)是ChatGPT的个性化版本。用户可以创建定制化的聊天机器人,以满足特定需求。例如,您可以创建专门的GPT来学习如何玩棋盘游戏、担任商务销售助手,甚至是创建能够分析数据的体育博彩指南。
令人兴奋的是,这一次,你无需任何编程知识就能成功定制聊天机器人。只需输入正确的知识和 GPT 操作规范,你就能在几分钟内构建一个符合公司或个人目标的聊天机器人。
现有的GPT示例包括Canva、Diagram: Show Me、Logo Creator等等:
本文将指导您如何使用 OpenAI 中提供的知识库和自定义动作来构建 GPT 模型。无论您是经验丰富的开发者还是技术爱好者,都可以跟随本教程进行操作。
请注意,只有 ChatGPT Plus 账户用户才能访问 GPT。截至撰写本文时,ChatGPT Plus 订阅计划的费用为每月 20 美元。
如何构建你的 GPT
以下是本教程中我们将遵循的步骤的简要概述:
- 请访问chat.openai.com并登录
- 点击侧边栏中的“探索 GPT”按钮
- 点击“创建”
- 填写您打算提供给 GPT 的名称、描述和说明
- 设置新操作,并为 ChatGPT 提供OpenAPI Schema以便进行进一步自定义。
- 点击“保存”,然后选择您希望如何分享您的自定义 GPT 文件。
- 点击确认
现在让我们深入探讨如何使用 GPT。
开始之前,您必须拥有一个 ChatGPT Plus 帐户,点击“注册”按钮即可创建。如果您已有帐户,请点击“登录”访问您的帐户:
启动 GPT 创建过程
登录 ChatGPT Plus 帐户后,您应该会看到一个带有侧边栏的聊天窗口。在侧边栏中,点击“浏览 GPT”;
然后,点击“创建”开始创建新的 GPT:
GPT 构建器中将出现分屏显示。在分屏的左侧,您可以切换“创建”和“配置”选项。只需填写提示信息即可构建您的聊天机器人。同时,右侧的“预览”面板允许您在构建过程中与聊天机器人进行交互,这有助于您决定如何改进它:
设置您的 GPT 指令
我们可以根据自身需求设置 GPT。让我们通过构建一个面向“Greentech Solutions”的销售代表助手示例来演示这一点,Greentech Solutions 是一家销售环保家用电器的虚拟公司:
该助手将为 ChatGPT 提供回答有关绿色科技问题所需的信息。此外,我们正在创建一个外部 API,用于进行计算,以帮助推荐更佳的绿色科技设备使用方法。
接下来,根据您的喜好设置 GPT 的头像、名称和描述。点击头像图标进行设置。您可以选择手动设置头像,也可以让 DALL·E 3 自动创建:
DALL·E 3 是 OpenAI 开发的一项智能技术,它可以将文字翻译成图像。它会根据你对想要看到的内容的描述,为你生成一幅图像。
现在,让我们配置您的 GPT 指令,提供 ChatGPT 需要了解的足够信息。请确保您的指令尽可能详细——它们决定了 GPT 的行为。在设置过程中,ChatGPT 会提示您一些问题,例如:“这个 GPT 是做什么的?它的行为方式是什么?它应该避免做什么?”
您还可以选择设置对话开场白。这些是 GPT 可以轻松识别的快速提示,以便它知道如何回应:
另一个选项是为您的 GPT 提供额外的知识和资源。例如,您可能希望聊天机器人使用您企业的风格指南来构建回复,或者您可能希望它阅读客户画像 PDF 文件以获得更多上下文信息。您可以通过在“知识”下上传文件来实现这一点:
最后,请确保启用或禁用 GPT 的功能。默认情况下,GPT 应启用网页浏览和DALL·E 图像生成功能。这允许您的聊天机器人在线查找信息并根据文字创建图片:
如果您希望它运行代码或查看数据,则还应启用代码解释器选项。
添加操作:GPT 的可选增强功能
您的 GPT 程序目前已准备就绪。但是,您可能希望您的聊天机器人执行 ChatGPT 之外的任务或从互联网检索数据。您可以通过添加操作来启用这些功能。
在此语境下,“操作”指的是能够提升GPT(Google Play Pro)效率的更多知识和能力。通过“操作”,您可以指导聊天机器人如何使用第三方服务。此外,您还可以赋予聊天机器人额外的技能,如同赋予它超能力一般,使其能够完成聊天以外的任务。
现在,让我们通过自定义操作来增强销售代表助手 GPT 的功能:
我们希望自定义 GPT 不仅能够根据我们加载的文档回答问题,还能处理现实世界的查询。
例如,如果用户担心我们的服务会增加电费,我们的GPT助手可以进行计算,有效解决他们的问题。这使得我们的助手既信息丰富又实用,能够解决实际生活中的问题。
为此,我们需要让 GPT 与一个公开可访问的 API 通信,该 API 允许它通过 OpenAPI 规范执行这些功能。为了方便起见,我将使用Replit 来编写脚本并发布 API。
如果您还没有 Replit 帐户,请创建一个。然后,创建一个名为 `.py` 的 Python 文件main.py ,并将以下代码粘贴到该文件中:
main.py
from flask import Flask, request, jsonify
app = Flask(name)
Constants
AVERAGE_PANEL_EFFICIENCY = 0.20 # 20% efficiency
AVERAGE_IRRADIANCE = 5 # Average kWh/m2
PANEL_COST_PER_SQM = 2500 # Cost per square meter in USD
INSTALLATION_COST_PER_SQM = 75 # Installation cost per sqm in USD
PANEL_AREA_SQM = 1.6 # Average area of a solar panel in square meters
USAGE_FACTOR = 0.2 # Factor to adjust for realistic panel usage on roof
def calculate_realistic_panel_count(roof_size):
max_panel_count = roof_size / PANEL_AREA_SQM
realistic_panel_count = int(max_panel_count * USAGE_FACTOR)
return realistic_panel_count
def calculate_energy_output(panel_count):
total_panel_area = panel_count * PANEL_AREA_SQM
return total_panel_area * AVERAGE_IRRADIANCE * AVERAGE_PANEL_EFFICIENCY * 30
def calculate_costs(panel_count):
total_panel_area = panel_count * PANEL_AREA_SQM
panel_cost = PANEL_COST_PER_SQM * total_panel_area
installation_cost = INSTALLATION_COST_PER_SQM * total_panel_area
total_cost = panel_cost + installation_cost
return panel_cost, installation_cost, total_cost
def calculate_savings(energy_output, current_bill):
# Assuming a rate of $0.12 per kWh (adjust if needed)
cost_per_kWh = 0.12
estimated_monthly_solar_bill = energy_output * cost_per_kWh
monthly_savings = current_bill - estimated_monthly_solar_bill
return monthly_savings
def calculate_payback_period(total_cost, monthly_savings):
if monthly_savings <= 0:
return "Payback period cannot be calculated with current savings"
annual_savings = monthly_savings * 12
return total_cost / annual_savings
@app.route('/calculate', methods=['GET'])
def calculate():
roof_size = request.args.get('roof_size', default=0, type=float)
current_bill = request.args.get('current_bill', default=0, type=float)
print("Received roof_size:", roof_size) # Debugging line
print("Received current_bill:", current_bill) # Debugging line
if roof_size <= 0 or current_bill <= 0:
return jsonify(
{"error": "Invalid input. Please provide positive numbers."}), 400
panel_count = calculate_realistic_panel_count(roof_size)
energy_output = calculate_energy_output(panel_count)
panel_cost, installation_cost, total_cost = calculate_costs(panel_count)
monthly_savings = calculate_savings(energy_output, current_bill)
payback_period = calculate_payback_period(total_cost, monthly_savings)
result = {
"roof_size_sqm": roof_size,
"realistic_panel_count": panel_count,
"monthly_energy_output_kWh": energy_output,
"panel_cost_usd": panel_cost,
"installation_cost_usd": installation_cost,
"total_cost_usd": total_cost,
"monthly_savings_usd": monthly_savings,
"estimated_payback_period_years": payback_period
}
return jsonify(result)
if name__ == '__main':
app.run(host='0.0.0.0', port=8080)
这段代码源自Liam Ottley 的 Replit 项目。它创建了一个 Web 应用程序,用于计算和分享我们虚构的 Greentech Solutions 公司为房主提供的太阳能电池板信息。
该程序可以计算出屋顶上可以安装多少块太阳能电池板,估算出它们能产生多少电量,并计算出成本和节省的费用。它还会告诉你,预计节省的费用需要多长时间才能抵消太阳能电池板的成本。用户只需在线提交屋顶面积和当前的电费账单即可使用该程序。
将此脚本部署到Replit 或任何其他可公开访问的平台上。下一步需要用到该 URL。
接下来,您需要根据我们 GPT 的规范定义并自定义 OpenAPI Schema。以下是我定义 Schema 的方式:
openapi.yaml
{
"openapi": "3.0.1",
"info": {
"title": "GreenTech Solutions API",
"version": "1.0.0",
"description": "API to provide green solutions, product recommendations, and eco-friendly practices."
},
"servers": [
{
"url": "https://doro-onome-solar-gp-ts-custom-action-doroonome.replit.app",
"description": "Development server"
}
],
"paths": {
"/calculate": {
"get": {
"summary": "Calculate solar panel outputs, costs, and savings",
"operationId": "calculateSolar",
"parameters": [
{
"name": "roof_size",
"in": "query",
"required": true,
"description": "Size of the roof in square meters",
"schema": {
"type": "number",
"format": "float"
}
},
{
"name": "current_bill",
"in": "query",
"required": true,
"description": "Current monthly electricity bill in USD",
"schema": {
"type": "number",
"format": "float"
}
}
],
"responses": {
"200": {
"description": "Successfully calculated solar panel data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalculationResult"
}
}
}
},
"400": {
"description": "Invalid input"
}
}
}
}
},
"components": {
"schemas": {
"CalculationResult": {
"type": "object",
"properties": {
"roof_size_sqm": {
"type": "number",
"format": "float"
},
"realistic_panel_count": {
"type": "integer"
},
"monthly_energy_output_kWh": {
"type": "number",
"format": "float"
},
"panel_cost_usd": {
"type": "number",
"format": "float"
},
"installation_cost_usd": {
"type": "number",
"format": "float"
},
"total_cost_usd": {
"type": "number",
"format": "float"
},
"monthly_savings_usd": {
"type": "number",
"format": "float"
},
"estimated_payback_period_years": {
"type": "string"
}
}
}
}
}
}
此架构图概述了 GreenTech Solutions API 的工作原理。它描述了一项提供绿色解决方案的 Web 服务,例如计算太阳能电池板的效率、成本和节省额。
开发服务器托管着API,提供对特定输入(例如屋顶面积和当前电费账单)的定制计算。该平台使用户能够根据其独特的参数估算潜在结果。
保存您的 GPT
太棒了!!在定义了 OpenAPI 规范之后,我们的 GPT 就可以投入使用了。
点击右上角的“保存”按钮;如果您已经创建了 GPT 并正在发布更新,则点击“更新”按钮。选择您希望如何分享您的 GPT—— “仅限本人”、“拥有链接的任何人”或“所有人”——然后点击“确认”:
ChatGPT 主页的侧边栏将显示 ChatGPT 以及您创建的任何自定义 GPT。选择您想要使用的 GPT,然后像往常一样使用它。
测试 GPT
现在,Greentech Solutions 销售代表助手已经准备就绪,让我们来试用一下。最好使用一些提示信息进行测试,以便它能够与文档及其嵌入的 API 规范进行交互。以下是我尝试过的提示信息以及 GPT 提供的相应结果:
上图展示了 GPT 从我们提供的文档中获取的信息。现在,让我们让它执行一些计算:
在上图中,GPT 从 API 端点获取信息,并利用这些信息为用户在实际场景中计算出一个解决方案。
如何分享和编辑您的 GPT 文件
在顶部,GPT 有下拉选项,您可以在其中找到编辑 GPT 或复制链接并分享的选项:请注意,如果您在共享设置中选择“仅限本人”
,则其他人无法使用您的 GPT 。
GPT 模型还可以为公司网站上的聊天机器人提供支持,而不仅仅局限于 OpenAI 的 ChatGPT 界面。虽然本教程不会详细介绍具体操作方法,但这对于您来说是一个很好的下一步探索方向,可以帮助您将自定义 GPT 提升到一个新的水平。
最后想说的
从理解 GPT 到创建自己的 GPT,我们已经走了很长一段路。本指南将一步步地向您展示如何创建一个完全符合您需求的 GPT。
现在,你已经准备好运用这些知识了。大胆尝试你的想法,看看它们会带你进入人工智能的世界。你定制的 GPT 可能就是下一个重大突破,所以开始构建,尽情享受吧!
几分钟即可完成 LogRocket 现代化错误跟踪功能的设置:
- 访问https://logrocket.com/signup/获取应用 ID。
- 通过 NPM 或脚本标签安装 LogRocket。
LogRocket.init()必须在客户端调用,而不是服务器端。
NPM:
$ npm i --save logrocket
// Code:
import LogRocket from 'logrocket';
LogRocket.init('app/id');
脚本标签:
Add to your HTML:
<script src="https://cdn.lr-ingest.com/LogRocket.min.js"></script>
<script>window.LogRocket && window.LogRocket.init('app/id');</script>
3.(可选)安装插件,以实现与您的技术栈的更深层次集成:
- Redux 中间件
- ngrx 中间件
- Vuex插件


