传统编程与AIGC的融合
在AI大模型来临的时代,传统编程与AIGC的融合,是技术发展的必然趋势,它不仅让机器更加智能地参与到创作和决策过程中,也为人类开发者提供了强有力的辅助工具,共同推动着数字时代的创新与进步。传统编程与AIGC的融合,旨在通过AI的力量提升开发效率、创新应用功能,并非完全替代人类编程,而是形成互补。开发者可以将更多精力集中在创造性思维和解决复杂问题上,而让AI处理那些繁琐、重复的任务,共同推动软件开发进入一个更高效、智能化的新时代。所以在未来,会AIGC编程的程序员一定会替代掉只会传统编程的程序员,接下来,我们可以从以下几个维度来深入理解这一趋势.
为何要编程?
在座的各位有没有想过这样一个问题,我们为什么要编程?为什么要coding?也许有的人会说是,为了搞钱,那也确实,我们干程序员这一行,目的基本就是搞钱,因为高薪嘛。再深入地去思考这个问题,你就会发现,编程的本质,其实就是为了解决需求,解决问题,面向需求编程。接下来,我会以爬虫为需求的问题来给大家展示我们今天的主题,传统编程与AIGC的融合!
爬虫
首先我们要分析,爬取豆瓣电影是属于前端项目还是后端项目,很明显,这是一个关乎数据处理方面的问题,那就是后端项目;对此我们选择的技术栈就是node,node 是 js 后端运行环境。
经典传统编程
何为经典传统编程?经典传统编程是有一定的架构和默认优质操作的;重视建立清晰的系统架构设计,确保代码组织有序、易于理解和维护,采用经过验证的最佳实践和设计模式。经典传统编程在于标准,如同流水式的操作,传统编程过程中遵循明确的标准和规范,如同工厂生产线一样有条不紊地进行。
初始化后端项目:
npm init -y
得到项目描述文件package.json:
创建入口文件 main.js:
编写伪代码:
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析,拿到电影内容
// 返回内容
安装 request-promise 模块,发出http请求:
npm i request-promise
安装 cheerio 模块,可以在内存中,模拟DOM对象:
npm i cheerio
准备工作做好后,我们就可以来到需要爬取的页面上对需要爬取的数据进行分析,要怎么拿到我们想要的数据,这时候我们就要用到选择器来读取数据了;
如上图右侧方控制台里面的代码:
document + 选择器
// 选取页面中所有 class 名为 'article' 的元素内部的所有 <table> 元素
document.querySelectorAll('.article table')
// 从上一步选取的表格中选取第一个表格内的第一个 class 名为 'rating_nums' 的元素
document.querySelectorAll('.article table')[0].querySelector('.rating_nums')
// 获取上述选取的元素的innerText属性,即该元素内的文本内容
document.querySelectorAll('.article table')[0].querySelector('.rating_nums').innerText
利用刚才导入的cheerio包,就可以将html字符串加载到内存中.
传统编程代码:
const request = require('request-promise');// 引入需要的模块
const cheerio = require('cheerio');
// 入口文件
// 异步的
// 将 douban 网页的电影列表html,爬取,
// 返回json数组,每一电影项包含name,desc,score...
// 单点入口
async function main() {
// 代码 分布细化,程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析,拿到电影内容
// 返回内容
// await LLM
// 良好的编程规范
const url = "https://movie.douban.com/chart";
// http 请求 html 408 基于请求
// 攻击
const html = await request({
url: url
})
// console.log(html);
// 代码的可读性,可能要比功能更重要
// html分析 document + 选择器 cheerio 满足
// 编程素养 将html字符串加载到内存中,$ = Document
let $ = cheerio.load(html);
// console.log($('.article table').length);
// 严谨
const movieNodes = $('#content .article .item');
const movieList = [];
for (let i = 0; i < movieNodes.length; i++){
// 封装?
// 将一段电影的html解析,剥离出去,
// 这段功能相对独立 复用的
// main 比较复杂了,一个函数代码超过10行代码,一定可以再分函数
movieList.push(getMovieInfo(movieNodes[i]));
}
console.log(movieList);
}
const getMovieInfo = function (node) {
let movieInfo = {};
// 将tr加载进内存
let $$ = cheerio.load(node);
let title = $$('.pl2 a').text()
let pic = $$('.nbg img').attr('src')
// console.log(pic);
// console.log(title);
let info = $$('p.pl').text()
let rating_nums = $$('.rating_nums').text()
movieInfo.title = title;
movieInfo.pic = pic;
movieInfo.info = info;
movieInfo.rating_nums = rating_nums;
// console.log(movieInfo);
return movieInfo
}
main()
运行就能拿到结果:
在如上的经典传统编程代码中,有哪些部分是可以交给AI的呢?让我们一起再结合AIGC的力量,完成一种新的编程模式.
融合AIGC
融合AIGC后,我们就能以对话的方式,明确我们的prompt,把需求交给AI,AI大模型就会给我们生成你想要的数据内容,直接给我们省去了html parse的步骤;有1/3的流程性代码不需要我们去编写了.
安装openai包:c
npm i openai
代码:
const request = require('request-promise');// 引入需要的模块
const cheerio = require('cheerio');
// AIGC LLM 生成式内容
// tr 字符串要生成movie json 对象
// input prompt
const OpenAI = require('openai');
// 实例化 OpenAI 配置
const client = new OpenAI({
// 凭证 密钥 算力收费 token
apiKey: '*****',
baseURL: 'https://api.chatanywhere.tech/v1'
})
// 入口文件
// 异步的
// 将 douban 网页的电影列表html,爬取,
// 返回json数组,每一电影项包含name,desc,score...
// 单点入口
async function main() {
// 代码 分布细化,程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析,拿到电影内容
// 返回内容
// await LLM
// 良好的编程规范
const url = "https://movie.douban.com/chart";
// http 请求 html 408 基于请求
// 攻击
const html = await request({
url: url
})
// console.log(html);
// 代码的可读性,可能要比功能更重要
// html分析 document + 选择器 cheerio 满足
// 编程素养 将html字符串加载到内存中,$ = Document
let $ = cheerio.load(html);
// console.log($('.article table').length);
// 严谨
const movieNodes = $('#content .article .item');
let movie_html = ''
for(let i = 0; i < 2; i++) {
movie_html += cheerio.load(movieNodes[i]).html()
}
let prompt = `
${movie_html}
这是一段电影列表html,请获取电影名(name),封面链接(picture),
简介(info),评分(score),评论人数(commentsNumber),
请使用括号的单词作为属性名,以JSON的格式返回。
`
const chatCompletion = await client.chat.completions.create({
model : 'gpt-3.5-turbo',// 适合聊天的模型 很多种大模型
messages: [
{
role: 'user',
content: prompt
}
]
})
console.log(chatCompletion.choices);
}
main()
运行:
同样也能爬取到网页内容,而且更快更便捷,这就是传统编程和AIGC的融合!
小结
传统编程与AI的融合,标志着编程进入了一个新的时代。它不仅保留了编程艺术的精髓——逻辑思维与问题解决,还引入了智能的辅助力量,让开发者能够更加高效地创造价值。在这个融合的过程中,我们期待看到更多的创新,不仅是技术上的突破,更是对编程理念和工作方式的根本性变革。未来,每一个程序员都可能成为AI辅助下高效创造的“超级程序员”,共同推动技术边界,解锁数字世界的新潜能。