大语言模型应用的业务架构点

news2024/9/22 15:33:39

背景

在国内某小龙干了一段时间了,困于时间、资本、人力等等原因,其实应用在工程侧的业务架构建模并没有做好。但是,随着业务迭代和读论文,对于大语言模型的应用(自认为)有一定的认知了,那么业务建模或者架构的重点是可以梳理一下的了。主要关注业务逻辑和前端的架构(我负责的部分)。

整体认知

  1. AGI不一定是单一模型搞定一切。短期更可能是在多个垂类模型前加一个路由。这个路由可能是意图模型,也可能是MOE的gate。但是,这些都应该反馈到工程侧,形成一定的路径差异。在模型规模/能力远超现在的大小之前,组合小模型会比单一模型的效果好很多;只有要求极强的迁移能力时,单一巨型模型才是合理的。
  2. 接1,有一些意图是应该让用户主动选择的(豆包等的智能体中心很大一部分是在明确意图而不是选模型能力)。
  3. 不同形态的问题,执行的逻辑是不一样的,pe的逻辑也是不一样的。
  4. 输出部分不一定是和模型本体耦合的,而是可以以风格、功能来做特殊训练和插拔的(ChatGPT的json api)。
  5. 特殊token一定是后面做工程化中极为重要的手段,而且是要求从业务需求角度出发,反向向模型训练数据中插入大量的业务化token。
  6. 模型的应用开发流程大概是:模式定义->生成对应的数据->ft->测评,跟传统应用开发能对应上:产品定义->技术设计->coding->测试。

PE认知

PE是为了治疗模型的智障。智障来源于问题不清晰、思考不正确、信息不全、迁移和杂糅等。解决问题主要几个路径:

  1. x-shot这种想办法给例子的。
  2. COT这种引导模型多思考的,这里会有COT这种单路径的,也有TOT这种多分支的,还有ReAct这种。
  3. tooling。
  4. 反思,包括多条的选择(self-consistency)和单条内的修改(reflection)。
  5. 分而治之,planner类或我的POT bot。
  6. 整合,包括多种角色的(ChatDev)、多种知识背景的或者只有超参差异的(ER)。

可能出现的非传统流式形态

最传统形态就是模型一个文本流直接展示到端上,只做一些展示上的优化。

  1. 隐藏模型输出。对于COT、ReAct这些方式,模型输出的很大一部分是思路,这些思路又一定要输出(模型不会思考,只是next token)。所以标记(特殊token)和隐藏这些内容是非常重要的工程能力。
  2. 结构化思考过程。planner、POT这种,甚至人肉的chain规则,这些都是有可能被以结构化的方式来展示的。这些展示的合理、巧妙能极大的提升产品体验。包括了特殊token、特殊格式的规定和展示;chain的建模(openai assistant api的run-step)。
  3. 方法调用。这个包括了后端、前端的方法调用。之前文章的微服务部分简单提到过。细化下来,需要有一个双工长信道来做IPC,传统的trunk或者sse其实都不如websocket靠谱(经典面试题,如何设计跨语言的callback)。同样可以适配到run-step的体系下。
  4. 多流。所有整合类的模式,都需要多流的展示,因为所有这种模式如果只输出整合步骤的内容,首token时间会让产品直接不可用。
  5. 修改。流的每个部分都是可能被重新生成的(reflection)。需要有一个地方持有当前流内容、每段内容用特殊token标记出来,模型的反思以“将token1之后的内容替换为xxx”的形式输出。这里的替换直接反馈到流本体上。注意这里和隐藏输出会有交错,潜在bug会很多。

关键点

  1. 意图分流,以及对于意图->推理过程的管理。以及遍布产品形态内部的意图明确方式:比如重新生成时询问意图、生成样式等。意图作为核心context存在于整个产品生命周期中。
  2. 插件化,两级插件化:特殊token作为纯文本标记,调起特殊逻辑;run-step中的step,直接在流式中打断纯文本行为。
  3. 流累积和管理,不只是端需要做累积+展示,而是后端需要完整管理模型输出,且可能出现全量replace的情况。
  4. 双向流。websocket,这里有个不太懂的,是不是一分钟左右的websocket是不是工程上合理的。
  5. 流式信息样式的极大复杂化。特别是可能会出现各种浮层/子页面+浮层内流式输出的case,毕竟多流直接在正常流式中输出肯定是各种问题的。还要做飞书聊天卡片量级的卡片内样式的横向扩展的设计。

与前端无关的

  1. x-shot的选取和推荐。根据用户反馈、任务相似度、用户相似度做例子的选取(面向模型的推荐系统),以期大幅提高模型回答满意度。
  2. 部分模型层的插拔。以按照用户喜好切换输出模式(面向用户的推荐系统)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity设计模式】Unity MVC/MVP架构介绍,及MVC/MVP框架的简单应用

文章目录 什么是MVC?MVC眼花缭乱设计图MVP和MVC最经典的MVC的业务流程Unity MVC 框架示例1. 创建项目结构2. 实现模型3. 实现视图4. 实现控制器5. 使用示例 总结参考完结 什么是MVC? MVC自1982年被设计出来,至今都有着很大比重的使用率&…

前端项目代码开发规范及工具配置

在项目开发中,良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。 项目规范及工具 集成 EditorConfig集成 Prettier1. 安装 Prettier2. 创建 Prettier 配置文件3. 配置 .prettierrc4. 使用 Prettier 集成 …

python--基础语法(2)

1.顺序语句 默认情况下,Python的代码执行顺序是按照从上到下的顺序,依次执行的。 2.条件语句 条件语句能够表达“如果 ...否则 ...”这样的语义这构成了计算机中基础的逻辑判定条件语, 也叫做 分支语句。表示了接下来的逻辑可能有几种走向…

HOSTS文件劫持--导致笔记本网络卡顿

写在前面: 因为笔记本网速卡顿,去维修店维修网卡,网卡咱们测试都没有问题,一直吐槽售后服务一般。自己也装过几次系统了 点击任务栏中的搜索图标,输入"cmd",点击"命令提示符"选择&qu…

笔记整理—内核!启动!—linux应用编程、网络编程部分(2)linux的文件管理策略

关于硬盘中的静态文件与inode:例如文件存储在扇区中,一个文件占用10个字节,一个扇区为512字节,这样的情况下一个扇区就只放了一个实际为10字节的文件,余下的502字节不可存放其他文件,因为扇区已经是可以访问…

C++入门(07)标准输入输出_cin

文章目录 4.cin4.1 基本功能4.2 常见数据类型的输入4.3 cin多项输入中的分隔符如果需要将空格作为输入的一部分读入 4.4 使用 cin 一次读取多个整数方法一方法二 接上一篇 cout C入门(07)标准输入输出_cout、缓冲、\n endl 4.cin 4.1 基本功能 C 标准输入 cin 是一个控制台输…

LLMs之MemLong:《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读

LLMs之MemLong:《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读 导读:MemLong 是一种新颖高效的解决 LLM 长文本处理难题的方法,它通过外部检索器获取历史信息,并将其与模型的内部检索过程相结合&…

IPsec-VPN中文解释

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…

C#测试调用PdfiumViewer浏览PDF文件的基本用法

印章管理项目后续准备实现打开浏览PDF文件并进行盖章的功能,需要在Winform中使用控件在线浏览PDF文件,在网上找了几个开源的PDF浏览控件进行测试,以便应用于印章管理项目。本文测试调用PdfiumViewer模块打开及浏览PDF文件。   PdfiumViewer…

VisionPro - 基础 - 模板匹配技术和在VP中的使用 - PMAlign - PatMax(4)- 控制模板的匹配

前言: 针对PatMax 的高级应用和原理,在这一节继续进行说明:这一节主要考虑的是PatMax模板匹配的原理:如何控制模板的匹配。 本节先介绍了几个模板匹配的衡量标准,比如模板匹配分数,和模板的几种模板匹配的…

JAVA并发编程系列之Semaphore信号量剖析

腾讯T2面试,现场限时3分钟限最多20行代码,模拟地铁口安检进站。其中安检入口10个,当前排队人数是100个,每个人安检进站耗时5秒。开始吧! 候选人,心中万马奔腾!!!吐了一口82年老血&am…

re题(37)BUUCTF-[GWCTF 2019]xxor

BUUCTF在线评测 (buuoj.cn) 用ida打开文件,ctrle定位main函数 也可以用shiftF12查找字符串,找与我们解题有关的字符串 通过字符串定位到引用字符串的函数 进入main entry 但还不是我们要分析的代码 进入__libc_start_main中的main参数,是我们…

C++20 std::format

一、前言 1、传统 C 格式化的问题与挑战 可读性差:使用 C 中的 printf 和 scanf 家族函数进行格式化输出和输入时,它们的语法较为复杂,难以阅读。在较大的代码项目中,可读性差会导致维护困难。类型安全性差:printf 和…

IS-ISv4/6双栈

文章目录 IS-ISv4/6双栈实验要求配置 IS-ISv4/6双栈 实验要求 配置双栈 R1、2、3、4配置 IS-ISv4 和 IS-ISv6,配置IPv6多拓扑 上面为Level-1类型、中间为Level-1-2、下面是Level-2类型 还有就是说ATT位置1有一定要求连接L1/2连接L1或者L2类型路由器,至…

java23发布啦

2024年9月java23发布啦!!! JDK 23 提供了12 项增强功能,这些功能足以保证其自己的JDK 增强提案 - JEP ,其中包括 8 项预览功能和 1 项孵化器功能。它们涵盖了对 Java 语言、API、性能和 JDK 中包含的工具的改进。除了 Java 平台上…

KVM环境下制作ubuntu qcow2格式镜像

如果是Ubuntu KVM环境是VMware虚拟机,需要CPU开启虚拟化 1、配置镜像源 wget -O /etc/apt/sources.list https://www.qingtongqing.cc/ubuntu/sources.list2、安装kvm qemu-img libvirt kvm虚拟化所需环境组件 apt -y install qemu-kvm virt-manager libvirt-da…

安装黑群晖,并使用NAS公网助手实现DDNS动态域名解析

很多人都会安装安装一个黑群晖进行练手,黑群晖有很多玩法和NAS套件,而且黑群晖安装比较简单,没有复杂的步骤,这也是很多人玩黑裙的理由,这里教大家如何安装黑群晖,并且安装神卓互联NAS公网助手实现DDNS动态…

arthas -- xxljob本地调试

方案一:测试类 package cn.wanda.wic.content.job.xxljob;import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;SpringBootTest public class ShopResourceMigrationJobTest {Reso…

C\C++内存管理详解

本次内容大纲: 1.C/C内存分布 大家看看下面的代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";char* pChar3 "abcd";int…

本地快速部署一个简洁美观的个人Halo博客网站并发布公网远程访问

文章目录 前言1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 前言 本文主要介绍如何在Cen…