跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.jsAI大前端

LLM 与 AIGC 融合:编程范式的转变与实践案例

探讨了大型语言模型与 AIGC 技术在编程领域的融合应用。通过对比传统 Web 爬虫开发与基于 LLM 的数据解析方案,展示了 AI 如何简化代码编写与数据处理流程。文章详细分析了两种方式的优缺点,提供了 JavaScript 爬虫代码示例及 Prompt 设计策略,并指出了准确性验证、成本控制及隐私安全等关键挑战。结论指出,未来编程将是人类技能与 AI 能力的深度结合,掌握 Prompt 工程与人机协作模式是提升开发效率的关键。

灵魂摆渡发布于 2025/2/6更新于 2026/10/2393 浏览
LLM 与 AIGC 融合:编程范式的转变与实践案例

LLM 与 AIGC 融合:编程范式的转变与实践案例

引言

在当今快速发展的技术世界中,大型语言模型(LLM)和人工智能生成内容(AIGC)正在引领一场深刻的编程革命。传统的编程方法虽然功能强大且逻辑严密,但往往需要开发者投入大量的时间和精力来编写、调试和维护代码。特别是在处理非结构化数据或快速原型开发时,传统流程显得尤为繁琐。

随着 LLM 技术的成熟,这一切正在发生翻天覆地的变化。开发者不再仅仅依赖手写的正则表达式或复杂的 DOM 解析器,而是可以通过自然语言指令让 AI 辅助完成代码生成、逻辑判断甚至数据处理任务。本文将探讨从传统编程到 AI 增强编程的转变过程,并通过具体的爬虫案例展示这一范式转移的实际应用。

AIGC 简述

人工智能生成内容(AIGC)是指使用人工智能技术,特别是大型语言模型(LLM),来自动生成或协助生成各种内容的过程。这包括但不限于文本、图像、音乐和视频。AIGC 的核心在于其能够理解和处理自然语言,使其能够接收简单的指令并产生复杂的输出。

AIGC 与 LLM 的结合为内容创作带来了新的可能性。LLM 的强大语言理解能力使得它能够准确地把握用户的意图,并生成符合要求的内容。这种结合不仅提高了内容质量,还扩展了创作的边界。在软件开发领域,这意味着开发者可以将更多精力集中在架构设计和业务逻辑上,而将重复性高、模式固定的编码工作交给 AI 助手。

传统编程实践:Web 爬虫示例

为了对比说明,我们首先回顾一下使用传统方式编写爬虫的过程。以编写爬虫来爬取豆瓣电影排行榜为例,通常需要使用如 x-crawl 这样的库来创建爬虫应用,并通过 crawlPage 函数来爬取目标页面的数据。

核心步骤

  1. 初始化环境:创建爬虫应用实例。
  2. 页面加载:等待页面元素完全加载,确保动态内容渲染完毕。
  3. DOM 选择:选择特定的 DOM 元素,定位目标数据区域。
  4. 数据提取:遍历列表项,提取封面链接、电影名、简介、评分等字段。
  5. 异步处理:处理多个请求的并发执行,合并结果。

代码实现

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 ( filmHandle  filmHandleList) {
    
     picturePending = filmHandle.$eval(,  img.)
    
    
     namePending = filmHandle.$eval(
      ,
       el..()[]
    )
    
    
     infoPending = filmHandle.$eval(
      ,
       el.
    )
    
    
     commentsNumberPending = filmHandle.$eval(
      ,
       el.?.(, )
    )

    pendingTask.([
      namePending,
      picturePending,
      infoPending,
      commentsNumberPending
    ])
  }

   filmInfoResult = []
   i = 
   ( item  pendingTask) {
    .(item).( {
      
       filmInfo = [
        ,
        ,
        ,
        
      ].( {
        pre[key] = res[idx]
         pre
      }, {})

      
      filmInfoResult.(filmInfo)

      
       (pendingTask. === ++i) {
        browser.()

        
         filmResult = {
          : filmInfoResult,
          : filmInfoResult. >  ?  : 
        }
        .(filmResult)
      }
    })
  }
})
const
of
// 封面链接 (picture)
const
'td img'
(img) =>
src
// 电影名 (name)
const
'td:nth-child(2) a'
(el) =>
innerText
split
' / '
0
// 简介 (info)
const
'td:nth-child(2) .pl'
(el) =>
textContent
// 评论人数 (commentsNumber)
const
'td:nth-child(2) .star .pl'
(el) =>
textContent
replace
/\(|\)/g
''
push
const
let
0
for
const
of
Promise
all
then
(res) =>
// filmInfo 是一个电影信息对象,顺序在前面就决定好了
const
'name'
'picture'
'info'
'commentsNumber'
reduce
(pre, key, idx) =>
return
// 保存每个电影信息
push
// 最后一次的处理
if
length
close
// 整理,根据数量决定是多还是单
const
element
type
length
1
'multiple'
'single'
console
log

运行结果

运行上述爬虫后,可获取如下结构化的 JSON 数据:

{
  "element": [
    {
      "name": "破墓",
      "picture": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905896429.webp",
      "info": "2024-02-16(柏林电影节) / 2024-02-22(韩国) / 崔岷植 / ...",
      "commentsNumber": "106773 人评价"
    },
    {
      "name": "对你的想象",
      "picture": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.webp",
      "info": "2024-03-16(西南偏南电影节) / ...",
      "commentsNumber": "18034 人评价"
    }
  ],
  "type": "multiple"
}

小结

传统编程需要开发者具备扎实的编程素养,包括理解 HTTP 协议、处理可能出现的错误代码(如 408 请求超时)、编写和调试代码。这个过程虽然能够锻炼开发者的逻辑思维,但也不可避免地带来了时间和精力上的消耗。此外,当网页结构发生变化时,XPath 或 CSS 选择器往往需要重新调整,维护成本较高。

LLM 编程:智能化解析

现在,我们可以利用 LLM 来简化这一过程。LLM 能够理解开发者的需求,并生成相应的代码或直接处理数据。以通义千问等主流大模型为例,我们向 LLM 发送电影相关的网页源代码片段,并提供清晰的指令。

输入数据

假设我们提供以下 HTML 片段:

<tbody><tr class="item">
    <td width="100" valign="top">
        <a class="nbg" href="...">
            <img src="..." alt="破墓" class="">
        </a>
    </td>
    <td valign="top">
        <div class="pl2">
            <a href="...">破墓</a>
            <p class="pl">2024-02-16(柏林电影节) / ...</p>
            <div class="star clearfix">
                <span class="rating_nums">6.7</span>
                <span class="pl">(106772 人评价)</span>
            </div>
        </div>
    </td>
</tr></tbody>

Prompt 设计

并向 LLM 提供 Prompt:

这是一部电影的 html 片段,获取需要的电影的名字 (name),封面链接 (picture),简介 (desc),评分 (score),评论人数 (commentsNumber)。请使用括号的单纯作属性名,以 JSON 对象的格式返回。

输出结果

LLM 则能够自动生成 JSON 数组,包含电影的名称、图片、描述和评分等信息。这种方法不仅提高了效率,而且还降低了出错的可能性。AI 能够自动识别标签结构,无需手动编写复杂的 XPath 表达式。

小结

LLM 的优势在于其对自然语言的理解能力和生成式任务的执行能力。它可以处理文字、图片、视频等多种形式的内容,使得编程变得更加直观和灵活。此外,LLM 还能够与各种 API 进行集成,进一步扩展其功能。通过这种方式,开发者可以将注意力从语法细节转移到业务逻辑本身。

技术对比分析

维度传统编程LLM 辅助编程
上手难度需掌握特定库及 API需掌握 Prompt 工程技巧
灵活性固定逻辑,修改需改代码自然语言调整,响应快
准确性高,可控性强依赖模型能力,偶有幻觉
成本人力时间成本高Token 消耗 + 人力审核
维护性结构变动需重构提示词微调即可适应

挑战与最佳实践

尽管 LLM 带来了便利,但在实际生产环境中仍面临一些挑战。

1. 准确性验证

AI 生成的代码或数据可能存在幻觉。因此,必须建立自动化测试机制,对 LLM 输出的数据进行校验。例如,检查 JSON 格式是否合法,字段是否为空,数值是否在合理范围内。

2. 成本控制

频繁调用大模型 API 会产生费用。对于大规模数据处理任务,建议采用混合模式:先用传统规则过滤大部分数据,再对复杂部分使用 LLM 处理。

3. 隐私与安全

不要将敏感数据直接发送给公共 LLM 服务。如果涉及企业内部数据,应部署私有化模型或使用支持数据脱敏的企业级 API。

4. Prompt 工程优化

编写有效的 Prompt 是关键。建议遵循以下原则:

  • 角色设定:明确告诉 AI 它的身份(如'你是一个资深数据分析师')。
  • 上下文清晰:提供足够的背景信息和示例 Few-Shot。
  • 约束明确:指定输出格式(JSON、Markdown 等)和长度限制。

总结

这篇文章尝试捕捉从传统编程到 AI 思维的转变,并展望了 LLM 在未来编程中的作用。未来的编程将是编程技能与 AIGC 素养的结合。开发者需要学会如何编写有效的 Prompt,这就像是给 LLM 下达指令,让它成为一个编程助手。这种全栈的能力,将使得开发者能够更快地实现想法,并创造出更加丰富和多样的数字产品。

随着 LLM 技术的不断进步,我们正迎来一个编程与 AI 思维相结合的新时代。在这个时代中,LLM 不仅仅是一个工具,更是一个合作伙伴,它将帮助开发者释放创造力,推动数字世界的发展。掌握人机协作的新范式,将成为每一位现代软件工程师的核心竞争力。

目录

  1. LLM 与 AIGC 融合:编程范式的转变与实践案例
  2. 引言
  3. AIGC 简述
  4. 传统编程实践:Web 爬虫示例
  5. 核心步骤
  6. 代码实现
  7. 运行结果
  8. 小结
  9. LLM 编程:智能化解析
  10. 输入数据
  11. Prompt 设计
  12. 输出结果
  13. 小结
  14. 技术对比分析
  15. 挑战与最佳实践
  16. 1. 准确性验证
  17. 2. 成本控制
  18. 3. 隐私与安全
  19. 4. Prompt 工程优化
  20. 总结

更多推荐文章

查看全部
  • 二分查找算法初阶:LeetCode 实战解析
  • C++ STL 容器:基于红黑树模拟实现 map 和 set
  • HID Remapper 实现手柄到鼠标的精准转换
  • 物联网架构:感知层、网络层、平台层、应用层详解
  • RPGMZ 游戏引擎宠物战斗系统基础功能实现
  • Virt-A-Mate (VAM) 虚拟现实交互软件技术解析
  • Windows 安装 Ubuntu 与 ROS 环境配置指南
  • 政务智能体工作流导出与导入实战:以 12345 热线分拨为例
  • MiniMax 开源 MiniMax-M2.5 模型:编程与智能体性能突破
  • ToDesk ToClaw 评测:基于 OpenClaw 的零门槛 AI 桌面自动化
  • LeetCode 高频算法题梳理:Java 面试常见解法
  • AIGC 核心概念解析:22 个基础术语详解
  • Python 中 NumPy 库的基础使用详解
  • 从新加坡 AI 系统安全指南看可信 AI 全生命周期防护框架
  • 飞书机器人图片消息发送流程与常见报错解决
  • Arrow 游戏叙事工具:三大实战场景与可视化创作
  • AI产品经理入门指南:核心职责、技能储备与职业发展路径
  • 探索WAAPI:开启Web动画新纪元
  • 前端开发必备的 3 个 AI 技能:UI 设计、工程实践与硬件优化
  • MySQL 运维实战:常见问题排查与解决方案

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online