最近GPT帮我解决的30个问题

最近GPT帮我解决的30个问题

前言

Hello,各位朋友们大家好,好久不见了!

chatGPT已经问世快两年了,但我仍然发现我了解到的很多人都还只停留在惊叹chatGPT的能力,试用了一下,新鲜感一过,就没有再使用过了,偶尔才会想起。

但我确确实实已经离不开GPT(LLM)了,到什么程度了--无时无刻、无处不在、无微不至、无所不用其及,(好,打住),反正现在我几乎是只要打开电脑,就会有一个GPT的聊天应用一直挂在后台随时候着,甚至比微信用得还多(这似乎是一个悲伤的故事)

当然,我看到的许多文章也都谈到了大语言模型的应用场景,但是,这些文章给的应用场景都太宽泛了,太大了,就像这样:

这就导致很多人其实知道这个真的非常有用,但就是不知道在什么时候,在哪里使用。所以,这篇文章就来了,我会结合最近一段时间来的实际生活、工作、学习场景,从我以前的聊天记录中,找出一下印象深刻的案例来进行分享,这些可都是实打实的经验,希望对你有所帮助。

(声明:对大语言模型的理解比笔者好的大有人在,本文也希望抛砖引玉,能让笔者也了解到大家的使用场景,共同进步。并且笔者的背景是程序员,所以接下来的内容会以编码相关的内容为主要组成部分)

篇幅有限,为了尽可能展示多的例子,GPT的回答会省略一些(废话还是有点多,挺占篇幅的)

第一类:脚本类的代码生成

这里指的是泛脚本的内容,是一段简短的代码,通常放在一个文件中,能直接实现一项功能

1. 获取github readme生成热词词图

背景

前段时间逛github发现一个仓库--中国独立开发者项目列表-分享大家都在做什么。挺多⭐的,但是内容挺多的,笔者被旁边的短短的滚动条给劝退了。

所以就想用Python直接获取这个readme里面的内容,提取出里面的热词并生成词图,这样就能在一张图上看到大家都在做些什么了。

  • GPT,启动!

对话

问:用python对一份中文文档如https://github.com/1c7/chinese-independent-developer/blob/master/README.md做一下热词统计,并生成对应的热词图。

答:

为了完成这个任务,我们将分成几个步骤来实现:

  1. 获取文档内容 :使用requests库从指定的URL获取文档内容。
  2. 提取中文文本:使用正则表达式提取中文文本。
  3. 分词 :使用jieba库对中文文本进行分词。
  4. 统计词频 :使用collections.Counter来统计词频。
  5. 生成热词图 :使用wordcloud库生成热词图。

首先,确保你已经安装了requestsjiebawordcloud库。如果没有安装,可以通过以下命令安装:

sh 复制代码
pip install requests jieba wordcloud

接下来是实现的代码:

python 复制代码
import requests
import re
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 1. 获取文档内容
url = "https://raw.githubusercontent.com/1c7/chinese-independent-developer/master/README.md"
response = requests.get(url)
text = response.text

# 2. 提取中文文本
chinese_text = ''.join(re.findall(r'[\u4e00-\u9fa5]+', text))

# 3. 分词
words = jieba.cut(chinese_text)

# 4. 统计词频
word_counts = Counter(words)
# 移除单字词汇,通常不含太多信息量
filtered_word_counts = {word: count for word, count in word_counts.items() if len(word) > 1}

# 5. 生成热词图
wordcloud = WordCloud(font_path='simsun.ttf', width=800, height=600, mode='RGBA', background_color=None).generate_from_frequencies(filtered_word_counts)
plt.figure(figsize=(10, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在运行这段代码之前,请确保你有一个适用于中文的字体文件,比如'simsun.ttf',并且路径设置正确。如果你没有这个字体文件或者使用其他字体,请相应地更改font_path参数。

上述代码基本完成了我想要的效果,但还有一些瑕疵,我继续补充了一些我想要的效果:

  • 问:我在colab运行环境中没有相关字体怎么办
  • 问:去掉一些停用词
  • 问:去掉动词
  • 问:只要名词,并且去掉地名,以及一些常用词汇(网站、在线、工具、平台之类的)

实现效果

基本达到了我想要的效果,并且代码高度可自定义,注释完整,详细可查看我的colab jupyter代码链接,里面有GPT生成的代码以及我运行完成后的结果。

2. 给定输入输出,生成excel转json的函数

背景

搬砖过程中,有非常多的复杂报表,包含许多合并单元格需要开发,每次都需要以产品给定的excel文件作为参考,开发出对应的前端表格。

这里使用vex-table,编写合并单元格需要做许多配置的,也就是mergeCells这个数组需要自己手动编写,以及一些表格占位文本也需要自己手动补到tableData中。

但其实这些配置数据都已经包含在那个excel文件中了,所以只需读取该excel然后生成对应的配置文件即可。

  • GPT,启动!

对话

问:如何获取excel中的表格数据以及合并单元格数据 问:一些excel数据将上述Excel单元格合并的格式转换为下面这种以数字排序的格式vex-table要求的合并单元格的格式数据,使用JavaScript。

答:

要将提供的Excel单元格合并格式转换为指定的数字排序格式,我们需要遵循以下步骤:

  1. 解析原始数据以提取每个单元格的位置和尺寸。
  2. 将每个单元格的topleftbottomright属性转换为rowcolrowspancolspan
  3. 计算rowspancolspanrowspan = bottom - top + 1colspan = right - left + 1
  4. 计算rowcol:由于索引是从0开始的,row = top - 1col = left - 1
  5. 根据rowcol对结果进行排序。
  6. 构建并输出最终数组。

以下是实现上述步骤的JavaScript代码:

javascript 复制代码
const data = {
    "A1": {"model": {"top": 1, "left": 1, "bottom": 1, "right": 4}},
    "C2": {"model": {"top": 2, "left": 3, "bottom": 2, "right": 4}},
    "A2": {"model": {"top": 2, "left": 1, "bottom": 28, "right": 1}},
    // ... Include all other models here
    "C27": {"model": {"top": 27, "left": 3, "bottom": 28, "right": 3}}
};

// Convert the original data format to the desired array format
const convertFormat = (data) => {
    const result = [];
    for (const key in data) {
        const model = data[key].model;
        const row = model.top - 1;
        const col = model.left - 1;
        const rowspan = model.bottom - model.top + 1;
        const colspan = model.right - model.left + 1;
        result.push({ row, col, rowspan, colspan });
    }
    // Sort the result by row and then by col
    result.sort((a, b) => a.row - b.row || a.col - b.col);
    return result;
};

console.log(JSON.stringify(convertFormat(data), null, 2));

请确保将// ... Include all other models here替换为提供的数据中剩余的模型定义,以完整实现转换。这段代码首先定义了原始数据,然后通过convertFormat函数转换格式,并最后以格式化的JSON形式输出结果。

实现效果

在线演示链接,可直接上传你的excel文件

github开源地址,代码写得比较简单随意,能用就行

3. 生成GPT翻译HTML的程序

背景

这里笔者想通过程序实现GPT翻译一些外文博客,遇到的挑战如下:

  • GPT的上下文长度有限制,文章通过都会超过这个上下文窗口

  • GPT token费用较贵,不能将其浪费在毫无意义的HTML代码上,比如<div>标签

  • 翻译之后,如何保留原有格式

  • GPT,启动!

对话

  • 问:我需要翻译一个HTML文件里面的内容(中文、英文等),但是翻译服务比较昂贵,所以我不想传入其中的HTML标签,只想传入内容,并且翻译服务有长度限制,所以对于较长的HTML文件,还需要做切割处理,这种切割处理需要尽量不影响最后的翻译效果(比如按照段落切割),并且最后需要将翻译后的内容按照之前的HTML格式进行返回,请你使用TypeScript实现上述的功能。
  • 问:我想要将需要翻译的内容合并到一起给翻译服务,调用后再分开并保持原有的HTML结构
  • 问:我需要在待翻译文本超过20k token时进行翻译,最后再进行拼接返回完整的HTML

答:

若需在待翻译文本超过20k token时进行分段翻译,并最后拼接返回完整的HTML,我们可以采用以下步骤进行实现:

  1. 提取和分割文本:遍历HTML文档,提取所有文本内容,并在达到20k token限制时分割文本。
  2. 分批翻译:将每个分割好的文本块发送给翻译服务进行翻译。
  3. 拼接翻译结果:将所有翻译后的文本块按顺序拼接,并插入到相应的HTML结构中。

以下是一个基于TypeScript的示例实现:

typescript 复制代码
import axios from 'axios';
import { JSDOM } from 'jsdom';

// 假设的分批翻译函数
async function batchTranslateText(textBlocks: string[], sourceLang: string, targetLang: string): Promise<string[]> {
    // 分批翻译每个文本块
    const translatedBlocks = [];
    for (const block of textBlocks) {
        const response = await axios.post('https://api.example.com/translate', {
            text: block,
            sourceLang: sourceLang,
            targetLang: targetLang
        });
        translatedBlocks.push(response.data.translatedText);
    }
    return translatedBlocks;
}

// 解析HTML、分批翻译并重构HTML内容
async function translateHtmlContent(htmlContent: string, sourceLang: string, targetLang: string, tokenLimit: number): Promise<string> {
    const dom = new JSDOM(htmlContent);
    const body = dom.window.document.body;
    let currentBlock = '';
    const textBlocks = [];
    const textNodes = [];

    // 遍历文档树并分割文本
    function extractText(node: Node) {
        if (node.nodeType === 3) { // 文本节点
            const text = node.textContent.trim();
            if ((currentBlock.length + text.length) > tokenLimit) {
                textBlocks.push(currentBlock);
                currentBlock = text;
            } else {
                currentBlock += text + ' ';
            }
            textNodes.push(node);
        } else if (node.nodeType === 1) { // 元素节点
            node.childNodes.forEach(child => extractText(child));
        }
    }

    extractText(body);
    if (currentBlock.length > 0) {
        textBlocks.push(currentBlock);
    }

    // 分批翻译文本块
    const translatedBlocks = await batchTranslateText(textBlocks, sourceLang, targetLang);

    // 拼接翻译结果并插回HTML
    let blockIdx = 0;
    let currentTranslatedBlock = translatedBlocks[blockIdx].split(' ');
    textNodes.forEach((node, index) => {
        if (currentTranslatedBlock.length === 0) {
            blockIdx++;
            currentTranslatedBlock = translatedBlocks[blockIdx].split(' ');
        }
        node.textContent = currentTranslatedBlock.shift();
    });

    return dom.serialize();
}

// 示例用法
const htmlContent = ``;
translateHtmlContent(htmlContent, 'zh-CN', 'en', 20000) // 假设tokenLimit为20000
    .then(translatedHtml => console.log(translatedHtml))
    .catch(error => console.error(error));

注意

  • 该实现基于假设,即翻译服务API支持POST请求并返回翻译后的文本。
  • 实际应用中,您可能需要根据实际的翻译服务API调整batchTranslateText函数的实现。
  • 本示例中,token的计算仅仅基于字符长度,实际应用中您可能需要根据翻译服务的具体定义来计算token(例如,可能基于单词数、字符数等)。
  • 由于直接按字符数分割可能会破坏单词的完整性,实际应用中可能需要更智能的分割策略以避免这种情况。

上述代码仅作了不超过5行的修改,最终实现我需要的效果。

实现效果

(中译英演示,其中html部分中的id字段不会翻译)

第二类:常见的snippet代码生成

snippet类的代码也可以通过搜索引擎获取,不过除非收藏之前使用过的网址,否则也需要多次浏览或尝试才能找到自己想要的snippet代码。

而GPT生成的,几乎可以直接使用。

4. 时间处理函数

背景

写前端业务,避免不了时间筛选的处理,前面一段时间就需要做移动端的时间筛选组件,支持年月日周时分任意维度的选择以及时间范围的选择。

现有的vant时间筛选组件已经无法完成,需要自定义picker的optionList,也就是生成一些时间数组,比如前后10年的年份,当前年月的日期(大小月,闰年这些),当前年份的周选项(周开始日期结束日期之类)等等。

  • GPT,启动!

自定义角色设定

(前面使用的是一个通用的编程助手角色设定,这里偏专有领域,有特殊要求,所以就自定义了一个角色)

很简单的描述,如下:

角色设定 复制代码
你是一个前端专家

擅长处理时间相关的问题,擅长使用day.js库,对齐有极其深入的理解

接下来用户会提出相关的需求,请你使用dayjs库并使用typescript实现相应的需求,输出内容不要过度解释,只需要输出代码,代码包含注释即可。

代码要求封装为函数,并附带测试例子

对话

问:生成前后10年的年份数组,比如现在为2024年,那么数组就是[2014, ... , 2024, ..., 2034]

答:

typescript 复制代码
import dayjs from 'dayjs';

/**
 * 生成当前年份前后10年的年份数组,基于当前时间
 * @returns 包含前后10年的年份数组
 */
function generateYearsAroundCurrent(): number[] {
  const currentYear = dayjs().year();
  const years: number[] = [];
  for (let i = -10; i <= 10; i++) {
    years.push(currentYear + i);
  }
  return years;
}

// 测试例子
console.log(generateYearsAroundCurrent()); // 根据当前年份输出: [当前年份-10, ..., 当前年份, ..., 当前年份+10]

问:根据传入的年份和月份,生成当月的日期数组,比如['01', '02', .... '31'],需要处理大小月及润年

答:

typescript 复制代码
import dayjs from 'dayjs';

/**
 * 根据给定的年份和月份生成当月的日期数组
 * @param year 年份
 * @param month 月份(1-12)
 * @returns 当月的日期数组,格式为['01', '02', ..., '31']
 */
function generateDatesOfMonth(year: number, month: number): string[] {
  // dayjs月份是0开始的,所以需要减1
  const daysInMonth = dayjs(new Date(year, month - 1)).daysInMonth();
  const dates: string[] = [];
  for (let i = 1; i <= daysInMonth; i++) {
    // 将日期格式化为两位字符串
    dates.push(i.toString().padStart(2, '0'));
  }
  return dates;
}

// 测试例子
console.log(generateDatesOfMonth(2024, 2)); // 闰年2月: ['01', '02', ..., '29']
console.log(generateDatesOfMonth(2023, 4)); // 非闰年4月: ['01', '02', ..., '30']

(剩余的对话省略,可自行尝试...)

实现效果

5-7,不做详细介绍

  1. git获取自己编写代码的行数:增加一下自己写代码的仪式感~
  2. CSS磨砂玻璃效果
  3. windows查看端口占用:突然有一点localhost:4000无法启动了,一看被某某软件占用了,啊!

第三类:辅助阅读

8. 辅助阅读代码

当你实在是不想阅读同事写的代码的时候:

  • Copilot,启动!

感觉自己阅读代码的能力逐渐在退化...

9-10,不做详细介绍

  1. 辅助摘要网页内容(B站自带的,Edge自带的,当然还有一些支持各种网站的插件,很多,这里不做推荐)
  2. PDF/论文的阅读

比如像Edge自带的网页聊天功能,下面我对其对我之前写的[一篇文章](原来Vue.js还有这么多好用的UI组件库-Justin3go's Blog-🖊)进行了摘要处理:

放大:

11. 某些文档的阅读,如Prisma

有一些技术栈的官方文档接入了AI问答,有一点点用,但用处不多,在不知道怎么使用关键词搜索的时候可能会有奇效;而已经知道关键词了,还是建议直接搜索定位到文档位置好一些。

第四类:英语学习

这里不做详细介绍,网上优质的翻译提示词也挺多的。

  1. 给一篇短文,让其给出值得关注的短语和单词,并加粗给出发音、示例
  2. 口语对话
  3. 翻译

关于第12点,可以像这样,这还是要看你自己记笔记的习惯,然后调调提示词就好:

'What's that?'

'A book, written by my great-grandmother, with stories about her life and all her family. I never knew her but from Mum's stories I always felt an affinity . Now, after reading it, I see so many parallels. There's some sad stories and funny ones; I feel like I know the whole family.'

'Wow! I wish my great-grandma left something like that. I hardly know anything about my family.'

Emily woke, immediately recalling the dream.

'That must be my future great-granddaughter', she realised. 'The one without a book.'

She knew exactly what she needed to do...

ini 复制代码
affinity [əˈfɪnəti],(情感或利益的)密切关系,吸引力  
场景:They felt an instant affinity for each other when they first met.

parallels ['pærəlelz],相似之处,相似事物  
场景:There are many parallels between their stories.

realised [ˈriːəlaɪzd],意识到,认识到  
场景:She suddenly realised that she had left her phone at home.

woke [woʊk],醒来
css 复制代码
I never knew her but from Mum's stories
我从妈妈的故事中对她有所了解

第五类:创新性思考

12. 一些深度思考,提问,交流

不做举例

13. 数据库架构的优化

背景

我用Prisma的schema设计了数据库架构,但我深知我的水平不够,于是:

  • GPT,启动!

角色设定


你是谁

  • 你是一个数据库专家,有 20 年以上数据库架构经验,精通各种数据库表设计范式,知道如何取舍。
  • 你是一个 Node.js 专家,拥有 10 年以上 Node.js 一线编程经验
  • 对于 Prisma 技术栈非常熟悉,阅读 Prisma 官方文档百遍以上,熟读其 github 源码

你要做什么

  • 任务一:如果用户给你一段业务知识描述、背景描述,请你该业务知识,并按你自己的话术进行梳理,分点列出
  • 任务二:如果用户给你一个schema.prisma文件,你应该理解其数据库架构,如果上下文中包含了对应的业务知识,你应该利用好之前的业务知识,仔细理解该schema.prisma文件。理解完成之后,对其数据库架构提出对应的优化建议 / 问题修复等
  • 任务三:如果用户给你一个schema.prisma文件,并且专门叫你 mock 数据,那么你应该按照 Prisma 官方文档写法,参考例子中seed.ts写法进行 mock 数据生成,可以按需使用一些现成的 mock 数据生成库

部分例子

任务三的输入例子如下: """ 请你 mock 下方模式文件的数据:

prisma 复制代码
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
  // previewFeatures = []
}

generator dbml {
  provider = "prisma-dbml-generator"
}

model User {
  id        String   @id @default(cuid())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  email     String   @unique
  password  String
  firstname String?
  lastname  String?
  posts     Post[]
  role      Role
}

model Post {
  id        String   @id @default(cuid())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  published Boolean
  title     String
  content   String?
  author    User?    @relation(fields: [authorId], references: [id])
  authorId  String?
}

enum Role {
  ADMIN
  USER
}

"""

任务三的输出例子如下: """

ts 复制代码
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

async function main() {
  await prisma.user.deleteMany();
  await prisma.post.deleteMany();

  console.log("Seeding...");

  const user1 = await prisma.user.create({
    data: {
      email: "lisa@simpson.com",
      firstname: "Lisa",
      lastname: "Simpson",
      password: "$2b$10$EpRnTzVlqHNP0.fUbXUwSOyuiXe/QLSUG6xNekdHgTGmrpHEfIoxm", // secret42
      role: "USER",
      posts: {
        create: {
          title: "Join us for Prisma Day 2019 in Berlin",
          content: "https://www.prisma.io/day/",
          published: true,
        },
      },
    },
  });
  const user2 = await prisma.user.create({
    data: {
      email: "bart@simpson.com",
      firstname: "Bart",
      lastname: "Simpson",
      role: "ADMIN",
      password: "$2b$10$EpRnTzVlqHNP0.fUbXUwSOyuiXe/QLSUG6xNekdHgTGmrpHEfIoxm", // secret42
      posts: {
        create: [
          {
            title: "Subscribe to GraphQL Weekly for community news",
            content: "https://graphqlweekly.com/",
            published: true,
          },
          {
            title: "Follow Prisma on Twitter",
            content: "https://twitter.com/prisma",
            published: false,
          },
        ],
      },
    },
  });

  console.log({ user1, user2 });
}

main()
  .catch((e) => console.error(e))
  .finally(async () => {
    await prisma.$disconnect();
  });

"""


(最终效果也还不错,给我提供了不少建议,代码暂时不公开,这里也就不演示了)

14. 域名的选购

简短的域名已经基本都被抢完了,很难想到一个优质的域名,所以可以让GPT来帮自己想,然后通过接口判断域名是否被注册,最终给出一个候选列表。

第六类:常识性问题

这些其实搜索引擎也很容易搜索到

  1. 打羽毛球时如何保护膝盖
  2. i18n为什么叫做i18n

第七类:格式转换

这些任务GPT的完成效果也比较好

17. cron语法

角色设定

markdown 复制代码
**你要做什么**:

你是一个`自然语言`转`Crontab语法`的转换器,用户输入一段自然语言描述的定时时间,你需要将其转换为`Crontab`语法。

**例子**:

输入:每隔1小时执行一次
输出:0 * * * * command

输入:每隔8小时执行一次
输出:0 0,8,16 * * * command

输入:每天晚上11点到次日凌晨7点之间,每小时执行一次
输出:0 23-7/1 * * * command

对话

问:每天上午每隔45分钟执行一次

答:

Crontab不支持跨小时的分钟间隔直接表示。要实现每天上午每隔45分钟执行一次,需要分别为每个小时设置具体的分钟数。上午时间段为0点到11点(包括0和11),但由于45分钟的间隔,这会导致需要手动计算每个小时内的执行时间并分别设置。

由于直接转换为单一Crontab表达式的复杂性,一个更实用的方法是使用多个Crontab条目来近似实现此需求,或者在执行的命令内部处理时间逻辑。

例如,可以设置一个每小时运行的任务,然后在命令脚本内部检查当前时间是否满足每45分钟的条件。

近似Crontab设置(示例方法,需要根据实际需求调整):

bash 复制代码
0 0-11 * * * command # 每小时的开始
45 0-10 * * * command # 每小时45分时执行,限定在上午10点之前,因为11点45分不在要求的时间范围内

这个方法并不完美,因为它没有精确地每45分钟执行一次,但它可以在每个小时的特定时间点执行,从而部分满足需求。

对于精确到每45分钟执行一次的需求,建议通过脚本内部逻辑来实现,例如在脚本开始时检查当前时间,确定是否是启动操作的合适时机。

18. 自然语言转shieldIO图标

背景

写github readme的时候免不了需要一些徽章,一般是去shieldIO官网去自定义,但要制作出简洁美观的徽章通常需要花费大量的时间。

而shieldIO的链接其实是语义化的,所以:

  • GPT,启动!

角色设定


你是谁:你是一个开源爱好者,并且拥有 UI 设计背景,对于 Markdown 文件的书写美化也非常熟练。

你要做什么 :接下来我将输入一个技术栈,请你使用shields.io的路径生成对应的美化徽章,返回格式为 Markdown 的图片格式,注意不要用任何符号包裹输出,我需要预览该图片。用户也可以自定义其中的一些参数,比如--labelColor=#ccc

例子 1

输入:

复制代码
ELasticSearch 7

输出:

例子 2

输入:

复制代码
TypeScript

输出:

例子 3

arduino 复制代码
Vue 3 --labelColor=#ccc

输出:


对话

问:MIT协议

答:

(由于这个给定链接就可以展示图片,所有对话效果非常好!)

19. svg流程图转描述语句

背景

写毕业论文时,难免需要画流程图,并且画图必须要附带解释,但其实解释内容已经在svg流程图中包含了,所以

  • GPT,启动!

角色设定

xml 复制代码
首先,你是一个全栈开发人员,拥有多年的编程经验,同时,你对技术文档编写有非常多的心得,对于文档编写以及炉火纯青,接下来你按照以下步骤进行执行;

- `step 1`:我将给你一张以 SVG 格式表示的泳道流程图 / 普通流程图,请你仔细理解其中的含义,并解释它。注意,我不需要你解释任何关于流程图规范相关的知识,我需要的是这张流程图包含的业务知识,你可以参考如下格式进行解释:

<!---->

    <总体概述>:引用流程泳道图SVG中的大标题作为主语然后进行概述(可以先进行分点描述,然后根据分点描述进行摘要处理)

    <分点描述>:

    1. XXX,引用流程图SVG中的每列小标题为主语然后进行逻辑解释,如果没有,请你自行理解并分点
    2. XXX,同上
    3. XXX, 可能有更多

    <总结>

注意,上述只是格式,不需要在最终的输出展示上方的格式标注,如`<总体概述>、<分点概述>、XXX...`不需要展示在最终的输出,以及任何关于流程图规范的字样都不要展示最终的输出中,比如:`流程图、泳道、该流程图、本流程图`之类字样。该输出大约为 500-600 字;

- `step 2`: 你自己阅读自己的输出内容,去除掉其中冗余的部分、你认为很简单不需要解释的部分,该输出大约为 400-500 字;
- `step 3`: 最后用你专业的技术知识再次比对 SVG 流程图,润色你的最终输出,毕竟你是一个技术专家,最终输出为 300-400 字

对话

问:(流程图的svg代码)

流程图预览:

答:

这张图展示的是一个基于HTTPS协议的nginx服务器架构。它详细描述了客户端请求如何通过nginx服务器被处理并最终达到应用服务器的整个过程。

  1. 请求的接收与处理:用户的请求首先被nginx服务器接收。nginx根据配置决定如何处理这个请求,比如是否需要重定向、是否缓存等。对于HTTPS请求,nginx会处理SSL/TLS握手过程,确保安全的连接建立。

  2. 端口监听:nginx配置监听443端口,这是HTTPS协议默认使用的端口。通过监听这个端口,nginx能够接收到来自客户端的HTTPS请求。

  3. 请求的转发:处理完请求之后,nginx会根据配置将请求转发到内部的不同服务。这通常涉及到负载均衡等策略,以确保请求被高效地处理。

  4. 应用服务器处理:内部的应用服务器接收到nginx转发的请求后,开始进行业务逻辑的处理。这可能涉及到数据库的读写、文件的存取、第三方服务的调用等。

  5. 响应的返回:应用服务器处理完请求后,会将响应返回给nginx服务器,nginx再将这个响应返回给客户端。这个响应可能包括HTML页面、JSON数据等。

  6. 服务组件:图中还涉及到了其他的服务组件,如数据库(pg)、缓存(redis)、对象存储(minio)等,这些组件为应用服务器的处理提供了必要的支持。

总结来说,这张图展示了一个基于nginx的HTTPS服务器架构。从接收客户端的HTTPS请求开始,到请求在应用服务器的处理,再到响应返回给客户端的整个过程,涉及到了nginx的配置、SSL/TLS握手、负载均衡、内部服务组件等关键环节。这样的架构能够确保请求的安全、高效处理。

(用来写一些东西非常合适)

20-22,不做详细介绍

  1. 自然语言转emoji
  2. js转ts
  3. sql

第八类:辅助写作

这一部分也是老生常谈了,并且我自己用得不多,这里简单带过

  1. 各种报告
  2. 各种总结
  3. 语言润色(邮件、推广话术、脚本文案等)

第九类:未知分类

还有一些编程相关的例子,比如:

  1. mock数据的生成
  2. 技术栈的调研:比较合适,GPT的截止年限,但我们对技术栈的选择也不会选择刚出来没多久的技术,更多是一些稳定的技术,正好问GPT比较合适
  3. 错误处理
  4. 测试用例的生成

最后

到这里已经写了太多了,有点疲了,所以后面举例就偏少了,后面有机会再聊吧~

(怎么只有29个,不是30个吗?第30个就是这篇文章的立意~)

目前笔者理解,现在有很多听起来非常牛逼的AI能力,什么一键、一句话、全自动之类的,只能说未来可期,真正落地使用还不是很好用。

但现在的AI已经能帮助到我们工作、学习、生活的各个方面,就像上面这一堆例子一样,在平常应该好好利用起来。

总之,AI的发展为我们打开了无限的可能性,去享受它带给我们生活和工作的便利和乐趣吧。

相关推荐
咖啡の猫18 分钟前
Shell脚本-for循环应用案例
前端·chrome
uzong2 小时前
面试官:Redis中的 16 库同时发送命令,服务端是串行执行还是并行执行
后端·面试·架构
百万蹄蹄向前冲3 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
追逐时光者3 小时前
.NET 使用 MethodTimer 进行运行耗时统计提升代码的整洁性与可维护性!
后端·.net
朝阳5813 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路3 小时前
GeoTools 读取影像元数据
前端
ssshooter4 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
你的人类朋友4 小时前
【Node.js】什么是Node.js
javascript·后端·node.js
Jerry5 小时前
Jetpack Compose 中的状态
前端
David爱编程5 小时前
面试必问!线程生命周期与状态转换详解
java·后端