如何将LLM应用落地实施?

摘要:背景 自ChatGPT诞生以来,各个企业都开始尝试引入LLM落地实施“智能”应用,而目前并没有太多文章系统地介绍应该怎么落地实施一个基于LLM的应用,到底应该做哪些步骤。本人从2023年12月份开始,陆陆续续开发了3个LLM应用的项目了。这
背景 自ChatGPT诞生以来,各个企业都开始尝试引入LLM落地实施“智能”应用,而目前并没有太多文章系统地介绍应该怎么落地实施一个基于LLM的应用,到底应该做哪些步骤。本人从2023年12月份开始,陆陆续续开发了3个LLM应用的项目了。这几个项目都是会话型的应用,都借助了LLM的能力,所以想趁着记忆还算新鲜,来总结一下这类项目的一些落地实施经验。最后面我会以最近的一个项目做的事情来作为案例,供大家学习和探讨。 LLM应用的简介 LLM应用的场景 在了解怎么去落地实施LLM应用前,我们最好先看看它一般长什么样。LLM的能力本质上可以算是传统NLP任务的升级版,在问了LLM传统的NLP(Natural Language Processing,自然语言处理)任务按照应用场景划分有哪些之后,它给了我一个比较完善的答案: 文本分类 (Text Classification): 将文本划分到预定义的类别中(如垃圾邮件过滤、情感分类、主题分类等)。 信息抽取 (Information Extraction): 从非结构化文本中提取结构化信息(如事件抽取、知识图谱构建等)。 文本生成 (Text Generation): 根据输入生成自然语言文本(如机器翻译、故事生成等)。 对话系统 (Dialogue Systems / Chatbots): 与用户进行自然语言交互的系统。 问答系统 (Question Answering): 根据用户提出的问题,从文本或知识库中找到答案。 机器翻译 (Machine Translation): 将一种自然语言的文本自动翻译成另一种自然语言的文本。 文本摘要 (Text Summarization): 生成文本的简洁概括。 自然语言推理 (Natural Language Inference, NLI): 判断两个给定句子之间的逻辑关系(如蕴含、矛盾、中立)。 文本编辑 (Text Editing): 自动修改和改进文本,如语法纠错、风格优化等。 我稍微进行了整理: 信息抽取任务: 实体提取 关系提取 知识图谱构建 无反馈信号的生成类任务: 文本摘要 文本编辑 机器翻译 故事生成 有反馈信号的生成类任务: 代码生成 SQL生成 分类任务: 主题分类 情感分类 垃圾邮件过滤 自然语言推理 问答系统: 问答系统 对话系统 对话系统 LLM应用的分类 可以看到前面几类场景我都给加上了“任务”二字,这里可以引出我对于LLM应用的分类,分别是会话型应用和任务型应用。会这么划分也是因为在这些项目上见识到了会话型应用的“复杂性”,在落地实施项目前,对项目复杂性的理解也能帮助我们去规划和设计我们的项目。 任务型LLM应用 我对于任务型LLM应用的定义是:该应用没有一个用户可以对话的入口,应用的输入来自系统数据。 这类应用的基本特征包含: 输入数据的复杂性比较低:输入的数据形式、分布基本上是确定的。 都是批处理:批处理一般能节省成本(各大提供LLM API的厂商大多针对批处理任务提供了一定量的优惠;本地模型对于批处理任务也能提供更高的吞吐、更好的资源利用)。 响应时间没有严格要求:一般批处理都是在固定时间段统一执行的,只要能在一个大的时间窗口执行完就行,不太需要考虑响应时间的限制。 任务会分多阶段:只要应用稍微复杂一点,单次LLM的调用就没法完全满足应用的需求了,就需要拆分小任务,进行多次的LLM调用。 我做过的比较典型的该类应用大多是和信息抽取相关的,比如: 在客服场景下,从一堆电话信息中抽取关键的信息来帮助客服能快速回忆起上一通电话的内容。 通过信息抽取,来构建知识图谱,辅助提升问答质量。 会话型LLM应用 我对于会话型LLM应用的定义是:该应用的唯一入口是聊天框,应用的输入来自用户的任意文本。 这类应用的基本特征包含: 输入数据可以极其复杂:源自自然语言的开放性和复杂性,用户的输入可以千奇百怪,在上生产之前,你都想象不到用户会输入哪些离谱的内容。 会涉及到复杂的对话上下文:由于给了用户一个聊天框,就涉及到了上下文的信息,可能会出现用户进行指代、省略、意图切换等等复杂情况。 响应时间要尽可能短:由于是直接面向用户的,所以响应时间直接影响了用户体验,通过流式输出可以缓解一部分压力,但是整体的响应时间还是要尽可能短。 用户能参与完成任务:值得庆幸的是,在这类应用中,用户可以作为系统的一部分,帮助补充信息,也能进行纠错。 会话型LLM应用的分类 而会话型LLM应用也可以继续划分成3类: 任务型:和任务型LLM应用类似,主要就是去执行各种任务的;不同点是,它的输入来自用户。
阅读全文