如何构建您自己的定制OpenAI GPT聊天机器人

它可能很容易,也可能不是。

免责声明:本人并非深度学习、机器学习或生成型人工智能开发人员。我认为自己的IT技能处于“有所了解但临场发挥”的水平。

简介

根据他们的博客,OpenAI于2023年11月6日发布了ChatGPT Plus和企业用户的能力,使他们可以构建定制的GPT机器人,以适应他们个人或商业用途的案例。

引自他们的博客:

GPT是一种全新的方式,让任何人可以创建一个定制化版本的ChatGPT,以在他们的日常生活中更加有帮助,在特定任务、工作或家庭中更加适用,然后与他人分享这一创作。例如,GPT可以帮助您学习任何桌游的规则,帮助教授孩子数学,或设计贴纸。

任何人都可以轻松建立自己的GPT——无需编码。您可以为自己制作,仅供公司内部使用,或者供所有人使用。创建一个GPT就像开始一次对话,给予指示和额外的知识,并选择它可以做什么,比如搜索网页,生成图像或分析数据。

使用了自己后,我可以确认它主要是为像我这样的人设计的。虽然我可以编写简单的 Go 或 Rust 脚本,但我还远未成为一名经验丰富的开发者。这个定制的GPT工具可以在没有太多编码技能的情况下构建,但需要注意的是,如果你有一定的编码能力,将能更充分地发挥这个工具的作用。

您可以进行基本配置任务,如选择名称、描述等。您还可以通过初始提示工程训练自定义 GPT 以执行特定任务(可能比标准 ChatGPT 3.5 或 4 更有效),并配置它们使用来自外部源的数据,通过上传文档和 API 调用。

承诺

所以你告诉我只要我有必要的API密钥,我就可以创建自己定制的GPT,从任何我想要的网站上获取数据?

可能性是无穷的。我见过利用财务数据、天气模式和新闻网站等内容来为用户生成强大的GPT聊天机器人的例子。

开始使用基本的GPT所需的先决条件很简单:

  • 有效的OpenAI账户
  • ChatGPT Plus 订阅($20 美元 + 本地税)

对于我特定的GPT,作为我所是的网络安全专业人员,我希望它能做几件事情:

  • 提供关于网络安全话题的相关且有见地的建议。
  • 以编程方式生成用于完成各种任务的安全代码。
  • 优化简历以申请网络安全职位。
  • 提供关于IOC的威胁情报数据。

由于我的背景是网络威胁情报,我想要利用免费级别的VirusTotal API对以下指标进行声誉查找。

  • 域名
  • IP地址
  • 文件哈希

我还希望它能够对域名和 IP 进行 WHOIS 查询。

为使此过程正常运行,您需要来自病毒总数(VirusTotal)的两件事情,后者可选择性:

  • API密钥:从https://www.virustotal.com/gui/user//apikey获取(将替换为您自己的VirusTotal用户名)
  • 认证:在 https://docs.virustotal.com/reference/authentication 中看到的 x-apikeyheader。
  • 隐私政策:https://support.virustotal.com/hc/zh-cn/articles/115002168385-隐私政策(如果您想要使您的GPT公开可访问,则需提供此链接)

现实

我不打算撒谎,这需要一些尝试和错误。

大多数最初的配置步骤实际上非常简单。你只需要开始与GPT交流。

您还可以通过上传信息丰富的文件来增加GPT在您想要专业知识的任何主题上的能力。

Simple.

我通过在互联网上找到的免费资源向模型添加了一些知识文档。仅仅作为一个开始,我使用了NIST和云安全联盟的文档。

Easy.

为此,您只需拥有一个可由OpenAI解析的文档即可。当您点击附件图标时,它会提供标准的“所有文件”选择选项。至于哪些文档能够被此工具解析,我还没有找到确切的信息,但我可以确定PDF似乎是可以工作的。

以上这条线之上的一切都很直观简单。

主要问题是配置模式。如果您希望通过API来执行添加操作,则需要应用模式。

整个过程的文档存在缺失。我查阅了许多不同的来源,包括知识库文档、视频教程以及多个“求助帖”论坛,但都没有找到答案。幸运的是,我在这个过程中明白了不仅仅是我一个人遇到困难。

为了使VirusTotal API正常工作,首先需要您参考我在上一节提供的必要信息。

前往配置 > 滚动到底部,在操作下方 > 创建新动作 > 身份验证:

选择API密钥>输入它>选择自定义>输入自定义头名称:

现在到模式部分。在遇到上述问题无法找到可靠的文件之后,我幸运地偶然发现了某人为此特别开发的自定义GPT,即GPT Action Builder,并且毫不犹豫地选择了它。

请点击以下链接查看文本的中文翻译: https://chat.openai.com/g/g-a3N9FUZLN-gpt-action-builder

这并不是一个绝对解决方案,所以仍然需要一些工作来使其完美。

FYI,我正在使用一个新测试GPT进行演示,该GPT是我专门为了复现我的原始问题而创建的。

幸运的是,我仍然拥有聊天记录,所以这是我最初发起的内容:

当我将第一个模式放入“添加操作”部分的模式字段时:

Red = Bad

它告诉我们我们所需要的一切,所以现在我尝试:

我输入了新的模式,并得到了:

No Red = Good

问题出现在我测试其中任何一个时。

我会得到:

Error = Bad

这次我觉得我具体得几乎太多了,所以我尝试了别的方法:

所以当我使用这个架构时,我发现一开始没有任何红色/错误。

在我的实际GPT上,我很高兴地报告说,应用了这个模式后,每当我选择其中一种可用动作的“测试”选项时,我都能看到:

点击“允许”后,我看到了一幅美丽的景象:

Sweet success!

这是对我有效的架构方案。

{
"openapi": "3.0.0",
"info": {
"title": "VirusTotal GPT Action API",
"version": "1.0.0",
"description": "Action schema for a custom GPT to use VirusTotal API for domain, IP address, and file hash reputation checks."
},
"servers": [
{
"url": "https://www.virustotal.com/api/v3",
"description": "VirusTotal API base URL"
}
],
"paths": {
"/domains/{domain}": {
"get": {
"operationId": "getDomainReputation",
"summary": "Get domain reputation",
"parameters": [
{
"name": "domain",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "Domain to check for reputation"
}
],
"responses": {
"200": {
"description": "Domain reputation report"
}
}
}
},
"/ip_addresses/{ip}": {
"get": {
"operationId": "getIpAddressReputation",
"summary": "Get IP address reputation",
"parameters": [
{
"name": "ip",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "IP address to check for reputation"
}
],
"responses": {
"200": {
"description": "IP address reputation report"
}
}
}
},
"/files/{hash}": {
"get": {
"operationId": "getFileReputation",
"summary": "Get file hash reputation",
"parameters": [
{
"name": "hash",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "File hash to check for reputation"
}
],
"responses": {
"200": {
"description": "File hash reputation report"
}
}
}
}
}
}

保持HTML结构,将以下英文文本翻译为简体中文: GPT

为了展示对已知恶意IOC进行声誉查找的能力,我将使用来自我之前的一篇分析报告中的恶意软件样本AgentTesla的文件哈希值。

Whoop!

此外,该GPT还可以处理大量的IOC列表,并解析“defanged”或“deweaponized”基于DNS的IOC,如IP地址或域名,除了已完全武装化的IOC。

top 3 = weaponized, bottom 3 = deweaponized

您可以根据需要要求输出的内容,理智地要求。上述提示产生的结果如下:

Here's the reputation check for the given IOCs using VirusTotal, formatted in an easily digestible list:
Domains

microsofts[.]com
Malicious: 1
Suspicious: 0
Undetected: 85

example[.]com
Malicious: 0
Suspicious: 0
Undetected: 86

google[.]com
Malicious: 0
Suspicious: 0
Undetected: 86

getldrrgoodgame[.]com
Malicious: 5
Suspicious: 0
Undetected: 75

valvulasthermovalve[.]cl
Malicious: 1
Suspicious: 0
Undetected: 79

IP Addresses

190.107.177[.]239
Malicious: 7
Suspicious: 0
Undetected: 83

File Hashes

74729d4569691daf72e23849e91461471411f551639663e11e1091a48790611e
Malicious: 46
Suspicious: 0
Undetected: 26

f68f1af4eb16d6d185899ace2e951c196a80591bde4134cf290e69eea91d5472
Malicious: 48
Suspicious: 0
Undetected: 24

a4d9ec0bbdb5fce74ca575a65f549284c4370f104d5b143ddf591b5869d9ed5c
Malicious: 56
Suspicious: 0
Undetected: 16

This list includes the number of security vendors that consider each IOC to be malicious, suspicious, or undetected.

不过,它并不完美。例如,它表示microsofts[.]com有一个供应商显示其为恶意软件,但是当我直接访问VirusTotal进行验证时:

Definitely more than one.

注意:我仍在努力改进如何更准确地输出域名和IP地址。

鉴于我在VirusTotal API集成方面遇到的困难,为了帮助其他人使用我的GPT并使其具备与VirusTotal相配合的能力,我决定保持HTML结构的同时,为其开发一个专门用于构建能与VirusTotal配合工作的模式的功能。

You can’t see it from here, but I included the JSON of the successful schema I shared earlier in this article.

请随意测试SaGPT A*,该名称源自斯格底亚A*超大质量黑洞(我只是喜欢天文学)。

请点击以下链接查看译文:[https://chat.openai.com/g/g-9lP76dyom-sagpt-a](https://chat.openai.com/g/g-9lP76dyom-sagpt-a)

更新后,以下是功能列表:

  • 提供相关和有建设性的关于各种网络安全主题的建议。
  • 提供对厂商不可知的云安全配置和治理的深入指导。
  • 为联邦和非联邦实体提供有关保护受控非机密信息的深入指导。
  • 以编程方式生成安全代码以完成各种任务。
  • 优化简历,用于申请网络安全工作。
  • 通过VirusTotal API提供有关域名、IP和文件哈希值的威胁情报数据。
  • 帮助用户使用上面的模板来构建自己的VirusTotal API集成模式。

我有意定期更新它,加入新功能和能力以及一般培训。我希望您能发现它的实用性,并能充分利用它。

感谢阅读!

必须点赞、评论和订阅的串词

如果你喜欢我的内容并希望看到更多的话,我会感激你:

  • 给我一个鼓掌,并在Medium上关注这里。
  • 请随时在LinkedIn上与我联系。
  • 感觉特别慷慨吗?给我买杯咖啡吧!

2024-01-02 04:15:18 AI中文站翻译自原文