ChatGPT新手扫盲

基本概念

GPT: Generative Pre-Training Transformer(生成式预训练模型)

生成式:内容实时生成。

预训练:提前学习过大量知识。

模型:算法。

误解:GPT是搜索引擎?

ChatGPT不是搜索引擎,所有的结果都是ChatGPT通过给定的上下文逐字实时生成的。

它能够创造不存在的文本,而搜索引擎只能够从数据库中查询已有的数据。

搜索引擎不会混淆答案,但是生成语言模型可能会。

比如生活中根本不存在的内容。

ChatGPT: GPT模型的基础上进行了特定的微调和优化,以提供更好的对话交互能力。

Prompt: 一种使用自然语言来引导用户与机器之间的交互的技术。

GTP 工作原理

本质就是单字接龙,通过上一次词自动计算出下一个词。

如何自动计算?

将每一个数据向量化,然后计算它们出现的概率分布,这样GPT就可以根据上文,通过概率去随机取得下一个关联的数据。这也是为什么每一次回答ChaptGPT的答案都不一样的原因。

注意:这里的数据可能是文本、可能是语音、可能是视频、可能是像素块等等。 任何数据均可向量化。 比如,把人向量化。通过从身高、体重、籍贯等三个方面,就可以向量化为[11,22,33]。

最后形成多维空间的一个点。

数据被向量化后,有一个形象化的例子,就形成了一种概率分布图:

长的文章,通过单字接龙的自回归所生成。

什么是自回归生成?

将生成的所有数据作为下一次生成的参数,不断依次迭代进行,直到触发结束任务。

比如:输入一个"我",希望ChatGPT生成一个我是一只小小鸟。

模型:GPT的大脑,也就是一种算法,对应着输入和输出。 通过大量高质量的学习材料,来学习通用规律,以便于能够根据上文自动生成下文内容,学习的方式就是单字接龙。

学习材料:各种互联网文本、书籍、语音、视频等...

还有一些问答范例的学习,比如:

白日依山尽的下一句是什么?

白日依山尽的下一句是黄河入海流。

................................

大模型学习步骤

  1. 通过大量的数据学习人类的语义关系和语法规律。(开卷有益)

让ChatGpt对海量的互联网文本做单字接龙,以扩充模型的词汇量,语言知识、世界的信息和知识。使ChatGpt从"不会说话的鹦鹉"变成脑容量超级大的懂王鹦鹉。

注意:模型训练的目的不是记忆,而是学习提问和回答的通用规律。以便于当遇见从没有记忆过的提问时,也能够生成用户想要的回答。

OpenAI 学习材料 参数(类比函数的入参) 实际效果
GPT-1 5GB 1.17亿 平平无奇
GPT-2 40GB 15亿 平平无奇
GPT-3 45TB 1750亿 人类各种词语搭配和语法规则几乎都已明白
  1. 矫正GPT模型参数 (模板规范)

让ChatGPT使用优质的,人工选择的优质对话范例进行单字接龙学习,以规范回答的对话模式和内容,使得ChaptGPT变成"懂规矩的博学鹦鹉"。

  1. 创意引导

让ChatGpt根据人类对它生成答案的好坏评分来调节模型,以引导它生成人类认可的创意回答。使得ChatGPT变成既懂规矩又会试探的博学鹦鹉。

ChatGPT没有意识,没有思想,也没有欲望,只是一个算法模型,通过输入参数计算出输出结果而已。

编写一个优秀的Prompt步骤

原则:

你让模型猜测的东西越少,你得到的答案就会越精准。

明确指令和相关上下文

示例一:

示例二:

防止错误答案

让模型充当一个角色

使用分隔符来清楚的区分不同部分

对于简单直接的任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,消除任务细节的歧义就越重要。不要让模型费力去理解你具体要求什么。分隔符可以用 三引号、xml标签 等格式。

指定完成任务的步骤

提供示例

当我们想要指定某一种输出格式,或者是某个想法难以用语言描述的时候,我们可以通过给出示例的方式来达到我们的效果。Gpt会模仿示例的要求进行回答。也就是"找规律"。

指定你想要的输出

这些模型无法读懂你的想法。如果输出太长,就要求它简短答复。如果输出太简单,就要求它用专家级别的能力去写作。如果你不喜欢输出的格式,请演示你希望看到的格式。

案例一:

案例二:

Prompt实战

工作用

编写一个mysql自动化部署脚本

你是一名ansible技术的大师,对ansible有着非常丰富的理论和实践经验。

我现在需要编写一个自动化部署mysql的剧本。以下是我当前已有的一些数据、环境现状以及要求:

"""

  1. 通过容器部署mysql,最终部署目录在/data/mysql目录下。
  2. 在/opt/home目录下有mysql的docker容器、docker-compose.yml、.env文件,该容器通过docker-compose命令进行启动。
  3. 容器初始化的时候需要自动执行一些初始化的sql脚本,脚本目录在/opt/home/sql目录下。
  4. 容器的配置文件、数据等目录需要从容器中挂载到宿主机的/opt/data目录中。
  5. mysql的端口、运行密码需要从变量中读取。

"""

请根据以上要求帮我编写一个自动化部署mysql的剧本。请确保你给出的剧本没有错误,如果你不清楚,请在{}中标注你不知道。另外,每一个步骤给出详细的注释。

以下是GPT生成的内容:

yaml 复制代码
---
- name: 部署MySQL容器
  hosts: your_target_host
  become: yes
  tasks:
    - name: 安装Docker和Docker Compose
      apt:
        name:
          - docker.io
          - docker-compose
        state: present

    - name: 创建主机上的目标目录
      file:
        path: /data/mysql
        state: directory
      # 如果还有其他目录需要创建,请在此添加

    - name: 复制MySQL Docker文件到 /opt/home
      copy:
        src: /path/to/your/mysql-docker-files/
        dest: /opt/home
      # 请确保将 /path/to/your/mysql-docker-files/ 替换为实际路径

    - name: 使用Docker Compose启动MySQL容器
      command: docker-compose -f /opt/home/docker-compose.yml up -d
      args:
        chdir: /opt/home

    - name: 等待MySQL容器启动(根据需要调整等待时间)
      wait_for:
        timeout: 60

    - name: 将MySQL初始化SQL脚本复制到容器
      docker_copy:
        container: "{{ your_mysql_container_name }}"
        src: /opt/home/sql
        dest: /docker-entrypoint-initdb.d
      # 请将 "{{ your_mysql_container_name }}" 替换为实际的容器名称

    - name: 将MySQL配置文件和数据目录挂载到主机的 /opt/data
      docker_container:
        name: "{{ your_mysql_container_name }}"
        volumes:
          - /opt/data:/var/lib/mysql
        restart_policy: always
      # 请将 "{{ your_mysql_container_name }}" 替换为实际的容器名称

    - name: 设置MySQL的root密码和端口
      docker_container_exec:
        container: "{{ your_mysql_container_name }}"
        command: bash -c "mysql -u root -p'{{ your_mysql_root_password }}' -e \"ALTER USER 'root'@'localhost' IDENTIFIED BY '{{ your_mysql_root_password }}';\""
      # 请将 "{{ your_mysql_container_name }}" 和 "{{ your_mysql_root_password }}" 替换为实际的容器名称和密码

    - name: 确保MySQL容器重新启动以应用更改
      docker_container:
        name: "{{ your_mysql_container_name }}"
        state: restarted
      # 请将 "{{ your_mysql_container_name }}" 替换为实际的容器名称

实现某个算法

Prompt

你是算法编程方面的大师,获得过国际上各种顶尖算法比赛的冠军。

我现在需要编写一个算法:

输入一个列表a和一个整数count,将列表a拆分为多个子列表,子列表的个数由count指定,最后输出这个子列表。

要求:Java语言实现、考虑到各种可能会发生的异常情况。

输出:

ini 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListSplitter {

    public static List<List<Integer>> splitList(List<Integer> originalList, int count) {
        List<List<Integer>> resultLists = new ArrayList<>();

        try {
            // 判断拆分的集合是否为空,或者拆分大小是否小于1,如果是,抛出异常
            if (originalList == null || count < 1) {
                throw new IllegalArgumentException("Invalid input. List cannot be null, and count should be greater than 0.");
            }

            int size = originalList.size();
            
            // 判断集合是否大于拆分的长度,大于拆分,小于直接把原集合存入总集合
            if (size > count) {
                int pre = size / count;
                int last = size % count;

                //前面pre个集合,每个集合大小都是count个元素
                for (int i = 0; i < pre; i++) {
                    List<Integer> itemList = new ArrayList<>();
                    for (int j = 0; j < count; j++) {
                        itemList.add(originalList.get(i * count + j));
                    }
                    resultLists.add(itemList);
                }

                // 处理剩余不足count大小的数据
                if (last > 0) {
                    List<Integer> itemList = new ArrayList<>();
                    for (int i = 0; i < last; i++) {
                        itemList.add(originalList.get(pre * count + i));
                    }
                    resultLists.add(itemList);
                }
            } else {
                resultLists.add(originalList);
            }

        } catch (Exception e) {
            // 捕捉异常,并打印错误信息
            e.printStackTrace();
        }

        return resultLists;
    }

    public static void main(String[] args) {
        // 示例使用
        List<Integer> originalList = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            originalList.add(i);
        }

        int count = 3;
        List<List<Integer>> result = splitList(originalList, count);

        // 打印结果
        System.out.println("Original List: " + originalList);
        System.out.println("Split Result: " + result);
    }
}

辅助编程

编写一个Cypher语句

我们来玩一个角色扮演游戏,你是Neo4j技术的大师,有着非常丰富的实战和理论经验。

我现在有两个节点:STUDENT、SCHOOL。一个关系:STUDY。

我现在想要编写一个cypher语句:查找所有在SCHOOL中有STUDY关系的STUDENT节点。并根据SCHOOL进行分组。我的输入是一个SCHOOL节点id的列表。

要求:专业、严谨;确保你给出的代码是正确的,如果你不知道,请直接回答你不知道,否则不要给出任何的解释。

生活助手

讯飞星火大模型中已经集成了很多类型的插件可以使用

以生成PPT为例

副业发展

可以通过自己Prompt制作各种各样的助手应用。也可以使用别人已经制作好的助手直接使用。

总结

目前的ChatGpt可能还不能够很好的处理范围很大的事务等等(或者说需要编写的Prompt可能都需要成千上万个字。)。但是对我们大部分人来说,日常生活、工作中针对于某些具体的事情,非常细分且明确的事情,它往往能够给出比较好的答案,并且还能够极大程度的解放我们的双手。

各GPT对比

CHATGPT4.0

官网地址:openai.com/gpt-4

当前最强大的大模型。各方面性能都遥遥领先。

CHATGPT3.5

免费使用网址:chat-shared3.zhile.io/shared.html...

文心一言

官网注册账号即可使用:yiyan.baidu.com/

百度开发的大模型,个人感觉比较适用于零基础小白。

讯飞星火

官网注册账号即可使用:xinghuo.xfyun.cn/desk

科大讯飞开发的大模型,专业性稍微强一些。各种助手也很丰富。可以创建自己的模型。

通义千问

阿里巴巴开发的大模型,更加专注于一个生态。

腾讯混元大模型

腾讯开发的大模型,更加专注于一个生态。

关联网站

OpenAi官网Prompt学习:platform.openai.com/docs/introd...

Prompt中文学习指南:prompt-guide.xiniushu.com/

GitHub上很吊的一些开源项目:

Prompt学习:github.com/f/awesome-c...

制造喵:github.com/PlexPt/awes...

相关推荐
量子位6 小时前
Scaling Law 首次在自动驾驶赛道被验证!小鹏汽车 CVPR 演讲详解:AI「吃」下 6 亿秒视频后,智能涌现
chatgpt·ai编程
Jet45051 天前
玩转ChatGPT:DeepSeek实战(核酸蛋白序列核对)
人工智能·chatgpt·kimi·deepseek
—Qeyser2 天前
让 Deepseek 写电器电费计算器小程序
ai·chatgpt·小程序·deepseek
明明跟你说过2 天前
FastChat 架构拆解:打造类 ChatGPT 私有化部署解决方案的基石
人工智能·语言模型·chatgpt·openai
Gyoku Mint3 天前
机器学习×第七卷:正则化与过拟合——她开始学会收敛,不再贴得太满
人工智能·python·算法·chatgpt·线性回归·ai编程
总之就是非常可爱3 天前
打造一个支持流式输出的 Vue Markdown 渲染组件
前端·chatgpt·markdown
优弧5 天前
OpenAI o3-Pro震撼登场!性能暴涨价格暴跌,这波操作我服了
chatgpt·openai
人工智能教学实践5 天前
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
人工智能·chatgpt
深科文库6 天前
构建 MCP 服务器:第 2 部分 — 使用资源模板扩展资源
人工智能·chatgpt·llama
kk5796 天前
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
人工智能·windows·vscode·chatgpt