当前位置: 首页 > news >正文

AI 编程技巧、技术笔记

想使用AI进行开发,还有有很多技巧的。——如何让AI生成的代码更准确?

**************************************************************************************************************

编程技巧

上篇说到Prompt提示词,提问的质量决定了回答的准确性。所以优化Prompt让开发更轻松。

1、优化Prompt

Prompt的质量直接决定了AI生成代码的准确性,正因如此,就有了Prompt工程概念。

想要掌握最基本的Prompt优化技巧,比如明确AI的角色,提供具体的细节要求,拆解任务没提供示例等等,可以看看智谱AI开放平台,进行学习。

有需求的话,建议手写Prompt扔给AI,让其帮我们生成一段高质量、结构化的需求文档,再喂给AI工具,通义灵码、Cursor等,效率和效果会更好。

完成需求文档通常包括
·   明确项目背景和目标·   详细列出功能要求和技术栈
·   执行代码风格和架构模式·    提供示例和参考资料
·   明确限制条件和边界场景

2、复杂项目的生成技巧

对于复杂的项目,可以采用分布迭代策略:

        1、先利用工具(Cursor的Agent模式+高级推理模型)生成基础项目框架,暂时能运行即可

        2、划分模块和功能点,依次向AI提问,逐步实现核心功能并验证是否可用

        3、在保证不影响功能的前提下,优化实现细节

招式:

        1、项目模块化。由于AI的脑容量不大,能接受的上下文是有限的,随着项目信息量不断增大,它有可能忘记之前的信息,导致生成错误代码。所以尽量把项目功能隔离开,把一个大项目分割成多个小项目,让AI生成某个功能时只需要关注小部分上下文,得到的结果会更精准。

例子:开发一个电商系统,可以把商品管理模块独立出来,当需要AI生成添加商品功能的代码时,只需要提供商品表字段设计、添加商品的业务逻辑规则,不需要把支付结算,用户会员等关联不大的功能作为上下文提供给AI。

        2、修改限定范围。AI生成的代码可能没有那么可控,经常改A功能,同时把B功能也顺带修改了,这个问题会经常遇到,只要在提示词中限定修改范围即可。

例子:

仅修改service.impl/GoodsServiceImpl.java中的updateGoods方法:

1、添加分布式锁防止超卖

2、保持现有日志格式

3、不改动其他文件和逻辑

        3、抽象和复用。假如我们要让AI生成2个布局一样的页面,他生成的方式就会死板,生成1后复制2,这样一方修改不利于维护。所以可以适当告诉AI:帮我抽象1页面,1代码为可复用组件。这样会减少项目代码量,,也有助于减轻AI记忆负担。

        4、版本控制。建议利用Git版本控制工具对代码进行管理,每正确生成一个功能后提交一个版本,在每次生成新代码后,人工进行对比,出了问题可以快速还原,防止代码丢失。

**************************************************************************************************************

编程技术

“AI时代,所有的传统业务都值得利用AI重塑”

学习AI,不只是会用AI工具,能利用AI工具开发项目,还能自主开发AI项目,同时把AI的能力接入到自己的项目中。

1、AI开发框架

目前主流的AI开发框架,Spring AI 、LangChain4j、LangGraph   

Spring AI和LangChain4j比较类似,都提供了很多现成的方法,可以提高开发AI应用的效率,

比如快速对接大模型、保存会话上下文、对接向量数据库实现RAG 等等等等。

区别是Spring AI更容易和主流java开发框架Spring集成,容易上手;LangChain4j则更灵活,适合开发复杂的智能体。比如开发一个智能文档分析系统时,利用LangChain4j,智能体能够自动读取文档内容,调用搜索 引擎获取相关背景知识,然后根据任务需求,将文档信息与外部知识结合,生成分析报告。

建议,从Spring AI 学起。

场景推荐框架优势
Java企业应用Spring AI无缝集成Spring生态
智能体开发LangChain4j完整Agent工具链
复杂工作流LangGraph可视化编排

2、AI集成

开发AI应用的前提是要有大模型,但是大模型需要消耗算力才能运行,算力就需要money,所以可以使用2中方法,接入大模型:1、AI云服务、2、本地部署大模型

AI云服务

AI云服务就是其他企业为我们部署了AI大模型,通过API接口方式提供给我们使用,按量计费。

比如:阿里云百炼、火山引擎、硅基流动、Open AI,这些广告机场、高铁等很常见。

重点掌握:

        1、如何通过API接入云服务

        2、如何通过使用AI云服务来创建智能体和配置参数

        3、如何选择合适的云服务?需要关注和对比各家云服务的计费模式和服务质量

        4、如何更低成本,更稳定的使用云服务?需要重点学习Prompt工程额高可用技术

本地部署大模型

本地部署大模型对于很多企业来说既是刚需,也是资源开销(部署大模型的难度不在于技术,在于算力,也就是money)。

好处是数据无需上传云端,能够有效保障数据的安全性和隐私性,尤其适用于医疗、金融等对数据安全比较敏感的行业。

本地部署大模型,较为常见的Ollama工具,可实现一键部署各种主流开源模型。

3、AI领域业务

企业中的AI业务开发,不仅仅是和AI进行对话就够了,还要掌握复杂的业务开发,比如RAG知识库,多模态、MCP服务、ReAct智能体。

RAG知识库

各家公司都有自己的业务和文档内容,会构建适合自己的问答系统和客服,这就需要用到RAG检索增强生成技术。先通过文本嵌入模型,将企业文化和内容文档转化为向量,存入向量数据库;用户提问时,系统在向量数据库中检索相关向量数据,找到最相似文档片段,和问题一起输入大模型进行处理,这样的话,大模型能够基于企业真实数据作答,更准确贴合实际。

关于RAG需要掌握,向量数据库Milvus和PGVector、文档的抽取/转换/加载、索引的构建、查询策略的优化等等。

多模态

多模态也是主流的AI业务场景,即融合文本、图像、音频、视频等多种不同类型的数据模态,从而提高产品使用的易用性,扩展出更多创意的功能。

比如做个智能导购系统,既可以输入文字描述,又可以上传图片,甚至可以理解上传的音频文件或者分析视频文件。系统会将这些来自不同模态的数据进行整合处理,在商品数据库中精准匹配符合要求的商品,并返回结果。

想开发多模态应用,需要掌握模态转换技术,比如文本转语音(TTS)、语音转文本(STT)、光学字符识别(OCR)等,不过这些都有现成的工具库或者云服务,掌握调用方式即可。

还可以通过Spring AI、LangChain等AI开发框架调用不同模态大模型,降低开发难度。

MCP服务

MCP(Model Context Protocol,模型上下文协议)可以理解为 提供给AI的各种服务,AI利用这些服务能够实现更强大的功能。

如何在项目中接入MCP服务,来真强自己的项目能力;以及如何开发自己的MCP服务,让别人可以使用,就很强。

ReAct智能体

ReAct是一种构建智能体的开发范式,目的是打造能够依据推理结果自主采取行动的智能体。

他的开发过程会涉及到任务规划、工具调用、交互I/O,异常处理等知识。尤其是工具调用,可以通过Function Call或MCP实现,天气查询,文件读写,网页运行,信息检索,终端命令执行等功能

示例:

开发视频网站为例,用户说“帮我开发Dilidili视频网站并部署上线”的指令时,智能体首先会深入理解任务内容,通过推理,梳理出一系列执行步骤,包括明确需求,设计方案,搭建框架,生成代码,部署上线等流程。

那么智能体会调用相应的工具来执行这些行动。如果执行过程遇到问题,还会询问我们的意见,重新推理并及时调整行动方案。

4、AI工具链

AI开发过程中可能会用到平台、工具和类库。

低代码平台

比如:低代码AI开发平台Dify,可以通过拖拽的方式构建自己的AI智能体,创建知识库并导入自己的文档,搭建复杂的工作流等等,哪怕是不会代码,依然很强。

工具库

开发AI智能体时会用到工具库。

        1、Apache Tika,功能强大的文件解析器工具库,支持解析PDF、Word、Excel、PowerPoint等各种文档,然后提供给AI作为知识。

        2、Playwright,用于模拟浏览器行为的工具库,AI需要运行网页,抓取网页数据,自动化测试时,可用。

        3、JSON格式解析库GSON和Kryo

        4、HTML文档解析库jsoup

部署工具

项目的最终部署上线,可以让AI应该从开发环境顺利过渡到生产环境。为用户提供稳定的服务。

如果追求价格和稳定,优先选择大厂提供的云服务部署。如果快速上线AI小应用,可以选择:

Vercel:适合前端应用的部署平台,支持自动构建、在线浏览,CDN分发,而且还免费提供可访问的域名。

Sealos:云原生应用管理平台,支持Kubernetes集群管理里,为AI应用提供容器化部署环境,适合需要弹性伸缩的AI服务。

Railway:能让开发人员轻松部署Docker容器,无需操心服务器配置与运维,且自带自动化构建工具,环境管理能力等

想快速部署服务Docker可以轻松搞定,像安装app一样简单。

Docker是一个开放源代码的软件容器化平台,它极大地简化了应用程序的部署、扩展和管理。通过Docker,开发者可以将应用程序及其依赖打包到一个称为“容器”的独立单元中,这个容器可以在任何环境中运行,无论是开发者的个人电脑、测试服务器还是生产环境中的服务器。这种一致性确保了应用在不同阶段的环境中行为一致。

容器与虚拟机类似,但更轻量级。虚拟机需要运行一整个操作系统,而容器只是共享主机操作系统的内核,并在其上运行多个隔离的用户空间实例。这使得容器比虚拟机启动更快、占用资源更少。

Docker的主要特性包括:

  • 镜像(Images):Docker容器的基础是镜像,这是一个轻量级、独立、可执行的软件包,包含了运行某个软件所需的一切:代码、运行时、库、环境变量和配置文件。

  • 容器(Containers):容器是从镜像创建的运行实例。你可以使用一个镜像创建多个容器,每个都是相互隔离的。

  • 仓库(Registry):用于存储和分发镜像的地方。Docker Hub是Docker官方提供的一个公共仓库,除此之外,用户也可以建立自己的私有仓库。

Docker已经成为现代软件开发流程中不可或缺的一部分,尤其是在持续集成和持续交付(CI/CD)领域。通过使用Docker,团队能够加快开发速度,提高生产力,同时减少从开发到生产的环境差异带来的问题。

http://www.dtcms.com/a/312904.html

相关文章:

  • 安卓调javaScript Not find method “forceLogout“ implementatidsignature or namesp
  • 面向智能体的上下文工程:策略、实现与 LangGraph 实践
  • 基于单片机火灾报警系统/防火防盗系统设计
  • (9)NMPC非线性模型预测控制及机械臂ROS控制器实现
  • MCP-与本地大模型集成实现工具调用
  • 微服务的使用
  • java中Optional类的使用和注意采坑
  • DBMS设计 之2 从数据中台到三种中台
  • 常见的框架漏洞(Thinkphp,spring,Shiro)
  • 常见的框架漏洞
  • IO流-对象流
  • MCP革命:AI世界的“USB-C”接口如何重塑智能体与外部工具的连接
  • 均线:从市场脉搏到量子计算的时空密码
  • K8S几种常见CNI深入比较
  • Qt::AA_DontCreateNativeWidgetSiblings使用注意事项
  • 游戏设计原理
  • Flutter开发 dart异步
  • Linux网络编程 ---五种IO模型
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • Python----大模型(从预训练到分布式优化的核心技术解析)
  • 2、RabbitMQ的5种模式基本使用(Maven项目)
  • 迈向透明人工智能: 可解释性大语言模型研究综述
  • ubuntu apt安装与dpkg安装相互之间的关系
  • Python 实例属性与方法命名冲突:一次隐藏的Bug引发的思考
  • 途游Android面试题及参考答案
  • 【GitHub探索】Agent开发平台CozeStudio开源版本踩坑体验
  • pycharm上如何添加conda环境
  • 嵌入式 C 语言入门:多文件编程实践笔记 —— 从文件创建到调用
  • 为何:内存数据断电即逝,硬盘数据牢笼长存
  • LangChain框架概念及简单的使用案例