Spiga

2025年4月的文章归档

程序员的AI体验(二):提示词工程

2025-04-26 18:29:00

摘要:一、提示词定义与重要性 1. 什么是提示词 提示词是输入给AI系统的指令,可以是问题、描述或关键词,目的是引导AI按期望思考或创造,输出所需结果。 提示词的作用:提示词如同打开AI能力之门的钥匙,其质量直接影响AI输出结果的质量,好的提示词能清晰指引AI工作方向,激发其潜能。 提示词与AI的关系:提示词是人类与AI沟通的桥梁,通过不断优化提示词,我们可以更好地理解AI的工作原理,与AI协同工作,共同创造更大价值。 2. 提示词的重要性 对AI输出质量的决定性作用:输入的是垃圾,输出的也是垃圾。优质提示词能引导AI准确把握需求,避免无用信息输出,提升工作效率。 提升AI创新创造能力:高阶提示词可引导AI进行创新创造,突破常规思维。如要求AI设计创意产品,通过特定提示词激发其创新灵感。 提示词促进对AI的理解:通过不断尝试和优化提示词,可了解AI的优势与局限。在提示词优化过程中,可学会与AI协同工作。 二、高质量提示词编写 1. 提示词的常见形式 指令式提示词:直接告诉AI具体要做什么,适用于任务目标明确的情况,如“写一篇关于气候变化的短文”。 问答式提示词:通过提问引导AI思考并回答问题,如“什么是人工智能”,适合获取知识或解答疑问。 填空式提示词:提供句子框架让AI填充内容,如“我最喜欢的动物是( ),因为( )”,有助于获得结构化且有逻辑的回答。 对话式提示词:模拟人与人之间的自然对话,进行多轮交流。例如:“我们好,能跟我聊聊今天的天气吗?”这种形式更适合日常沟通场景。 创意生成式提示词:给予AI更大的发挥空间,鼓励其进行创作。例如:“写一首描绘未来世界的诗。”这种形式常用于文学、艺术等创意领域。 思维链提示词:通过逐步推理的方式引导AI分析问题。例如:“让我们一步步来思考这个问题……”这种形式特别适合解决复杂问题,帮助AI理清思路。 2. 关键要素 明确目标:写提示词的第一步是明确目标,目标越清晰、越具体,AI越容易理解意图并给出精准回应。 提供充分的背景信息:给AI提供足够的背景信息,使其理解更深入,输出更贴合需求,需考虑受众特点、产品卖点、行业术语等。 明确输出要求:清楚告诉AI输出内容的类型、格式、字数限制、内容侧重点、风格和语气等,确保输出符合预期。 3. 提升提示词质量的实用技巧 指令清晰化:使用明确动词开头,用分隔符…… 阅读全文

程序员的AI体验(一):通识基础

2025-04-19 17:23:25

摘要:一、人工智能通识 1. 人工智能的应用场景与定义 日常生活中的AI应用: 手机语音助手利用自然语言处理和语音识别技术,为用户提供便捷服务,如查询信息、设置提醒等。智能家居设备通过语音控制实现家电操作,提升生活便利性。 自动驾驶汽车依靠AI进行环境感知和决策,提高行车安全。金融领域中,机器人投资顾问运用AI分析数据,提供个性化资产管理建议。 专业领域的AI应用 医院利用AI图像识别技术辅助诊断,提高诊断准确率。 制造业借助AI优化生产流程,提高效率和质量。 监控摄像头结合AI技术实现行为监测和犯罪预测,提升社会安全水平。 这些应用展示了AI在不同领域的强大潜力和广泛价值。 人工智能的定义与本质 约翰·麦卡锡将人工智能定义为“实现目标的计算能力”,强调其目标导向性。但目前的AI技术本质上是一种高级统计工具,仅在特定任务上表现出色。 真正的智能涉及意识、情感和创造力,而现有AI缺乏这些特质,只能在预设规则或数据支持下运行,无法像人类一样灵活应对复杂情况。 人工智能的分类 现有的AI大多是“弱人工智能”,只能完成特定任务,如翻译、推荐等。 而“强人工智能”或通用人工智能(AGI)是未来目标,能处理任何任务,目前仍遥不可及。 例如,扫地机器人和聊天机器人虽表现出一定智能,但不具备真正的智能。目前的AI产品和服务只是AGI研发过程中的副产品。 2. 人工智能的发展历程 第一次浪潮:规则驱动 1950s- 1980s,达特茅斯会议提出人工智能概念,开启第一次浪潮。基于逻辑和符号推理,依赖人工编写规则,如早期的专家系统。 这种方式在某些领域取得成就,但局限性明显,难以处理自然语言的歧义性和图像识别的复杂性,且成本高昂、可扩展性差,导致人工智能进入寒冬。 第二次浪潮:统计学习 1990s- 2010s,计算机硬件性能提升和互联网出现推动第二次浪潮。统计学习引入概率和统计方法,让计算机从数据中自动学习模式。 垃圾邮件过滤、语音识别和推荐系统等领域取得显著成果,但依赖人工特征工程,对于复杂任务和场景的处理能力有限,发展仍受限。 第三次浪潮:深度学习 21世纪10年代,深度学习和互联网兴起推动第三次浪潮。深度学习实现端到端学习,自动提取数据特征,取得重大突破,如AlphaGo战胜李世石、ChatGPT引发热潮。 在图像识别、自然语言处理等领域超越人…… 阅读全文

前端提升7:手撸Vue3组件渲染

2025-04-12 23:21:56

摘要:一、实现DOM操作API 1. 构建环境 创建runtime-dom目录,存放dom操作api 创建runtime-core目录,存放允许时虚拟dom操作核心代码 在两个目录中分别构建环境 /packages/runtime-dom/package.json { name: @vue/runtime-dom, module: dist/runtime-dom.esm-bundler.js, unpkg: dist/runtime-dom.global.js, buildOptions: { name: VueRuntimeDOM, formats: [ esm-bundler, cjs, global ] } } /packages/runtime-core/package.json { name: @vue/runtime-core, module: dist/runtime-core.esm-bundler.js, unpkg: dist/runtime-core.global.js, buildOptions: { name: VueRuntimeCore, formats: [ esm-bundler, cjs, global ] } } 2. 定义操作API /packages/runtime-dom/src/nodeOps.ts // dom操作 vue虚拟dom, 通过数据对象在内存中对比差异, 找到最小的改动点,使用dom操作完成更新。 // 原生dom操作api export const nodeOps = { // 插入, 追加 insert: (child, parent, anchor = null) = { parent.insertBefore(child, anchor); // parent.appendChild(child) }, // 删除子节点 remove: child = { const parent = child.parentNode; if (paren…… 阅读全文

前端提升6:手撸vue3响应式实现

2025-04-05 18:21:43

摘要:Vue3响应式的实现跟Vue2最大的不同点是Vue3中的响应式是个独立模块,可以单独拿出来使用。 不仅仅响应式是模块化的,Vue3的设计理念也是基于模块化来设计的。而要使用Vue2的响应式,就必须加载整个Vue2的库。 一、rollup环境搭建 我们使用Vue3搭建上面的时候,经常会用到Vite,而Vite实际上是基于rollup实现的。 Rollup 是一个 JavaScript 模块打包工具,它可以将多个 JavaScript 文件(模块)打包成一个或多个优化后的文件。与 Webpack 类似,但 Rollup 更专注于 ES6 模块的打包,通常用于库/框架的开发。 除了rollup外,esbuild也是一个很不错的前端构建工具。 rollup 类库打包工具, 专注于模块的tree-shaking, 尽量减少模块打包的大小。 拥有庞大的插件生态系统,如代码拆分,语法转换等 常用于构建library, 特别是专注于es6模块 前端工程打包,一般使用webpack esbuild 主要特点速度很快,用go编写,可以并行处理。 对ast语法树操作能力不太强, 老项目升级用esbuild 开发使用esbuild构建编译,生产打包使用成熟的rollup 接下来我们使用先使用rollup搭建一个本地环境 环境搭建 新建一个vue3的文件夹,然后安装rollup yarn add rollup --dev 目录搭建 --packages # 因为Vue3是基于模块化来设计的,我们设计包文件的时候也分开构建,所以packages目录下都有会自己的项目文件 --reactivity # 响应式实现包 --dist --node_modules --src index.ts package.json pnpm-lock.yaml --shared # 公共库 --dist --src index.ts package.json --scripts build.js dev.js .npmrc package.json pnpm-lock.yaml rollup.config.js tsconfig.json 基本配置 rollup.config.js i…… 阅读全文