likes
comments
collection
share

从编程到AIGC:探索人工智能生成的崛起

作者站长头像
站长
· 阅读数 46

前言:

编程是指编写计算机程序的过程,它从最早的机器语言和汇编语言发展到高级编程语言如C、C++、Java、Python等,而现如今人工智能正逐渐可以代替普通编程化,人工智能是模拟人类智能的机器系统,它能够学习、推理、识别图像、语音识别等,深度学习模型如卷积神经网络(CNN)和循环神经网络(RNN)等为图像处理、自然语言处理等任务带来了突破性的进展, 最近几年,人工智能和图形计算开始相互融合,形成了AIGC的概念, AIGC利用图形计算的并行计算能力加速人工智能算法的训练和推理,推动了人工智能在各个领域的应用。

正文

这里等下演示从Node 爬虫来实现信息的获取

在这之前需要干什么?或者说需要哪些操作?直接罗列出来:

  • 编程
    • 有一个要解决的问题?
    • 扎实的408 基础 计算机网络
    • 分布细化任务,伪代码,编写代码
    • 选择语言,编译器(二进制),CPU(运行)
    • 函数超过10行,模块化划分为几个子函数,有利于代码可读性和调试

这是在编程领域中,我们要明白问题是什么以及解决问题的前提和操作该如何进行。其实代码的编写也无非是细化代码执行的过程和结果。

这是传统意义上的编写,而我需要更正的是让位给AIGC来执行

  • 让位给AIGC
    • 基于LLM 大模型
    • 哪些传统编程可以被LLM取代 prompt 编程
    • 给LLM 下指示

让我们在LLM大模型下来进行创建,根据prompt模式汇编,通俗讲,无非就是详细的给LLM下一些指令,你发话它干活。

实现一个爬虫功能:

  • 爬虫 Craw1
    • 它有我拿 浏览器只是上网的代理proxy 先发送一个HTTP请求 url movie.douban.com/chart 响应 html 字符串
    • 解析html字符串,如果可以像css选择器一样,拿到了电影列表
    • 最后将所有的电影对象组成数组,以json数组的方式返回, Done
let request = require('request-promise') // 需要安装
let cheerio = require('cheerio') // 需要安装
let fs = require('fs')
const util = require('util')

  • request-promise:用于异步发起 HTTP 请求的模块。
  • cheerio:用于在服务器端解析 HTML 的快速、灵活和精简的 jQuery 实现。
  • fs:Node.js 内置模块,用于与文件系统进行交互。
  • util:Node.js 内置模块,提供实用工具函数。
let movies = []
let basicUrl = 'https://movie.douban.com/top250'

  • movies:一个空数组,用于存储电影信息。
  • basicUrl:豆瓣电影 Top250 列表的基本 URL。
let once = function (cb) {
    let active = false
    if (!active) {
        cb()
        active = true
    }
}
function log(item) {
    once(() => {
        console.log(item)
    })
}

  • once:确保回调函数仅执行一次的函数。
  • log:用于记录消息的函数,确保消息只记录一次。
function getMovieInfo(node) { 
    let $ = cheerio.load(node)
    let titles = $('.info .hd span')
    titles = ([]).map.call(titles, t => {
        return $(t).text()
    })
    let bd = $('.info .bd')
    let info = bd.find('p').text()
    let score = bd.find('.star .rating_num').text()
    return { titles, info, score }
}

  • getMovieInfo:使用 Cheerio 从 HTML 节点中提取电影标题、信息和评分的函数。
async function getPage(url, num) {
    let html = await request({
        url
    })
    console.log('连接成功!', `正在爬取第${num + 1}页数据`)
    let $ = cheerio.load(html)
    let movieNodes = $('#content .article .grid_view').find('.item')
    let movieList = ([]).map.call(movieNodes, node => {
        return getMovieInfo(node)
    })
    return movieList
}

  • getPage:使用 request-promise 异步获取给定 URL 的数据,使用 Cheerio 提取 HTML 中的电影节点,并调用 getMovieInfo 获取电影信息。
async function main() {
    let count = 25
    let list = []
    for (let i = 0; i < count; i++) {
        let url = basicUrl + `?start=${25 * i}`
        list.push(... await getPage(url, i))
    }
    console.log(list.length)
    fs.writeFile('./output.json', JSON.stringify(list), 'utf-8', () => {
        console.log('生成json文件成功!')
    })
}
main()

  • main:获取豆瓣电影 Top250 列表的多个页面数据,将其存储在一个数组中,然后将数据写入名为 output.json 的 JSON 文件。

依据各个功能的实现来执行操作。

  • node 爬虫 后端功能
    • npm init -y 初始化为后端项目 package.json 项目描述文件
    • npm i 安装第三方包
    • require
    • main.js 入口文件 安排流程

从编程到AIGC:探索人工智能生成的崛起

直接读取数据即可。

附上完整代码给大家:

let request = require('request-promise') // 需要安装
let cheerio = require('cheerio') // 需要安装
let fs = require('fs')
const util = require('util')
let movies = []
let basicUrl = 'https://movie.douban.com/top250'
let once = function (cb) {
    let active = false
    if (!active) {
        cb()
        active = true
    }
}
function log(item) {
    once(() => {
        console.log(item)
    })
}
function getMovieInfo(node) { 
    let $ = cheerio.load(node)
    let titles = $('.info .hd span')
    titles = ([]).map.call(titles, t => {
        return $(t).text()
    })
    let bd = $('.info .bd')
    let info = bd.find('p').text()
    let score = bd.find('.star .rating_num').text()
    return { titles, info, score }
}
async function getPage(url, num) {
    let html = await request({
        url
    })
    console.log('连接成功!', `正在爬取第${num + 1}页数据`)
    let $ = cheerio.load(html)
    let movieNodes = $('#content .article .grid_view').find('.item')
    let movieList = ([]).map.call(movieNodes, node => {
        return getMovieInfo(node)
    })
    return movieList
}
async function main() {
    let count = 25
    let list = []
    for (let i = 0; i < count; i++) {
        let url = basicUrl + `?start=${25 * i}`
        list.push(... await getPage(url, i))
    }
    console.log(list.length)
    fs.writeFile('./output.json', JSON.stringify(list), 'utf-8', () => {
        console.log('生成json文件成功!')
    })
}
main()

实例操作

根据页面中的一个标签内容来获取信息:

选中 item 中的所有选项,如 <tr class="item"> <td width="100" valign="top">

在这个网站中查看 电影

输入对应的要求以及所表示的标签:

</tr>这是电影HTML,获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber),请使用括号的单词作为属性名,以JSON格式返回

看看效果:

json
{
  "name": "对你的想象",
  "picture": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.webp",
  "info": "2024-03-16(西南偏南电影节) / 2024-05-02(美国网络) / 安妮·海瑟薇 / 尼古拉斯·加利齐纳 / 艾拉·鲁宾 / 安妮·玛莫罗 / 瑞德·斯科特 / 帕芮·马费尔德 / 乔丹·亚伦·霍尔 / 玛蒂尔达·吉安诺普洛斯 / Meg Millidge / 奇克·曼诺哈 / Ray Cham / Jaiden...",
  "score": "5.9",
  "commentsNumber": "19123人"
}

所以信息提取成功!

总结:

后端爬虫基于大模型LLM,使用人工智能来进行普通的代码去除是不是更便捷呢

转载自:https://juejin.cn/post/7368294440546713638
评论
请登录