前言
在当今快速发展的科技时代,编程作为构建数字世界的基石,其形态和方法论正经历着前所未有的变革。传统编程,以其严谨的逻辑结构、标准化的操作流程,为软件开发奠定了坚实的基础。而人工智能生成内容(AIGC)的兴起,则为这一领域带来了新的活力与可能,促使我们重新思考编程的本质与未来。
本文将以(豆瓣电影排行榜)为示例,探讨传统编程与AIGC的融合路径,分析两者如何相互补充,以提升开发效率并拓宽技术边界。
经典复现:传统编程实现爬虫
传统编程,它强调架构设计的合理性、代码质量以及标准化操作流程。npm(Node Package Manager)作为Node.js的包管理器,极大地简化了依赖管理,使得开发者能够轻松安装如request-promise、cheerio等第三方库,分别用于发送HTTP请求和解析HTML文档,从而实现爬虫功能,比如爬取豆瓣电影数据。现在先让我们在终端使用Node.js的指令npm i request-promise npm i cheerio安装第三方库。
再思考如果使用传统编程应该怎么实现爬虫?
1.根据url 发送一个http请求 拿到html
2.根据html 分析, 拿到电影内容
3.返回内容
传统编程代码如下:
const request = require('request-promise');
const cheerio = require('cheerio');
async function main() {
// 根据url 发送一个http请求 拿到html
// 根据html 分析, 拿到电影内容
// 返回内容
const URL = "https://movie.douban.com/chart";
const html = await request({
url: URL
})
console.log(html);
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()
}
console.log(movie_html);
const movieList = [];
for (let i = 0; i < movieNodes.length; i++) {
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')
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
return movieInfo
}
main()
部分结果如下:
融合之路:传统与智能的交响曲
实现传统编程与AIGC的有效融合,首先需要明确哪些部分最适合交由AI处理。一般而言,重复性高、模式化的任务,如数据清洗、模板代码生成、基础测试用例编写等,最适宜自动化。AI的优势在于能够快速学习和应用模式,将那些标准化、流程化的任务逐步移交给AI工具,但其创造力和对复杂逻辑的理解尚无法完全替代人类。接着咱们再来看看结合AIGC,让AI参与到编程当中去。同样咱们先在终端使用Node.js的指令npm i openai安装第三方库。
结合AIGC代码如下:
const request = require('request-promise');
const cheerio = require('cheerio');
const OpenAI = require('openai');
const client = new OpenAI({
apiKey: '*****', // 输入自己的api-key
baseURL: 'https://api.chatanywhere.tech/v1'
})
async function main() {
// 根据url 发送一个http请求 拿到html
// 根据html 分析, 拿到电影内容
// 返回内容
const URL = "https://movie.douban.com/chart";
const html = await request({
url: URL
})
console.log(html);
// html分析 document + 选择器 cheerio 满足
// 将html字符串加载到内存中,$ =Document
let $ = cheerio.load(html);
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);
const getMovieInfo = function(node) {
let movieInfo = {};
let $$ = cheerio.load(node);
let title = $$('.pl2 a').text()
let pic = $$('.nbg img').attr('src')
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
return movieInfo
}
main()
部分结果如图,可以看出结合AI,能将那些标准化、流程化的任务逐步移交给AI工具,减少自身的工作量。
结语
编程的根本在于解决实际需求,无论是构建复杂的后端系统,还是开发用户友好的前端界面,其目标始终是提升效率、优化体验。然而,传统编程方式往往伴随着繁琐的重复劳动,如大量模板代码的编写、数据处理逻辑的实现等,这些不仅消耗开发者的时间,也限制了创新思维的空间。此外,随着项目规模的扩大,维护成本与复杂度呈指数级增长,对于大型企业而言,动辄数万程序员的团队协作,无疑是对项目管理和代码质量控制的巨大考验。
传统编程与AIGC(人工智能生成内容)的融合带来了多方面的益处,深刻地影响着软件开发的效率、创新性和可持续性。提高开发效率,AIGC能够自动完成一些重复性高、模式化的工作,如代码生成、文档编写、基本测试用例设计等,这显著减少了开发者在这些任务上的时间投入,使他们能够集中精力解决更复杂的问题和创新功能的开发,从而整体加速软件开发周期。