AIGC学习分享(一):初识AIGC

2,447 阅读5分钟

一、什么是AIGC ?

AIGC —(Artificial Intelligence Generated Content)就是一种生成式的人工智能,通常是指一类人工智能模型,这些模型具有生成数据的能力,而不仅仅是对输入数据的分类、回归或者其他形式的处理。生成式人工智能模型可以学习输入数据的分布,然后基于这种学习生成新的数据样本。

在不同的应用领域,生成式人工智能模型被广泛应用,例如图像生成、文本生成、音乐生成等。这些模型不仅可以用于生成新的数据样本,还可以用于数据增强、模拟、创造性生成等任务,简单总结如下:

  1. 创造性应用: 生成式人工智能可以用于创造性应用,如图像、音乐、文本等内容的生成。
  2. 数据增强: 在许多领域,数据往往是稀缺的,而且很难收集到足够的数据来训练深度学习模型。
  3. 模拟环境: 生成式人工智能可以用于模拟各种环境,从而进行虚拟实验和测试。
  4. 随机性建模: 生成式模型可以很好地模拟数据的随机性和不确定性。

二、为什么要学习AIGC ?

看完上面的AIGC简介,简单的说 AIGC 就是一种人工智能生成内容的技术,它是通过大量复杂的算法、模型、和规则来学习。 在社会不断的发展,时代不断的进步下,传统生产内容由 PGC(专家生产内容)到UGC(用户生产内容),再到现在的AIGC(AI生产内容),AIGC近几年的出现使得传统生产内容得到了极大的提高。

对于程序员来说,学习AIGC:

  • 拓展技能 :握最新的技术和框架如深度学习框架。
  • 解决复杂问题: AIGC可以用于解决一些传统编程很难解决的复杂问题,如图像生成、自然语言生成、音乐生成等。掌握AIGC技术可以让程序员有能力应对这些挑战。
  • 创新应用: AIGC技术的应用领域非常广泛,包括艺术创作、自动化内容生成、智能对话系统等。学习AIGC可以激发程序员的创造力,开发出新颖的应用。
  • 提升竞争力: 随着人工智能技术的发展,掌握AIGC技术的程序员在职场上将更具竞争力,可以参与更多前沿项目,获得更多的机会。
  • 开发新工具: AIGC技术可以用于开发各种各样的工具和应用程序,如图像编辑工具、文本生成工具、自动化设计工具等。学习AIGC可以让程序员有能力开发出这些新工具,提高工作效率和质量。

总的来说,学习AIGC对程序员来说是一个有益的投资,可以帮助他们掌握新技术、解决复杂问题、创新应用,并提升自己的竞争力和职业发展。

三、如何简单使用AIGC?

👇下面,我们将通过简单的爬虫实例来向大家说明如何使用AIGC

PS:以下是以通义千问(阿里云推出的一款超大规模语言模型)大模型做示范

我们对AIGC的使用进行简单这四步封装 ,编写 prompt

  • 有一段 movie html 喂数据 (提出你要的问题)
  • 告诉LLM大模型,它是什么 (向大模型解释内容)
  • 标题,图片等属性特征.... (说明特征)
  • 返回 (提出需求)

简单如下图所示:

image.png

随即我们得到如下内容:

image.png 我们向大模型提出一些内容描述、简单的需求,我们就可以轻松的拿到我们想要的数据内容。 如果你只是想知道如何使用AIGC的话,读到此处结束就可以了。

我们可以接着看下面👇 试想一下,如果我们还是使用传统的编码方式去向一个网站爬取其数据时会发生什么呢???

请看以下传统代码实现方式:

// 创建爬虫应用
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)
      }
    })
  }
})

通过此代码,我们也能拿到一个如下的结果:

image.png

如此,我们可以看出,在获取页面数据时,传统代码是何其繁琐,而AIGC又是何其的简洁、快速。传统的爬虫coding对网页的爬取通常需要遵守一些开发规则,这样就导致我们很多的时间浪费在规定代码上,从而大大的降低了我们程序的产出,工程量不仅大,效率比使用AIGC要低很多。

相比之下,使用AIGC实现爬虫方法就显得简洁、易懂。我们不需要太多的技巧,只需要有一段详细,清晰的表达我们的需求的文字,然后交给LLM大模型 即可。

其实除了用自然语言实现这些需求外,我们可以使用openAI的api接口来实现这些操作,这个我们下次再议!!

总结

随着AI的快速爆发,AIGC的浪潮也开始席卷各行各业,在艺术创作、广告营销和策划、代码开发上,给这些从业人员带来了不小的机遇和挑战,其跨模态学习、个性化交互、广泛的应用,也会给我们社会注入不一样的生机,现在!!让我们把握时代的潮流,把握AIGC带来的机遇,请拥抱人工智能,拥抱AIGC!!!