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

如何开发一个大模型应用?

1. 背景

AIGC技术的突破性进展彻底改变了技术开发的范式,尤其是以GPT为代表的LLM,凭借其强大的自然语言理解与生成能力,迅速成为全球科技领域的焦点。2023年末,随着ChatGPT的爆火,AIGC技术从实验室走向规模化应用,催生了从智能导购、智能客服、内容创作到企业自动化等众多场景的革新。这一浪潮不仅吸引了学术界与产业界的广泛关注,更激发了开发者投身大模型应用生态的热情。

彼时,我作为初探AIGC领域的开发者,亲历了这场技术变革的起始阶段,并加入了大模型应用开发团队。在一年多的实践中,围绕大模型的核心能力,探索了其在垂直领域中的落地场景,涉及提示工程、知识库、RAG、Agent以及应用架构设计和性能优化等关键技术环节。过程中,既见证了生成式AI的颠覆性潜力,也直面了数据质量、数据存储、幻觉抑制等现实挑战,积累了从理论到实战的宝贵经验。

本文旨在基于本人一线开发经验,系统梳理大模型应用落地的关键技术与实践心得,涵盖技术选型、架构设计、问题解决方案及未来趋势展望。希望通过真实案例的分享,为开发者提供可复用的方法论,同时与行业同行共同探讨AIGC技术的边界与可能性,推动技术生态的协同进化。

2. 探索

要做一个大模型应用,我们先要决定做什么业务领域,导购、客服还是企业应用。然后对模型进行选型、评估涉及的相关领域数据有哪些,要应对哪些场景,如何快速响应给用户、如何保障数据实时性。

2.1 业务领域

我们探索了导购以及客服领域。不同的两种业务形态,在具体实现过程中也有较大的差别,具体后文详述。

2.2 模型选型

刚开始做的时候,几乎是一家独大,即GPT,起初我们选用gpt3.5,在速度和推理能力上相对均衡,然后在部分需要更精准的场景下使用gpt4(能力强但成本高且速度慢)。后来gpt4o出现,性能佳且成本低,我们进行了替换。再后来就是gpt4o-mini,在成本和性能上得到了均衡。在一些特殊场景如图片理解、模版匹配上尝试了智普和内部模型。

2.3 数据领域

导购领域,我们以电商场景下的商品导购为例:需要商品属性、价格、促销、评价、图文视频、选购指南、品类、类目介绍等。
客服领域:需要历史客服对话记录,以及某些场域下的问答记录。

2.4 应对场景

导购领域:选购建议、价格信息、优惠信息、类似商品、大小尺寸、商品推荐等。
客服领域:咨询、投诉、建议等

2.5 数据交互

无论导购还是客服领域我们都是以对话形式与用户交互。用户发问后,当然希望快速响应, 同时希望格式更加规范,内容更加精准。
在数据交互方面我们采用了组件化的方式进行交互,一个组件可能为大模型组件(需调用大模型分析总结)、图文组件(图片文字渲染)、商卡组件(商品信息展示)、商品视频组件(商品介绍)等。这样对于用户来说更加容易理解。而且我们在使用大模型时也是在指定场景,如准备阶段、输出阶段,这样流式的交互对用户来说感知上速度也很快。另外为了数据的准确性和丰富性,我们收集了离线数据到知识库,同时用mq维护数据实时性。

3. 架构设计

现有应用中并未采用以下架构,开发过程中考虑时间以及复杂性进行了简化,这里我们介绍更完善的架构。

3.1大模型交互

先将内部接口、知识库、外部接口等基础数据封装为基层数据能力。在上层基于数据能力封装领域能力,每一项能力即大模型可选择的一个工具,也即前台对应的一个组件。可将所有的领域能力提供给大模型,供大模型分析筛选。基于领域能力可形成上层的客服、导购等应用。
在这里插入图片描述

3.2 RAG链路

上图中的知识库都需要RAG的驱动,这里我们详细说明。
在这里插入图片描述
首先我们需要将源数据同步到ES集群和向量库集群中,分别用于标量检索和向量检索。同时需要通过MQ触达数据变更,近实时同步知识库中的数据。构建好知识库的同时,如果有查询任务,先标量查询ES,同时向量化后查询向量库,分别拿到两份数据后,进行重拍筛选,最后将高相关小token的数据投入大模型进行分析推理。

3.3 数据驱动

大模型选择好工具函数后,即选择了领域能力列表。然后我们需要采用并发编排工具驱动领域能力调用底层的基础数据,拿到基础数据后,再执行领域能力,解析处理逻辑。详细流程图如下:
在这里插入图片描述
上图中还涉及到依赖分层调用以及数据复用、数据注入,另一篇文章有详细介绍此处的并发能力,这里不再赘述。

3.4 交互链路Agent

在这里插入图片描述

4. 总结

在做大模型应用时,主要关注的点在于数据的丰富性以及实时性,大模型推理的合理性、输出的规范性和及时性。在架构设计上,要避免大模型的无限制推理,保证模型分析的可控。同时限制大模型的随意发挥,可通过预定制的能力卡控模型的随意性。为了保障时效性,需要在合适的阶段再调用大模型,同时给用户输出某些内容,避免长时间等待。


http://www.kler.cn/a/553169.html

相关文章:

  • Node events模块
  • ImportError: cannot import name ‘FixtureDef‘ from ‘pytest‘
  • 长文档处理痛点:GPT-4 Turbo引文提取优化策略与替代方案讨论
  • Linux 的基本命令
  • 使用 Ansys HFSS 对植入式医疗设备进行无线电力传输和 SAR 仿真
  • 美团将为全职及稳定兼职骑手缴纳社保,未来将覆盖所有骑手
  • Python基于Flask的豆瓣Top250电影数据可视化分析与评分预测系统(附源码,技术说明)
  • springboot使用XxlJob定时任务框架
  • php文件包含
  • JAVA 集成 ElasticSearch
  • 【STM32H743IIT6】正点原子阿波罗TFTLCD移植
  • Python高级语法之selenium
  • 服务器部署基于Deepseek的检索增强知识库
  • AllData数据中台核心菜单十三:数据湖平台
  • deepseek-r1系列模型部署分别需要的最低硬件配置
  • 解析DrugBank数据库数据|Python
  • KTransformers如何通过内核级优化、多GPU并行策略和稀疏注意力等技术显著加速大语言模型的推理速度?
  • JVM 类加载器深度解析(含实战案例)
  • 有名管道的空间大小
  • [实现Rpc] 消息抽象层的具体实现