引言
在这个科技日新月异的时代,我们正站在一个前所未有的转折点上,目睹着一场静悄悄却影响深远的变革——从传统的创作模式向人工智能生成内容(AIGC)时代的迈进。这场变革,不仅仅是一场技术的革新,更是对我们固有思维方式和创造力边界的重新定义。随着算法的日益精进和数据的海量积累,机器开始展现出令人惊叹的内容创作能力,从文字、图像到音乐、视频,AIGC正在逐步渗透到社会的每一个角落。
本文旨在探讨这一转型变化过程中,我们作为创造者、消费者乃至整个社会,该如何转变思维、调整心态、升级技能,以更加开放和前瞻性的视角,携手人工智能,共同迈入这个充满无限可能的新纪元。我们将一起探索,在AIGC的浪潮中,如何在这一新兴领域内发掘潜力、引领创新。让我们启程,向AIGC时代勇敢地迈出第一步。
什么是AIGC?
AIGC,全称为Artificial Intelligence Generated Content,即人工智能生成内容,是一种利用先进的AI技术自动生成文本、图像、音频、视频等多种类型内容的方法。它代表了内容创造领域的一个重大进步,与传统的PGC(专业生产内容)和UGC(用户生产内容)相比,AIGC的核心在于其内容生产的主体是人工智能系统。
AIGC背后依托的是自然语言处理、机器学习、深度学习等技术,特别是诸如生成式对抗网络(GANs)、Transformer模型、扩散模型等前沿技术的融合与发展,使得AI能够基于大量数据学习并创造出新颖、多样化的内容。这些内容广泛应用于新闻、广告、娱乐、教育、设计等多个行业,不仅提高了内容生产的效率,还拓展了创意的边界。
简单来说,AIGC通过模拟人类的创造性思维过程,自动创作出具有实用或审美价值的作品,正逐步成为推动社会数字化转型、改变内容生态格局的关键力量。
传统编程 VS AIGC
大致的了解了一下AIGC之后,肯定会有大部分人还是不能清晰地感受到,相对于传统编程之下,AIGC浪潮的汹涌。接下来,我将以一个简单的爬虫开发问题为例,让大家切身感受一下AIGC浪潮的冲击:
让我们先畅想一个场景,你需要开发一个爬虫,目标是从豆瓣电影排行榜的网页中爬取电影排行榜的相关信息(例如:电影名(name)、封面链接(picture)、简介(info)等等)。
传统编程方式开发爬虫
- 那么首先你需要向浏览器发送一个http请求,从而找到该网页;
- 你将获取到一大段HTML的字符串,然后需要消耗大时间去分析该段HTML的架构;
-
之后,你则需要对该HTML字符串应用正则表达式,聚焦.article.table列表;
(正则表达式是一种强大的文本处理工具,它允许用户通过一种特殊的语法来描述字符串的模式。这种模式可以非常简单,比如匹配一个具体的单词,也可以非常复杂,用于匹配复杂的文本结构,如电子邮件地址、电话号码格式、HTML标签等。 对字符串应用正则表达式,常见的操作包括:
匹配: 检查一个字符串是否符合正则表达式定义的模式。例如,可以使用正则表达式来验证一个输入是否为有效的邮箱地址。
搜索: 在一个长字符串中查找符合正则表达式描述的所有子串位置。这有助于从大量文本中快速定位特定模式的信息。
替换: 找到字符串中符合正则表达式的部分,并将其替换为另一段文本。这对于批量修改文本内容特别有用。
提取: 从字符串中抽取符合特定模式的部分内容。例如,从一个网页源代码中提取所有的链接地址。
正则表达式通过一系列的字符和特殊符号(称为元字符)来构建匹配模式,比如
.代表任意单个字符,*表示前面的元素可以重复零次或多次,\d匹配任何数字,[]定义字符集,()用于分组和捕获等等。)
import { createCrawl } from 'x-crawl' // 创建爬虫
// 创建爬虫应用
const crawlApp = createCrawl() //
// crawlPage 用于爬取页面
crawlApp.crawlPage('https://movie.douban.com/chart').then(async (res) => {
const { page, browser } = res.data
// 等待元素出现在页面中
await page.waitForSelector('#wrapper #content .article')
const filmHandleList = await page.$$('#wrapper #content .article table')
const pendingTask = []
for (const filmHandle of filmHandleList) {
// 封面链接(picture)
const picturePending = filmHandle.$eval('td img', (img) => img.src)
// console.log(picturePending, '////')
// 电影名(name)
const namePending = filmHandle.$eval(
'td:nth-child(2) a',
(el) => el.innerText.split(' / ')[0]
)
// 简介(info)
const infoPending = filmHandle.$eval(
'td:nth-child(2) .pl',
(el) => el.textContent
)
// 评分(score)
// const scorePending = filmHandle.$eval(
// 'td:nth-child(2) .star .rating_nums',
// (el) => el.textContent
// )
// 评论人数(commentsNumber)
const commentsNumberPending = filmHandle.$eval(
'td:nth-child(2) .star .pl',
(el) => el.textContent?.replace(/\(|\)/g, '')
)
pendingTask.push([
namePending,
picturePending,
infoPending,
// scorePending,
commentsNumberPending
])
}
const filmInfoResult = []
let i = 0
for (const item of pendingTask) {
Promise.all(item).then((res) => {
// filmInfo 是一个电影信息对象,顺序在前面就决定好了
const filmInfo = [
'name',
'picture',
'info',
// 'score',
'commentsNumber'
].reduce((pre, key, i) => {
pre[key] = res[i]
return pre
}, {})
// 保存每个电影信息
filmInfoResult.push(filmInfo)
// 最后一次的处理
if (pendingTask.length === ++i) {
browser.close()
// 整理,根据数量决定是多还是单
const filmResult = {
element: filmInfoResult,
type: filmInfoResult.length > 1 ? 'multiple' : 'single'
}
console.log(filmResult)
}
})
}
})
- 最后编写代码将爬取的数据存储到JSON数组中。
可以清楚的看出,这一系列操作中的代码量之大!!!
AIGC方式爬虫
我们只需要通过自然语言指令告知AI系统想要爬取的数据类型和来源,AI就会自行分析并理解需求。一样的,我们也是需要爬取电影排行榜的相关信息,操作如下:
ps:这里我们用通义千问(阿里云推出的一款超大规模语言模型)为例。
-
拿到HTML的字符串响应;
-
将其传给AI,并告诉AI这是一部电影的html片段 ;
-
告诉AI你的要求,需要获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber)。请使用括号的单词作为属性名,以JSON对象的格式返回;
- 最后一键上传即可。
对比总结
传统编程方式开发爬虫需要从分析每个网站的HTML结构,到编写复杂的正则表达式,再到处理各种可能出现的异常错误,最后才能输出成自己想要的数据模型。这不仅耗时,还要求编程师具备扎实的编程功底和网页解析知识。
而AIGC只需要详细、清晰的表达我们的需求,其他的事都交给LLM大模型编程即可,这明显降低了编程的门槛,并且提高了开发效率,特别是对于非专业开发者而言,能够通过简单的指令快速实现功能。
AIGC带来的变革
通过这个例子,我们可以清晰地感受到AIGC浪潮带来的冲击。它降低了编程门槛,使得非程序员也能快速构建复杂应用;它提升了开发效率,让从前需要数天的任务缩短至几小时甚至几分钟;更重要的是,它促进了创新,让开发者有更多精力专注于业务逻辑和数据分析,而非琐碎的技术实现细节。
尽管如此,AIGC也并非万能钥匙,它依赖于高质量的训练数据和算法,对于一些高度定制化、复杂交互的场景,人工干预和专业知识仍不可或缺,毕竟只有50%的编程模块可以被AIGC代替,基于冯诺依曼原理,非AIGC任务,也只能交给传统编程流程来做。但不可否认,AIGC正逐步改变着软件开发的格局,为未来技术发展开辟了新的可能性!