何为AIGC
AIGC,即人工智能生成内容,是指利用机器学习、深度学习等人工智能技术自动生成文本、图像、音频、视频等多种形式的内容创作过程。这一技术通过算法模型学习现有数据模式,创造出新颖且往往具有特定风格或功能的作品,正逐步变革内容创作与传媒行业。
AIGC与程序员的碰撞
AIGC(AIGenerated Content,人工智能生成内容)的发展正与程序员群体产生多维度的碰撞。首先,它改变了程序员的工作内容,从传统的编码任务扩展到设计和优化AI模型,参与创意内容的算法生成。其次,AIGC技术提升了开发效率,自动化代码生成、智能调试等工具让程序员能更聚焦于逻辑设计与问题解决。同时,这也带来了挑战,要求程序员掌握机器学习、大数据处理等新技能。此外,AIGC引发的伦理、版权及隐私问题,促使程序员在技术创新中纳入伦理考量,确保技术向善。总的来说,AIGC推动了程序员角色的进化,既作为技术实现者,也是伦理守护者,促进了技术与人文的融合。
为何需要掌握AIGC
程序员掌握AIGC(人工智能生成内容)技术,不仅能够拓宽技术视野,还能显著提升工作效率与创新能力,以下是几个关键理由:
首先,AIGC技术是数字化转型的重要驱动力。随着AI技术的发展,自动生成高质量的内容已成为现实,这包括文字、图像、音频乃至视频等多种形式。程序员掌握这一技能,能够为企业或个人项目注入新的活力,创造更具吸引力和个性化的内容产品,从而在竞争激烈的市场中脱颖而出。
其次,提升内容生产的效率与质量。传统内容创作依赖人力,耗时且成本较高。AIGC能够基于算法快速生成大量内容,满足互联网时代对内容的海量需求。程序员通过编程指导AI学习特定风格和规则,自动化生成内容,不仅速度快,还能保持风格一致性,大大减轻创意团队的压力。
最后,面对未来,AIGC技术将是人机协作的新常态。程序员作为数字世界的构建者,掌握这项技术意味着能在即将到来的智能内容时代中占据先机,不仅能够设计和优化AI创作工具,还能参与到制定相关标准与伦理规范的讨论中,引领技术向善发展。
综上所述,程序员掌握AIGC技术,不仅能紧跟技术前沿,提升个人竞争力,更能为企业和社会带来创新与效率的双重飞跃,是适应未来数字内容生态发展的必然要求。
以爬虫为例展现AIGC的魅力
现在我们需要从豆瓣电影网站拿到排行榜前五的电影信息(电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber))
传统编码
-
初始化环境
设置项目:创建项目文件夹,安装Node.js环境,初始化npm/yarn。
-
依赖安装库
引入爬虫库: 通过npm安装如
axios
或superagent
请求库获取网页,cheer
或cheerio
解析内容。 -
编写爬虫脚本
定义主函数:编写JavaScript文件,使用异步发送HTTP请求到目标网址,获取HTML。
-
解析内容
提取数据:利用DOM操作或正则表达式、CSS选择器等方法从HTML中提取所需数据。
-
调试
处理结果:将提取的数据存储至文件(如JSON、CSV)、数据库(MySQL/MongoDB)或直接打印输出。
代码如下:
javascript
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)
}
})
}
})
AIGC编程
首先,在网页获取需要的信息模块的html代码,交予AI(喂数据),然后对代码基于定义,最后返回需要的数据。
本次以使用通义千问为工具
如图提交代码并给予定义: 这是一个电影列表的html片段,需要获取需要的电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber)。请使用括号的单词作为属性名,以JSON对象数组的格式返回
二者相比,效果很明显,传统编程步骤繁琐、代码量多,而AIGC操作简单,不需要一句代码。
总结
AIGC的出现使得50%的编程流程不再需要了。如今的编程可将生成式的文字、图片、视频等任务交给AIGC,通过openai\通义千问等sdk提供接口,其余的基于冯诺依曼、非AIGC的任务由传统编程流程完成。传统编码与AI智慧的火花碰撞简直就是给到程序员一波红利。