传统的编程与AI全栈编程思想的冲撞

485 阅读8分钟

传统的编程与AI全栈编程思想的冲撞

前言

随着chatgpt3.5的横空出世,使得AI让更多人熟知,并且它出现对数据分析和可视化领域产生了显著的冲击,主要体现在以下几个方面:

  1. 提升数据分析效率: ChartGPT 3.5 可以通过自然语言接口理解用户的需求,并将文本描述转换为相应的图表或图形。这种技术使得数据分析师和决策者能够更快速地理解数据、发现模式并做出决策,从而提升了数据分析的效率。
  2. 降低技术门槛: 传统的数据可视化工具通常需要一定的技术知识和编程能力,而 ChartGPT 3.5 可以通过自然语言接口实现对数据的可视化,使得更多的人能够轻松地利用数据进行分析和可视化,降低了技术门槛。
  3. 个性化和定制化: ChartGPT 3.5 的模型可以根据用户的需求和输入生成符合特定要求的图表和图形。这意味着用户可以根据自己的需求定制图表的样式、格式和内容,从而满足不同场景下的需求,提升了数据分析的灵活性和适用性。

总的来说,ChartGPT 3.5 的出现对数据分析和可视化领域带来了革命性的变革,提升了数据分析的效率和质量,降低了技术门槛,推动了数据驱动决策的普及和应用。

初识AI

随着chatgpt3.5的问世,使得更多的人开始接触AI,发现它带来的各种便利,同时也给他披上了一幅神秘的面纱,那跟着我一起了解它吧! 首先我们要先了解三个概念 AI、AGI、AIGC 让我们逐个解释这些概念,然后讨论它们之间的关系:

  1. AI(人工智能): 人工智能是一种广泛的技术范畴,涵盖了使计算机系统能够模仿人类智能行为的技术和方法。这包括了各种技术,从简单的规则基础系统到复杂的深度学习神经网络。AI 的目标是使计算机系统能够执行类似于人类的智能任务,如理解语言、感知环境、学习和决策。
  2. AGI(人工通用智能): 人工通用智能是对人工智能的一种更高级别的形式。AGI 涉及到创造一个能够像人类一样进行通用智能任务的系统,而不仅仅是在特定领域内执行特定任务的系统。这意味着 AGI 可以灵活地适应不同的任务和环境,并且能够学习新的知识和技能,就像人类一样。
  3. AIGC(人工通用智能的控制): AIGC 是指人工通用智能的控制问题,即如何有效地管理和控制一个拥有超人智能的系统。这涉及到解决如何确保这样的系统符合人类的价值观和道德规范,以及如何防止它可能对人类产生的潜在危险。

现在让我们谈谈它们之间的关系:

  • AI 是基础: AGI 和 AIGC 都是建立在人工智能的基础之上的。AI 技术的发展是实现 AGI 和 AIGC 的基础,因为它提供了构建更智能系统所需的工具和技术。
  • AGI 是目标: AGI 是对人工智能的一个更高级别的目标,即实现能够像人类一样进行通用智能任务的系统。虽然当前的人工智能系统在特定任务上表现出色,但它们还远未达到 AGI 的水平,即在各种不同的任务和环境中都能灵活地表现出智能。
  • AIGC 是挑战: 实现 AGI 不仅涉及技术上的挑战,还涉及到如何有效地控制和管理这样的系统,以确保它符合人类的价值观和道德规范。AIGC 的挑战包括如何设计有效的控制机制,以及如何防止系统产生潜在的危险和负面影响。

因此,AI、AGI 和 AIGC 之间是一种递进的关系,它们共同构成了人工智能领域的发展目标和挑战

重点谈论AIGC和爬虫联系

如果我们要写个爬虫,以前的我以为要会基础编程语言,然后需要学对应的技术,最后组合各种技术实现爬取,今天我接触AI全栈思想,编程基础和AIGC相结合实现爬虫,有些编程模块可以被替代,50%的编程流程不需要了。

我们对比一下,传统的爬虫和AI结合的爬虫:

传统的爬虫

//console.log('编程实现爬虫爬取豆瓣电影');
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)
    // 电影名(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)
      }
    })
  }
})

AI结合爬虫

<table width="100%" class="">
        <tbody><tr class="item">
            <td width="100" valign="top">
                    <a class="nbg" href="https://movie.douban.com/subject/35490167/" title="破墓">
                        <img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905896429.webp" width="75" alt="破墓" class="">
                    </a>
            </td>
            <td valign="top">
                <div class="pl2">

                    <a href="https://movie.douban.com/subject/35490167/" class="">
                        破墓
                        / <span style="font-size:13px;">The Unearthed Grave / Exhuma</span>
                    </a>

                    <p class="pl">2024-02-16(柏林电影节) / 2024-02-22(韩国) / 崔岷植 / 金高银 / 柳海真 / 李到晛 / 全镇基 / 洪瑞俊 / 李大卫 / 小山力也 / 金智安 / 金善映 / 韩国 / 张在现 / 134分钟 / 破墓 / 悬疑 / 惊悚 / 恐怖 / 张宰贤 Jae-hyun Jang / 韩语 / 日语 / 英语</p>

                        
                        <div class="star clearfix">
                                <span class="allstar35"></span>
                                <span class="rating_nums">6.7</span>
                                <span class="pl">(106063人评价)</span>
                        </div>
                </div>

            </td>
        </tr>
    </tbody></table>

从代码简洁和难易程度显而易见,AI结合的爬虫更简单更轻松,一下打开了新世界的大门。

那接下来我们来再来看一个通义千问这个大模型的例子: 封装, 编写 Prompt    AI代码

        - 有一段movie html 喂数据

        - 告诉LLM 它是什么

        - 标题, 图片.....

        - 返回

我们只要这四步就能得到自己想要的结果

<table width="100%" class="">
        <tbody><tr class="item">
            <td width="100" valign="top">
                
                    <a class="nbg" href=" " title="破墓">
                        < img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905896429.webp" width="75" alt="破墓" class="">
                    </a >
            </td>

            <td valign="top">     

                <div class="pl2">

                    <a href="https://movie.douban.com/subject/35490167/" class="">
                        破墓
                        / <span style="font-size:13px;">The Unearthed Grave / Exhuma</span>
                    </a >
                    <p class="pl">2024-02-16(柏林电影节) / 2024-02-22(韩国) / 崔岷植 / 金高银 / 柳海真 / 李到晛 / 全镇基 / 洪瑞俊 / 李大卫 / 小山力也 / 金智安 / 金善映 / 韩国 / 张在现 / 134分钟 / 破墓 / 悬疑 / 惊悚 / 恐怖 / 张宰贤 Jae-hyun Jang / 韩语 / 日语 / 英语</p >             
                        <div class="star clearfix">
                                <span class="allstar35"></span>
                                <span class="rating_nums">6.7</span>
                                <span class="pl">(105467人评价)</span>
                        </div>
                </div>
            </td>
        </tr>
    </tbody></table>这是一部电影的html片段,获取需要电影名(name),封面链接(picture),简介(info), 评分(score),评论人数(commentsNumber)。 请使用括号的单词作为属性名,以JSON对象的格式返回

1715490175885.png  

详细, 清晰的表达我们的需求,交给LLM(大型语言模型) 即可得到想要的结果。

我们之前都接触过AI大模型,但是都是只是使用,今天我接触过编程+AIGC相结合开发,拓宽我的眼界

总结

编程与人工智能(AI)结合的便利之处在于它们共同创造了无数可能性,可以带来许多好处:

  1. 自动化和优化:AI可以通过自动化执行各种任务,从而节省时间和资源。结合编程,可以创建智能系统来自动执行重复性任务,并优化流程以提高效率。
  2. 智能决策支持:AI技术可以分析大量数据并提供洞察,帮助人们做出更明智的决策。通过编程,可以将这些AI算法集成到决策支持系统中,使其更易于访问和使用。
  3. 个性化体验:结合编程和AI,可以创建个性化的体验,例如个性化推荐系统、智能客服和定制化产品。
  4. 预测和预防:AI可以通过分析数据来预测未来趋势,并帮助预防潜在的问题。通过编程,可以将这些预测模型集成到应用程序中,以提供实时建议和预警。
  5. 自然语言处理:结合编程和自然语言处理(NLP)技术,可以创建智能对话系统、语言翻译工具和文本分析工具,使计算机能够理解和处理人类语言。
  6. 机器学习和深度学习:编程是实现机器学习和深度学习模型的关键。通过编程,可以构建、训练和部署各种AI模型,从而实现各种任务,如图像识别、语音识别和自然语言处理。
  7. 自动化测试和优化:结合编程和AI技术,可以创建自动化测试工具和优化算法,帮助开发人员快速发现和修复软件中的问题,并提高软件的性能和稳定性。

总的来说,编程和人工智能的结合为各行各业带来了巨大的便利,使我们能够创造出更智能、更高效的系统和应用程序,从而提升生产力和创新能力。