大模型应用开发:后端开发者入门指南
目录模型部署开放大模型服务注册账号申请API_KEY体验模型本地部署下载安装ollama搜索模型运行模型调用大模型大模型接口规范接口说明提示词角色会话记忆问题调用大模型大模型应用传统应用核心特点擅长领域不擅长领域AI大模型核心特点擅长领域不擅长领域3.3.强强联合3.4.大模型与大模型应用大模型应用开发技术架构技术架构纯Prompt模式FunctionCallingRAGFine-tuning技术选型模型部署首先要明确一点大模型应用开发并不是在浏览器中跟AI聊天。而是通过访问模型对外暴露的API接口实现与大模型的交互。因此企业首先需要有一个可访问的大模型通常有三种选择使用开放的大模型API在云平台部署私有大模型在本地服务器部署私有大模型使用开放大模型API的优缺点如下优点没有部署和维护成本按调用收费缺点依赖平台方稳定性差长期使用成本较高数据存储在第三方有隐私和安全问题云平台部署私有模型优点前期投入成本低部署和维护方便网络延迟较低缺点数据存储在第三方有隐私和安全问题长期使用成本高本地部署私有模型优点数据完全自主掌控安全性高不依赖外部环境虽然短期投入大但长期来看成本会更低缺点初期部署成本高维护困难注意这里说的本地部署并不是说在你自己电脑上部署而是公司自己的服务器部署。由于大模型所需要的算力非常多自己电脑部署的模型往往都是阉割蒸馏版本性能和推理能力都比较差。再加上现在各种模型都有很多免费的服务可以访问性能还是满血版本推理能力拉满。所以完全不建议大家在自己电脑上部署除非你想自己做模型微调或测试。接下来我们给大家演示下两种部署方式开发大模型服务本地部署在本机演示将来在服务器也是类似的开放大模型服务通常发布大模型的官方、大多数的云平台都会提供开放的、公共的大模型服务。大模型官方前面讲过我们不再赘述这里我们看一些国内提供大模型服务的云平台云平台公司地址阿里百炼阿里巴巴https://bailian.console.aliyun.com腾讯TI平台腾讯https://cloud.tencent.com/product/ti千帆平台百度https://console.bce.baidu.com/qianfan/overviewSiliconCloud硅基流动https://siliconflow.cn/zh-cn/siliconcloud火山方舟-火山引擎字节跳动https://www.volcengine.com/product/ark这些开放平台并不是免费而是按照调用时消耗的token来付费每百万token通常在几毛~几元钱而且平台通常都会赠送新用户百万token的免费使用权。token可以简单理解成你与大模型交互时发送和响应的文字通常一个汉字2个token左右我们以阿里云百炼平台为例。注册账号首先我们需要注册一个阿里云账号https://account.aliyun.com/然后访问百炼平台开通服务https://www.aliyun.com/product/bailian?spm5176.29677750.nav-v2-dropdown-menu-1.d_main_0_6.6b44154amuN66ascm20140722.M_sfm.P_197.ID_sfm-OR_rec-V_1-MO_3480-ST_12892首次开通应该会赠送百万token的使用权包括DeepSeek-R1模型、qwen模型。申请API_KEY注册账号以后还需要申请一个API_KEY才能访问百炼平台的大模型。在阿里云百炼平台的右上角鼠标悬停在用户图标上可以看到下拉菜单选择API-KEY进入API-KEY管理页面选择创建我的API-KEY会弹出表单填写完毕点击确定即可生成一个新的API-KEY后续开发中就需要用到这个API-KEY了一定要记牢。而且要保密不能告诉别人。体验模型访问百炼平台可以看到如下内容点击模型调用-立即调用就能进入模型广场选择一个自己喜欢的模型然后点击API调用示例即可进入API文档页点击立即体验就可以进入API调用大模型的试验台在这里就可以模拟调用大模型接口了。本地部署很多云平台都提供了一键部署大模型的功能这里不再赘述。我们重点讲讲如何手动部署大模型。手动部署最简单的方式就是使用Ollama这是一个帮助你部署和运行大模型的工具。官网如下https://ollama.com/下载安装ollama首先我们需要下载一个Ollama的客户端在官网提供了各种不同版本的Ollama大家可以根据自己的需要下载。下载后双击即可安装这里不再赘述。注意Ollama默认安装目录是C盘的用户目录如果不希望安装在C盘的话其实C盘如果足够大放C盘也没事就不能直接双击安装了。需要通过命令行安装。命令行安装方式如下在OllamaSetup.exe所在目录打开cmd命令行然后命令如下暂时无法在飞书文档外展示此内容OK安装完成后还需要配置一个环境变量更改Ollama下载和部署模型的位置。环境变量如下暂时无法在飞书文档外展示此内容环境变量配置方式相信学过Java的都知道这里不再赘述配置完成如图搜索模型ollama是一个模型管理工具和平台它提供了很多国内外常见的模型我们可以在其官网上搜索自己需要的模型https://ollama.com/search如图目前热度排第一的就是deepseek-r1点击进入deepseek-r1页面会发现deepseek-r1也有很多版本这些就是模型的参数大小越大推理能力就越强需要的算力也越高。671b版本就是最强的满血版deepseek-r1了。需要注意的是Ollama提供的DeepSeek是量化压缩版本对比官网的蒸馏版会更小对显卡要求更低。对比如下比如我的电脑内存32G显存是6G我选择部署的是7b的模型当然8b也是可以的差别不大都是可以流畅运行的。运行模型选择自己合适的模型后ollama会给出运行模型的命令复制这个命令然后打开一个cmd命令行运行命令即可然后你就可以跟本地模型聊天了注意首次运行命令需要下载模型根据模型大小不同下载时长在5分钟~1小时不等请耐心等待下载完成。ollama控制台是一个封装好的AI对话产品与ChatGPT类似具备会话记忆功能。Ollama是一个模型管理工具有点像Docker而且命令也很像比如暂时无法在飞书文档外展示此内容调用大模型前面说过大模型开发并不是在浏览器中跟AI聊天。而是通过访问模型对外暴露的API接口实现与大模型的交互。所以要学习大模型应用开发就必须掌握模型的API接口规范。目前大多数大模型都遵循OpenAI的接口规范是基于Http协议的接口。因此请求路径、参数、返回值信息都是类似的可能会有一些小的差别。具体需要查看大模型的官方API文档。大模型接口规范我们以DeepSeek官方给出的文档为例暂时无法在飞书文档外展示此内容接口说明请求方式通常是POST因为要传递JSON风格的参数请求路径与平台有关DeepSeek官方平台https://api.deepseek.com阿里云百炼平台https://dashscope.aliyuncs.com/compatible-mode/v1本地ollama部署的模型http://localhost:11434安全校验开放平台都需要提供API_KEY来校验权限本地ollama则不需要请求参数参数很多比较常见的有model要访问的模型名称messages发送给大模型的消息是一个数组streamtrue代表响应结果流式返回false代表响应结果一次性返回但需要等待temperature取值范围[0:2)代表大模型生成结果的随机性越小随机性越低。DeepSeek-R1不支持注意这里请求参数中的messages是一个消息数组而且其中的消息要包含两个属性role消息对应的角色content消息内容其中消息的内容也被称为提示词Prompt也就是发送给大模型的指令。提示词角色通常消息的角色有三种角色描述示例system优先于user指令之前的指令也就是给大模型设定角色和任务背景的系统指令你是一个乐于助人的编程助手你以小团团的风格来回答用户的问题。user终端用户输入的指令类似于你在ChatGPT聊天框输入的内容写一首关于Java编程的诗assistant由大模型生成的消息可能是上一轮对话生成的结果注意用户可能与模型产生多轮对话每轮对话模型都会生成不同结果。其中System类型的消息非常重要影响了后续AI会话的行为模式。比如我们会发现当我们询问这些AI对话产品“你是谁”这个问题的时候每一个AI的回答都不一样这是怎么回事呢这其实是因为AI对话产品并不是直接把用户的提问发送给LLM通常都会在user提问的前面通过System消息给模型设定好背景所以当你问问题时AI就会遵循System的设定来回答了。因此不同的大模型由于System设定不同回答的答案也不一样。示例暂时无法在飞书文档外展示此内容会话记忆问题这里还有一个问题我们为什么要把历史消息都放入Messages中形成一个数组呢这是因为大模型是没有记忆的因此我们调用API接口与大模型对话时每一次对话信息都不会保留多次对话之间都是独立的没有关联的。但是大家可能发现了我们使用的AI对话产品却能够记住每一轮对话信息根据这些信息进一步回答这是怎么回事呢答案就是Messages数组。我们只需要每一次发送请求时都把历史对话中每一轮的User消息、Assistant消息都封装到Messages数组中一起发送给大模型这样大模型就会根据这些历史对话信息进一步回答就像是拥有了记忆一样。示例暂时无法在飞书文档外展示此内容调用大模型部分平台提供了图形化的试验台可以方便测试模型接口。比如阿里云百炼平台当然我们也可以用普通的http客户端来发起请求大模型我们以Ollama为例Ollama在本地部署时会自动提供模型对应的Http接口访问地址是http://localhost:11434/api/chat大模型应用大模型应用是基于大模型的推理、分析、生成能力结合传统编程能力开发出的各种应用。为什么要把传统应用与大模型结合呢别着急我们先来看看传统应用、大模型各自擅长什么不擅长什么传统应用作为Java程序员大家应该对传统Java程序的能力边界很清楚。核心特点基于明确规则的逻辑设计确定性执行可预测结果。擅长领域结构化计算例银行转账系统精确的数值计算、账户余额增减。例Excel公式按固定规则处理表格数据。确定性任务例排序算法快速排序、冒泡排序输入与输出关系完全可预测。高性能低延迟场景例操作系统内核调度、数据库索引查询需要毫秒级响应。规则明确的流程控制例红绿灯信号切换系统基于时间规则和传感器输入。不擅长领域非结构化数据处理例无法直接理解用户自然语言提问如帮我写一首关于秋天的诗。模糊推理与模式识别例判断一张图片是猫还是狗传统代码需手动编写特征提取规则效果差。动态适应性例若用户需求频繁变化如电商促销规则每天调整需不断修改代码。AI大模型传统程序的弱项恰恰就是AI大模型的强项核心特点基于数据驱动的概率推理擅长处理模糊性和不确定性。擅长领域自然语言处理例ChatGPT生成文章、翻译语言或客服机器人理解用户意图。非结构化数据分析例医学影像识别X光片中的肿瘤检测或语音转文本。创造性内容生成例Stable Diffusion生成符合描述的图像或AI作曲工具创作音乐。复杂模式预测例股票市场趋势预测基于历史数据关联性但需注意可靠性限制。不擅长领域精确计算例AI可能错误计算12345 × 6789的结果需依赖计算器类传统程序。确定性逻辑验证例验证身份证号码是否符合规则AI可能生成看似合理但非法的号码。低资源消耗场景例嵌入式设备如微波炉控制程序无法承受大模型的算力需求。因果推理例AI可能误判公鸡打鸣导致日出的因果关系。3.3.强强联合传统应用开发和大模型有着各自擅长的领域传统编程确定性、规则化、高性能适合数学计算、流程控制等场景。AI大模型概率性、非结构化、泛化性适合语言、图像、创造性任务。两者之间恰好是互补的关系两者结合则能解决以前难以实现的一些问题混合系统Hybrid AI用传统程序处理结构化逻辑如支付校验AI处理非结构化任务如用户意图识别。示例智能客服中AI理解用户问题传统代码调用数据库返回结果。增强可解释性结合规则引擎约束AI输出如法律文档生成时强制符合条款格式。低代码/无代码平台通过AI自动生成部分代码如GitHub Copilot降低传统开发门槛。在传统应用开发中介入AI大模型充分利用两者的优势既能利用AI实现更加便捷的人机交互更好的理解用户意图又能利用传统编程保证安全性和准确性强强联合这就是大模型应用开发的真谛综上所述大模型应用就是整合传统程序和大模型的能力和优势来开发的一种应用。3.4.大模型与大模型应用我们熟知的大模型比如GPT、DeepSeek都是生成式模型顾名思义根据前文不断生成后文。不过模型本身只具备生成后文的能力、基本推理能力。我们平常使用的AI对话产品除了生成和推理还有会话记忆功能、联网功能等等。这些都是大模型不具备的。要想让大模型产生记忆联网等功能是需要通过额外的程序来实现的也就是基于大模型开发应用。所以我们现在接触的AI对话产品其实都是基于大模型开发的应用并不是大模型本身这一点大家千万要区分清楚。下面我把常见的一些大模型对话产品及其模型的关系给大家罗列一下大模型对话产品公司地址GPT-3.5、GPT-4oChatGPTOpenAIhttps://chatgpt.com/Claude 3.5Claude AIAnthropichttps://claude.ai/chatsDeepSeek-R1DeepSeek深度求索https://www.deepseek.com/文心大模型3.5文心一言百度https://yiyan.baidu.com/星火3.5讯飞星火科大讯飞https://xinghuo.xfyun.cn/deskQwen-Max通义千问阿里巴巴https://tongyi.aliyun.com/qianwen/MoonshootKimi月之暗面https://kimi.moonshot.cn/Yi-Large零一万物零一万物https://platform.lingyiwanwu.com/当然除了AI对话应用之外大模型还可以开发很多其它的AI应用常见的领域包括那么问题来了如何进行大模型应用开发呢大模型应用开发技术架构基于大模型开发应用有多种方式接下来我们就来了解下常见的大模型开发技术架构。技术架构目前大模型应用开发的技术架构主要有四种纯Prompt模式不同的提示词能够让大模型给出差异巨大的答案。不断雕琢提示词使大模型能给出最理想的答案这个过程就叫做提示词工程Prompt Engineering。很多简单的AI应用仅仅靠一段足够好的提示词就能实现了这就是纯Prompt模式。其流程如图暂时无法在飞书文档外展示此内容FunctionCalling大模型虽然可以理解自然语言更清晰弄懂用户意图但是确无法直接操作数据库、执行严格的业务规则。这个时候我们就可以整合传统应用于大模型的能力了。简单来说可以分为以下步骤我们可以把传统应用中的部分功能封装成一个个函数Function。然后在提示词中描述用户的需求并且描述清楚每个函数的作用要求AI理解用户意图判断什么时候需要调用哪个函数并且将任务拆解为多个步骤Agent。当AI执行到某一步需要调用某个函数时会返回要调用的函数名称、函数需要的参数信息。传统应用接收到这些数据以后就可以调用本地函数。再把函数执行结果封装为提示词再次发送给AI。以此类推逐步执行直到达成最终结果。流程如图暂时无法在飞书文档外展示此内容注意并不是所有大模型都支持Function Calling比如DeepSeek-R1模型就不支持。RAGRAGRetrieval-AugmentedGeneration叫做检索增强生成。简单来说就是把信息检索技术和大模型结合的方案。大模型从知识角度存在很多限制时效性差大模型训练比较耗时其训练数据都是旧数据无法实时更新缺少专业领域知识大模型训练数据都是采集的通用数据缺少专业数据可能有同学会说 简单啊我把最新的数据或者专业文档都拼接到提示词一起发给大模型不就可以了。同学你想的太简单了现在的大模型都是基于Transformer神经网络Transformer的强项就是所谓的注意力机制。它可以根据上下文来分析文本含义所以理解人类意图更加准确。但是这里上下文的大小是有限制的GPT3刚刚出来的时候仅支持2000个token的上下文。现在领先一点的模型支持的上下文数量也不超过 200K token所以海量知识库数据是无法直接写入提示词的。怎么办呢RAG技术正是来解决这一问题的。RAG就是利用信息检索技术来拓展大模型的知识库解决大模型的知识限制。整体来说RAG分为两个模块检索模块Retrieval负责存储和检索拓展的知识库文本拆分将文本按照某种规则拆分为很多片段文本嵌入Embedding)根据文本片段内容将文本片段归类存储文本检索根据用户提问的问题找出最相关的文本片段生成模块Generation组合提示词将检索到的片段与用户提问组织成提示词形成更丰富的上下文信息生成结果调用生成式模型例如DeepSeek根据提示词生成更准确的回答由于每次都是从向量库中找出与用户问题相关的数据而不是整个知识库所以上下文就不会超过大模型的限制同时又保证了大模型回答问题是基于知识库中的内容完美流程如图暂时无法在飞书文档外展示此内容Fine-tuningFine-tuning就是模型微调就是在预训练大模型比如DeepSeek、Qwen的基础上通过企业自己的数据做进一步的训练使大模型的回答更符合自己企业的业务需求。这个过程通常需要在模型的参数上进行细微的修改以达到最佳的性能表现。在进行微调时通常会保留模型的大部分结构和参数只对其中的一小部分进行调整。这样做的好处是可以利用预训练模型已经学习到的知识同时减少了训练时间和计算资源的消耗。微调的过程包括以下几个关键步骤选择合适的预训练模型根据任务的需求选择一个已经在大量数据上进行过预训练的模型如Qwen-2.5。准备特定领域的数据集收集和准备与任务相关的数据集这些数据将用于微调模型。设置超参数调整学习率、批次大小、训练轮次等超参数以确保模型能够有效学习新任务的特征。训练和优化使用特定任务的数据对模型进行训练通过前向传播、损失计算、反向传播和权重更新等步骤不断优化模型的性能。模型微调虽然更加灵活、强大但是也存在一些问题需要大量的计算资源调参复杂性高过拟合风险总之Fine-tuning成本较高难度较大并不适合大多数企业。而且前面三种技术方案已经能够解决常见问题了。那么问题来了我们该如何选择技术架构呢技术选型从开发成本由低到高来看四种方案排序如下Prompt Function Calling RAG Fine-tuning所以我们在选择技术时通常也应该遵循在达成目标效果的前提下尽量降低开发成本这一首要原则。然后可以参考以下流程来思考暂时无法在飞书文档外展示此内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449041.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!