在当今科技与艺术日益交融的时代,编程领域正经历一场前所未有的革命——传统编程技艺与人工智能生成内容(AIGC)的无缝对接。这场变革不仅重新定义了编程的边界,更是激发了无限的创意潜力。本文将以一个生动实例,即爬取并解析豆瓣电影排行榜数据的项目,深入剖析传统编程与AIGC技术如何协同作战,共同开启编程新境界。我们将通过两个关键环节,直观展现两者差异,揭示AIGC如何在保留传统精髓的同时,提升效率并激发创新。
传统编程:根基深厚,步步为营
传统编程,以其严谨的逻辑构建与规范化的流程,为软件工程打下坚实基础。以下是一个典型示例,展示如何通过Node.js环境,搭配request-promise和cheerio库,进行网页数据的爬取与解析:
传统的完整代码展示
const request = require('request-promise');
const cheerio = require('cheerio');
//单点入口
async function main() {
// 伪代码:
// 根据url发送一个http请求 拿到html
// 根据html分析,拿到电影内容
// 返回内容
const URL = "https://movie.douban.com/chart";
// http请求html 基于请求
const html = await request({
url: URL
})
// html分析 document + 选择器 cheerio 满足
// 将html字符串加载到内存中,返回的$ = document
let $ = cheerio.load(html);
const movieNodes = $('#content .article .item');
const movieList = [];
for (let i = 0; i < movieNodes.length; i++) {
// 这段功能相对独立 复用的 将一段电影的html解析封装成getMovieInfo函数
movieList.push(getMovieInfo(movieNodes[i]));
}
console.log(movieList);
}
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();
AIGC:智能介入,代码生成的跃迁
然而,面对日益复杂的网页结构与海量数据,传统方法的局限性逐渐显现。此时,AIGC技术的引入如同一股清流,以其自动生成逻辑与理解能力,大大简化了重复劳动。以下是如何借助OpenAI的API,利用预先训练的模型来智能解析电影详情:
利用AI的代码展示
const request = require('request-promise');
const cheerio = require('cheerio');
const OpenAI = require('openai');
const client = new OpenAI({n
apiKey: '****',
baseURL: 'https://api.chatanywhere.tech/v1'
})
//单点入口
async function main() {
// 伪代码:
// 根据url发送一个http请求 拿到html
// 根据html分析,拿到电影内容
// 返回内容
const URL = "https://movie.douban.com/chart";
// http请求html 基于请求
const html = await request({
url: URL
})
// 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();
在解析具体电影信息这一步,我们引入了AIGC技术。通过OpenAI的API,我们构造了一个请求,将HTML片段作为输入,引导AI模型生成针对电影列表的解析代码。模型理解了HTML结构,自动提取电影名、封面链接、简介、评分及评论人数等关键信息,输出为JSON数组。这一过程不仅减少了手动编写解析逻辑的时间,还提高了准确度和可维护性。
AIGC带来的影响与未来展望
在上述案例中,AIGC技术直接承担了约1/3原本属于程序员的工作量,显著提升了开发效率。它让程序员得以从繁琐的重复工作中抽身,专注于更高级别的逻辑设计和创新。这种结合不仅加速了项目的迭代周期,也为编程语言的边界探索提供了新的可能性。
展望未来,随着AIGC技术的成熟和普及,编程将更加智能化。开发者将更多地扮演指导者的角色,定义问题,而让AI辅助实现细节。这不仅意味着更高的生产率,也可能带来编程教育、团队合作模式乃至整个软件开发生态的根本变化。然而,如何平衡自动化与人类创造力、确保代码质量及安全性,将是持续探索的课题。
总之,传统编程与AIGC的融合,正如一股不可逆转的潮流,正重塑着编程世界的面貌,让技术的未来充满无限可能。在这个过程中,保持开放的心态,不断学习并拥抱变化,是每一位开发者应对时代挑战的关键。