大模型学习之菜鸟的进阶道路

在我学习大模型之前,我一直是一个java哥,现在学习了大模型,我看视频学习,就只知道一个base llm,还有一个是instruction tuned llm,我理解了这些词汇的意义,然后进入了正式学习,那我们正式开始吧!

资源,配置,环境

首先我是通过DeepLearning.AI进行最基础的学习,网址是:[DLAI - Learning Platform ,在这里你可以学习到最基础的知识,里面有内置Jupyter,可以方便读者学习,通过视频的讲解加上自己的编写可以学的更快!

开始

首先我们会有两条对应原则,具体内容我们后面会进行讲解 如果你是在本机运行这些代码,那我们首先需要

pip install openai

当然如果你是在网站用内置jupyter那就不需要管这些问题了
好了让我们来看看这些晦涩难懂的大模型是什么吧

运行

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

openai.api_key  = os.getenv('OPENAI_API_KEY')

这段代码的目的是设置并使用OpenAI的API密钥以访问OpenAI的服务

import openai
import os

这两行代码导入了需要的模块:

  • openai模块用于与OpenAI的API进行交互。
  • os模块用于与操作系统进行交互,特别是用于获取环境变量。
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

这两行代码的作用是加载环境变量:

  • load_dotenvfind_dotenv函数来自dotenv库,dotenv库用于读取.env文件中的环境变量。
  • find_dotenv()函数会自动找到当前项目中的.env文件路径。
  • load_dotenv(find_dotenv())会加载这个文件中的所有环境变量。
openai.api_key = os.getenv('OPENAI_API_KEY')

这行代码从环境变量中获取OpenAI的API密钥并设置它:

  • os.getenv('OPENAI_API_KEY')从环境变量中获取名为OPENAI_API_KEY的值。
  • openai.api_key将该值设置为OpenAI库使用的API密钥,以便在之后的代码中可以使用OpenAI的API。
    这段代码的总体目的是从.env文件中读取OpenAI的API密钥,并配置OpenAI库以便后续代码可以使用该密钥与OpenAI的服务进行交互。
    然后点击下图这个按钮就可以运行 image.png 然后显示为这个形式就是运行成功 image.png
    然后我们继续运行后续的代码
def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, # this is the degree of randomness of the model's output
    )
    return response.choices[0].message["content"]

这里我们写了一个辅助函数,何为辅助函数,用简单的话来说就是为了减少代码的冗余,而存在的函数
这里定义了一个名为get_completion的辅助函数,用于通过OpenAI的gpt-3.5-turbo模型生成聊天补全

def get_completion(prompt, model="gpt-3.5-turbo"):

这行代码定义了一个函数get_completion,它接受两个参数:

  • prompt:这是用户提供的提示信息或问题。
  • model:这是使用的模型名称,默认为gpt-3.5-turbo
    messages = [{"role": "user", "content": prompt}]

这行代码创建了一个包含字典的列表messages,用于向OpenAI API发送请求。字典中有两个键:

  • "role":指定消息的角色,这里是"user",表示用户的消息。
  • "content":包含实际的提示内容,即用户提供的prompt
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, # this is the degree of randomness of the model's output
    )

这段代码调用OpenAI的ChatCompletion.create方法生成聊天补全。传递的参数包括:

  • model:使用的模型名称,这里使用函数参数model,默认是gpt-3.5-turbo
  • messages:消息列表,这里是包含用户提示的messages
  • temperature:设置为0,控制模型输出的随机性。温度值越低,输出越确定和一致;温度值越高,输出越随机。
    return response.choices[0].message["content"]

这行代码从API的响应中提取并返回生成的消息内容:

  • response.choices[0].message["content"]:从响应中提取第一个选择的消息内容,并将其返回。 总体来说,这个函数的作用是:
  1. 接收用户提供的提示信息。
  2. 调用OpenAI的gpt-3.5-turbo模型生成响应。
  3. 返回生成的消息内容。

然后我们就可以运行了
然后下面那个我们可以不用管他,如果这个In [2]显示了,就证明运行成功了 image.png
接下来就我们前面提到的两个原则:

  • 原则1:编写清晰而具体的指令
  • 原则2:给模型时间进行“思考” 然后我们运行这个后面的代码:
text = f"""
You should express what you want a model to do by \ 
providing instructions that are as clear and \ 
specific as you can possibly make them. \ 
This will guide the model towards the desired output, \ 
and reduce the chances of receiving irrelevant \ 
or incorrect responses. Don't confuse writing a \ 
clear prompt with writing a short prompt. \ 
In many cases, longer prompts provide more clarity \ 
and context for the model, which can lead to \ 
more detailed and relevant outputs.
"""
prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence.
```{text}```
"""
response = get_completion(prompt)
print(response)

这里定义了一个包含多行文本的字符串,并使用OpenAI的get_completion函数生成一个总结。

text = f"""
You should express what you want a model to do by \ 
providing instructions that are as clear and \ 
specific as you can possibly make them. \ 
This will guide the model towards the desired output, \ 
and reduce the chances of receiving irrelevant \ 
or incorrect responses. Don't confuse writing a \ 
clear prompt with writing a short prompt. \ 
In many cases, longer prompts provide more clarity \ 
and context for the model, which can lead to \ 
more detailed and relevant outputs.
"""

这段代码使用三重引号定义了一个多行字符串text。其中的\ 用于在行尾进行换行,使代码更易读。这个字符串包含了关于如何编写有效提示的信息,强调了清晰和具体的重要性。

prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence.
```{text}```
"""

这段代码构建了一个新的字符串prompt,该字符串是一个提示,要求模型总结用三重反引号括起来的文本。使用了f字符串格式化方法,将前面定义的text嵌入到提示中。生成的提示内容如下:

Summarize the text delimited by triple backticks 
into a single sentence.
```You should express what you want a model to do by providing instructions that are as clear and specific as you can possibly make them. This will guide the model towards the desired output, and reduce the chances of receiving irrelevant or incorrect responses. Don't confuse writing a clear prompt with writing a short prompt. In many cases, longer prompts provide more clarity and context for the model, which can lead to more detailed and relevant outputs.```

response = get_completion(prompt)

这行代码调用了前面定义的get_completion函数,传入构建的prompt作为参数。该函数使用OpenAI的API生成对提示的响应。

print(response)

这行代码将API的响应打印出来,即模型对提示生成的总结。 总结起来,这段代码的作用是:

  1. 定义一段关于如何编写有效提示的文本。
  2. 构建一个提示,要求模型对这段文本进行总结。
  3. 使用OpenAI的模型生成总结并打印输出。

然后我们运行这个代码即可,以下图片是我运行时的结果 image.png
这里就可以看到我们通过openai进行了最基础的询问操作
然后就是结构化进行输出
我们为了使传递模型的输出更加容易我们可以让其输出HTML或者是JSON格式
然后我们运行后面这个代码

prompt = f"""
Generate a list of three made-up book titles along \ 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre.
"""
response = get_completion(prompt)
print(response)

这里定义了一个提示,要求OpenAI的模型生成三个虚构的书籍标题,并提供相关的作者和体裁信息,然后返回这些数据的JSON格式。

prompt = f"""
Generate a list of three made-up book titles along \ 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre.
"""

这段代码使用了多行字符串构建了一个提示字符串prompt,内容如下:

Generate a list of three made-up book titles along 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre.

具体来说,这个提示的意思是:

  • 生成三个虚构的书名。
  • 提供每本书的作者和体裁。
  • 以JSON格式提供这些信息,并包含以下键:book_id, title, author, genre
response = get_completion(prompt)

这行代码调用了前面定义的get_completion函数,传入构建的prompt作为参数。该函数使用OpenAI的API生成对提示的响应。

print(response)

这行代码将API的响应打印出来。模型生成的响应将是一个包含三个虚构书籍信息的JSON格式字符串。 总结起来,这段代码的作用是:

  1. 构建一个提示,要求模型生成三本虚构书籍的标题、作者和体裁。
  2. 使用OpenAI的模型生成响应,并以JSON格式提供这些信息。
  3. 打印生成的响应。

然后我们运行代码 image.png
很显然,我们运行成功了,同样确实实现了相应功能
如果我们想要进行对应格式化输出其他的内容我们还可以这样进行,比如下列代码:

text_1 = f"""
Making a cup of tea is easy! First, you need to get some \ 
water boiling. While that's happening, \ 
grab a cup and put a tea bag in it. Once the water is \ 
hot enough, just pour it over the tea bag. \ 
Let it sit for a bit so the tea can steep. After a \ 
few minutes, take out the tea bag. If you \ 
like, you can add some sugar or milk to taste. \ 
And that's it! You've got yourself a delicious \ 
cup of tea to enjoy.
"""
prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write \"No steps provided.\"

\"\"\"{text_1}\"\"\"
"""
response = get_completion(prompt)
print("Completion for Text 1:")
print(response)

这段代码的目的是处理一段文本,并将其中的指令按步骤格式化

text_1 = f"""
Making a cup of tea is easy! First, you need to get some \ 
water boiling. While that's happening, \ 
grab a cup and put a tea bag in it. Once the water is \ 
hot enough, just pour it over the tea bag. \ 
Let it sit for a bit so the tea can steep. After a \ 
few minutes, take out the tea bag. If you \ 
like, you can add some sugar or milk to taste. \ 
And that's it! You've got yourself a delicious \ 
cup of tea to enjoy.
"""

这段代码定义了一个包含多行文本的字符串text_1,描述了制作一杯茶的步骤。文本中包含了一些换行符\以保持代码格式的整洁。

prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write "No steps provided."

\"\"\"{text_1}\"\"\"
"""

这段代码构建了一个新的提示字符串prompt,其内容如下:

You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, 
then simply write "No steps provided."

"""Making a cup of tea is easy! First, you need to get some water boiling. While that's happening, grab a cup and put a tea bag in it. Once the water is hot enough, just pour it over the tea bag. Let it sit for a bit so the tea can steep. After a few minutes, take out the tea bag. If you like, you can add some sugar or milk to taste. And that's it! You've got yourself a delicious cup of tea to enjoy."""

这个提示要求模型将包含在三重引号中的文本重新格式化为分步骤的指令格式。如果文本不包含指令,则输出“No steps provided.”

response = get_completion(prompt)

这行代码调用了前面定义的get_completion函数,传入构建的prompt作为参数。该函数使用OpenAI的API生成对提示的响应。

print("Completion for Text 1:")
print(response)

这两行代码打印出模型生成的响应。具体来说,将显示模型如何将给定的制作茶的步骤重新格式化为分步骤的形式。
总结起来,这段代码的作用是:

  1. 定义一段描述如何制作茶的文本。
  2. 构建一个提示,要求模型将文本中的指令重新格式化为分步骤的形式。
  3. 使用OpenAI的模型生成响应并打印输出。

然后我们运行代码
image.png
这个就是输出内容
后面我们就开始介绍对应代码了,因为后面几乎都是相同概念

text_2 = f"""
The sun is shining brightly today, and the birds are \
singing. It's a beautiful day to go for a \ 
walk in the park. The flowers are blooming, and the \ 
trees are swaying gently in the breeze. People \ 
are out and about, enjoying the lovely weather. \ 
Some are having picnics, while others are playing \ 
games or simply relaxing on the grass. It's a \ 
perfect day to spend time outdoors and appreciate the \ 
beauty of nature.
"""
prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write \"No steps provided.\"

\"\"\"{text_2}\"\"\"
"""
response = get_completion(prompt)
print("Completion for Text 2:")
print(response)

这段代码定义了一个新的文本,并要求模型判断该文本是否包含指令。如果包含指令,将其重新格式化为步骤形式;如果不包含指令,则输出“No steps provided”。

text_2 = f"""
The sun is shining brightly today, and the birds are \
singing. It's a beautiful day to go for a \ 
walk in the park. The flowers are blooming, and the \ 
trees are swaying gently in the breeze. People \ 
are out and about, enjoying the lovely weather. \ 
Some are having picnics, while others are playing \ 
games or simply relaxing on the grass. It's a \ 
perfect day to spend time outdoors and appreciate the \ 
beauty of nature.
"""

这段代码定义了一个包含多行文本的字符串text_2,描述了一个美好的户外场景。文本中使用了换行符\以保持代码格式的整洁。

prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write "No steps provided."

\"\"\"{text_2}\"\"\"
"""

这段代码构建了一个新的提示字符串prompt,其内容如下:

You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, 
then simply write "No steps provided."

"""The sun is shining brightly today, and the birds are singing. It's a beautiful day to go for a walk in the park. The flowers are blooming, and the trees are swaying gently in the breeze. People are out and about, enjoying the lovely weather. Some are having picnics, while others are playing games or simply relaxing on the grass. It's a perfect day to spend time outdoors and appreciate the beauty of nature."""

这个提示要求模型将包含在三重引号中的文本重新格式化为分步骤的指令格式。如果文本不包含指令,则输出“No steps provided.”

response = get_completion(prompt)

这行代码调用了前面定义的get_completion函数,传入构建的prompt作为参数。该函数使用OpenAI的API生成对提示的响应。

print("Completion for Text 2:")
print(response)

这两行代码打印出模型生成的响应。具体来说,将显示模型判断文本是否包含指令,并根据判断结果输出相应内容。
总结起来,这段代码的作用是:

  1. 定义一段描述户外美好场景的文本。
  2. 构建一个提示,要求模型判断文本是否包含指令,并根据判断结果重新格式化或输出“No steps provided.”
  3. 使用OpenAI的模型生成响应并打印输出。

运行后,我们会发现text2是一段描写美好的风景,并没有指令所以很显然这个就是No steps provided.
image.png
先发布一下吧!!! 让后过段时间再更新

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/684089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】 new成功,但是没有进入到构造函数。

NameTest工程中 nametest.cpp NameTest::NameTest() {pdata new privateAB; }NameTest::~NameTest() {if (pdata){privateAB *p (privateAB *)pData; //void *pdata nullptr;delete p;pdata nullptr;} }内部类: privateAB #include "private.h"#i…

vs2015Professional英文版和中文版的安装教程(附安装包)

英文版 下载安装包 1、Visual Studio 2015 With Update 3 Community 32位64位英文社区版下载地址: http://download.microsoft.com/download/b/e/d/bedddfc4-55f4-4748-90a8-ffe38a40e89f/vs2015.3.com_enu.iso 镜像名称:en_visual_studio_community_…

图片像素缩放,支持个性化自定义与精准比例调整,让图像处理更轻松便捷!

图片已经成为我们生活中不可或缺的一部分。无论是社交媒体的分享,还是工作文档的编辑,图片都扮演着至关重要的角色。然而,你是否曾经遇到过这样的问题:一张高清大图在上传时却受限于平台的大小要求,或者一张小图需要放…

Python用于简化数据操作和分析工作库之DaPy使用详解

概要 在数据科学和机器学习领域,处理和分析数据是关键的一步。Python 的 DaPy 库提供了一组强大的工具,用于简化数据操作和分析工作。DaPy 旨在提供高效且直观的 API,使得数据处理变得更加便捷。本文将详细介绍 DaPy 库,包括其安装方法、主要特性、基本和高级功能,以及实…

【MMdetection】2.自定义数据训练

1.废话 因为MMdetection里面提供了非常多的模型和配置文件供我们选择,这样做对比实验非常方便。 在标准数据集上训练预定义的模型 — MMDetection 3.3.0 文档 官方文档在此。 openMMlab提供了各种经典网络和配置文件系统使得MMdetection的上手难度有一点,不熟悉官方常规操…

AI绘画入门基础之描述关键词(提示词)需要遵循什么逻辑?

简单来说总结为一句话:就是告诉AI,你要画什么东西,东西长什么样,用什么画法绘画。 1. 概念性与详细性: 使用这么多AI绘画工具创作图片以来,其实有时候根据一些中文概念词语也能生成一些不错的画风图片&a…

python篮球队员招募 2024年3月青少年编程电子学会python编程等级考试二级真题解析

目录 python篮球队员招募 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python篮球队员招募 2024年3月 python编程等级考试级编程题 一、题目…

ultralytics solutions快速解决方案,快速实现某些场景的图像解决方案

参考: https://docs.ultralytics.com/solutions/ 在不断更新,已经有一些场景的解决方案 ultralytics 8.2.27 一、区域统计 1、自定义区域统计数量 https://docs.ultralytics.com/guides/region-counting/ 1、自定义画框,比如矩形框四个点的坐标获取 通过cv2点击图片获…

人工智能_机器学习097_PCA数据降维算法_数据去中心化_特征值_特征向量_EVD特征值分解原来和代码实现---人工智能工作笔记0222

降维算法的原理,一会咱们再看,现在先看一下,算法 可以看到PCA算法的,原理和过程,我们先看一下代码 为了说明PCA原理,这里,我们,先来计算一下X的方差,可以看到 先把数据进行去中心化,也就是用数据,减去数据的平均值. B = X-X.mean(axis=0) 这段代码是用于计算矩阵X的每一列减去该…

Dell戴尔XPS 16 9640 Intel酷睿Ultra9处理器笔记本电脑原装出厂Windows11系统包,恢复原厂开箱状态oem预装系统

下载链接:https://pan.baidu.com/s/1j_sc8FW5x-ZreNrqvRhjmg?pwd5gk6 提取码:5gk6 戴尔原装系统自带网卡、显卡、声卡、蓝牙等所有硬件驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell、迈克菲等预装软…

【UE5.1 角色练习】11-坐骑——Part1(控制大象移动)

前言 在上一篇(【UE5.1 角色练习】10-物体抬升、抛出技能 - part2)基础上创建一个新的大象坐骑角色,并实现控制该角色行走的功能。 效果 步骤 1. 在商城中下载“African Animal Pack”资产和“ANIMAL VARIETY PACK”资产导入工程中 2. 复…

python-opencv图像分割

文章目录 二值化图像骨骼连通域分割 二值化 所谓图像分割,就是将图像的目标和背景分离开来,更直观一点,就是把目标涂成白色,背景涂成黑色,言尽于此,是不是恍然大悟:这不就是二值化么&#xff1…

Linux进程替换 自主shell程序

本篇将要讲解有关进程中最后一个知识点——进程替换,其中主要介绍有关进程替换的六个函数,直接从函数层面来理解进程替换(在使用函数的过程中,也会对进行替换进行解释)。本篇主要围绕如下的进程替换函数: 以…

【全开源】考试答题系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统,提供全部前后台无加密源代码,支持私有化部署。 📝考试答题系统:便捷高效的学习新选择💡 📚 考试答题系统是什么? 考试答题系统&…

windows下visual studio 2019 c++代码混淆

环境:windows,visual studio 2019,cmake 目的:c代码混淆 一 IDE安装clang平台工具集 1:打开visual studio Installer 2.点击已安装下的 修改 ->单个组件,搜索框中输入"clang",勾选,然后点击安装。&…

SSM框架整合,内嵌Tomcat。基于注解的方式集成

介绍: SSM相信大家都不陌生,在spring boot出现之前,SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了,但是现在市面上任然有很多老项目是基于SSM技术的。因此,能熟练掌握SSM进行开发…

图与矢量 RAG — 基准测试、优化手段和财务分析示例

图与矢量 RAG — 基准测试、优化手段和财务分析示例 Neo4j 和 WhyHow.AI 团队探索了图和矢量搜索系统如何协同工作以改进检索增强生成 (RAG) 系统。使用财务报告 RAG 示例,我们探索了图和矢量搜索之间的响应差异,对两种类型的答案…

C# 反射类Assembly 程序集(Assembly)用法

常见的两种程序集: 可执行文件(.exe文件)和 类库文件(.dll文件)。 在VS开发环境中,一个解决方案可以包含多个项目,而每个项目就是一个程序集。 他们之间是一种从属关系,也就是说&…

算法第五天之力扣第27题:移除元素

一、移除元素 该题的题目链接如下所示,看题解前先点击或复制下面链接进入力扣做题哦,做题后看会更好哦。 https://leetcode.cn/problems/remove-element/description/https://leetcode.cn/problems/remove-element/description/ 给你一个数组 nums 和一…

【工具】批量SKU生成器

一个用户加我,要我帮忙写一个生成SKU的工具,他希望可以自定义生成的选项,可以批量生成。我到网上找了好久也没有找到好用的,就花了一下午写了这个生成sku的功能 工具支持批量生成SKU,支持自定义配置项,支持…