大模型应用设计的10个思考

技术不是万能的,但没有技术却可能是万万不能的,对于大模型可能也是如此。基于大模型的应用设计需要聚焦于所解决的问题,在自然语言处理领域,大模型本身在一定程度上只是将各种NLP任务统一成了sequence 到 sequence 的模型。利用大模型, 我们是在解决具体的生产和生活中的问题,产品和技术上的设计仍然不可或缺。

那么,如果大模型正在重新构建软件工程的未来,我们是否应该遵循一些基本原则呢?

da6bf11f4d99d45d9151fa94545b9b97.jpeg

1. 模型优先,持续迭代

如果模型能做到的是事情,就不要写代码;模型会变得更好,但代码不会。

在当今的时代,模型的价值日益凸显。与传统的编程方法不同,现在的开发思路更倾向于“模型优先”。这意味着,当我们面临一个问题或任务时,我们首先应思考是否可以利用现有的模型来解决它,而不是立刻着手编写代码。因为代码是固定的,而模型有着巨大的发展空间。随着时间的推移,模型强大的学习和适应能力能够在不断的迭代中自我优化和进步。因此,我们的首要任务是发掘模型的潜力,让它成为我们解决问题的利器。

对于整个系统而言,目标是利用LLM的规划和理解意图的能力,以此来构建高效的项目。在这个过程中,我们可能会受到诱惑,想要回到那种命令式的思维模式,为程序的每个细节编写代码。但是,我们必须抵制这种诱惑,在一定程度上,现在可以让模型可靠地做一些事情,随着模型的发展,它会变得更好、更健壮。

937b4b7f5a3a86a0932f3f1e987d3e78.jpeg

2 权衡精准性,采用交互进行消歧

利用权衡杠杆换取精准,使用交互来缓解模糊。使用LLM进行编码时的正确心态不是“让我们看看我们能让跳舞的熊做什么”,而是从系统中获得尽可能多的杠杆作用。例如,可以构建非常通用的模式,如“从数据库构建报告”或“教授一年的科目”,这些模式可以通过纯文本提示进行参数化,从而轻松产生非常有价值和差异化的结果。

在追求高精准度的同时,我们必须权衡其与其他因素之间的关系。为了达到这种平衡,我们可以引入交互的方式,来消除可能出现的歧义和误解。这种策略不仅提高了精准性,还增加了操作的灵活性和效率。

在使用LLM进行编码的过程中,关键的心态不应该是“试试看能做什么”,而应该思考如何从系统中获得最大的杠杆效应。这意味着,我们不应仅仅满足于简单的功能实现,而是要深入挖掘系统的潜力,让其为我们创造更大的价值。

实际应用中,我们可以构建一些通用的模式。比如,“从数据库生成报告”这样的模式,它具有很强的适应性,可以通过简单的文本提示进行参数调整,从而应对各种需求。再例如,“教一年的深度学习课程”这样的模式,它整合了丰富的教育资源,同样可以通过交互方式轻松调整,满足个性化的教学需求。

通过这些通用模式的应用,不仅提高了工作效率,还能轻松产生有价值、与众不同的结果。这种权衡精准性与交互消歧的策略,无疑是基于大模型应用设计中的重要思维方式。

c9961f891f952fb87e8c9df0e69528f6.jpeg

3 代码用于语法和过程,模型用于语义和意图

在现代编程领域,代码和模型之间的分工变得越来越明确。简而言之,代码主要负责语法和过程的实现,而模型则专注于语义和意图的生成与解读。这种分工在实际应用中有多种表达方式,但核心思想是一致的:代码是用来执行特定指令和流程的工具,而模型则用来解读、生成和推理语言的深层含义和目标。

从根本上说,模型在推理语言的意义和目标时表现出色,相形之下,当它们被要求执行特定的计算和过程时,往往表现得不如代码。例如,一个高级模型可能很容易为求解数独编写代码,但如果让它自己亲自去解数独,可能就会变得相对困难。

每种代码都有其独特的优势,关键在于针对特定的问题选择最适合的工具。语法和语义之间的界限,正是大模型应用设计的主要挑战。在这个背景下,我们需要更深入地理解代码与模型各自的优缺点,以便更为有效地利用它们解决问题。

ea642e9453343166350ad796183a3005.jpeg

4 避免脆弱性,摒弃硬编码

在构建任何系统时,一个不可忽视的事实是,系统的整体强度往往由其最脆弱的部分决定。这一观点不仅适用于传统的软件系统,对基于大模型的应用同样适用。

在追求系统灵活性和高效性的过程中,特别要避免硬编码。硬编码指的是将特定的值或逻辑直接写入代码,而不考虑未来的变化或扩展。这种做法在短期内可能带来便利,但长期来看,会导致代码僵化,难以维护。因此,我们应该在代码和算法中加入更多的推理和灵活性。

当设计提示语和交互时,应该尽量让其包含足够的信息和逻辑,以便系统能够自主地进行决策和推理,而不是简单地执行预定义的命令。通过这种方式,不仅可以减少硬编码的使用,还能更好地利用LLM的能力,让系统更加智能、更加灵活。

2f45acc05e703fccb41932e04c46e979.jpeg

5 数据质量至上,LLM的应用与高质量数据息息相关

大模型确实展现出了非凡的能力,如同“受过良好教育的”个体,但在实际应用中,它们仍然缺乏某些背景和主动性。

简单来说,如果你向这些模型提出一个简单或开放式的问题,它们会给你一个简单或通用的答案。这种答案可能缺乏深度或细节,无法满足所有需求。如果希望得到更为详尽和深入的答案,那么提问的方式和策略就需要更为明智。

这其实是“Garbage in,Garbage out”原则在人工智能时代的一种体现。无论技术有多么先进,输入的数据质量仍然至关重要。如果输入的数据是模糊、不准确或不完整的,那么模型输出的答案也可能同样如此。

因此,为了确保LLM模型能够给出高质量、有深度的答案,需要确保输入的数据是准确、详尽且上下文丰富的。这也意味着,数据质量仍然至上。只有重视并确保数据的质量,才能期望从这些先进的模型中获得真正有价值、有深度的信息。

abe540662650872ecd3890f09acce609.jpeg

6 把不确定性视为异常

每当模型遇到不确定的情况,我们不能简单地忽略它或给出一个模糊的答案。相反,我们应该依赖于与用户的互动意图来澄清这种不确定性。

在程序设计中,当一组嵌套的提示中存在不确定性时——比如一个提示的结果可能有多种解读,我们应采取一种类似于“异常抛出”的策略。这意味着,应该将这种不确定性传递到堆栈中的更高级别,直到到达一个可以与用户交互或澄清不确定性的层级。

这样的设计策略可以确保了程序在面对不确定性时能够做出适当的回应,从而提供更为准确和可靠的结果。

4895e600603f34cc4bbf3369fd631636.jpeg

7 文本作为通用协议

文本已然成为了一种通用协议,这主要归功于LLM对于自然语言、意图和语义的出色解析能力。因此,文本成为了在提示语、模块以及基于LLM的服务之间传递指令的首选格式。

尽管自然语言在某些应用场景下可能略显不精确,但相较于其他结构化语言(如XML),其优点在于简洁、直观且易于人类理解。当然,对于那些需要高度精确和结构化的任务,仍然可以少量地采用结构化语言进行辅助。但多数场景下,自然语言在传递指令和意图方面表现得相当出色。

更为值得一提的是,随着这些基于LLM的普及和进步,文本作为一种“未来证明”的自然交互方式,将进一步促进不同系统、不同提示之间的互通与理解。如果两个完全不同的LLM服务都能够理解和响应相同的文本指令,那么它们之间的协作和交互将变得如同人类之间的沟通一样自然、流畅。

将文本视为通用协议,不仅有助于我们更好地利用LLM的能力,也为构建一个更加智能、更加互通的应用程序打下了坚实的基础。

7f90bb9165907418b753f87b3a28d8d2.jpeg

8 复杂问题,分解操作

当面对一个复杂问题时,不仅对人来说是一个挑战,对大模型而言也同样如此。在实际应用中,如果我们直接将复杂问题的提示语作为程序的一部分,可能会遇到问题,因为我们真正需要的只是推理的结果。

为了解决这个问题,一种有效的方法是使用“元”提示。这种提示不仅可以给出问题,还能提供详细的答案,然后要求模型从中提取关键信息。这种方法的效果会很好,因为它实际上是将一个复杂的认知任务转化为了一个相对简单的任务。想象一下,如果给一个人一个“阅读这篇文章并找出答案”的任务,即使该用户没有相关领域的专业知识,他也很有可能完成这个任务,因为自然语言的力量是巨大的。

因此,在设计基于大模型的应用时,需要注意:对一个普通人来说很难的事情,对模型来说也可能同样困难。面对这种情况,最好的策略往往是将复杂的问题或任务分解为更简单的步骤。这样不仅可以降低处理的难度,还能提高答案的稳定性和准确性。

6afe6fd037ce17bdd5c040ec099246ba.jpeg

9.凡有控制,皆有模型

模型不仅是一种工具,它也可以成为我们对抗自身错误的利器。很多时候,我们容易将LLM(大语言模型)的运作想象成一个“头脑”的内部过程。然而,必须认识到,尽管模型与人类思维在某些方面有相似之处,但二者之间仍存在许多有意义的差异。

这其中有一个特点尤为重要:模型在短时间的交互中往往缺乏持久记忆。这意味着,模型在从一分钟到下一分钟的交互中,不太可能记住所有的细节。这一特点为我们提供了某种控制的可能性。

这种控制不仅限于代码审查。事实上,模型还可以作为代码的安全监视器,确保代码的运行安全;它也可以作为测试策略的一个组件,帮助我们制定更为有效的测试方案;甚至可以作为内容过滤器,协助我们生成高质量的内容。

因此,只要我们对模型进行适当的控制和引导,它就能成为我们工作中得力的“助手”。而这种控制的基础,就是我们对模型内部机制和特点的深入了解和掌握。

af295f9730f5f8fb4826ff4b007a6879.jpeg

10. 识别边界,不要认为大模型无所不能

大语言模型的能力确实令人惊叹,它们可以处理和解析大量的文本数据,生成有逻辑和连贯性的文本,甚至在某些任务上超越了人类的表现。然而,这并不意味着我们应该盲目崇拜这些大模型,认为它们无所不能。

事实上,大模型仍然存在着许多局限性和边界。尽管它们可以处理大量的文本数据,但它们并不能像人类一样真正理解语言和语境的细微差别。此外,它们的表现也受到训练数据和算法选择的限制,可能会出现一些偏见和错误。

因此,我们在使用大模型时,应该保持理性和谨慎的态度,既要欣赏它们所带来的便利和进步,也要警惕它们的局限性和潜在风险。这样,才能更好地利用这些模型,推动基于大模型应用的健康发展。

【关联阅读】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Webshell 访问 SQL Server 主机并利用 SSRS

本文将指导您使用RDS SQL Server实例的主机账号登录和管理SQL Server Reporting Services(SSRS)数据库。 背景信息 RDS SQL Server提供Webshell功能,用户可以通过Web界面登录RDS SQL Server实例的操作系统。通过Webshell,用户可…

一次重新加载所有 maven 项目产生的 OOM

1、解决什么问题? 忘了截图了,用文字描述就是由于Reload All Maven Projects导致的 OOM 异常。 2、尝试与解决 2.1、尝试 2.1.1、尝试清理idea缓存(无效) 2.1.2、重启idea(无效) 2.1.3、重启电脑&am…

硬件连通性测试对象与实施过程

硬件连通性测试是一种系统性的测试方法,用于验证硬件设备之间的连接、通信和协作是否正常。这包括各种硬件组件,如计算机、网络设备、传感器、打印机等。测试的目的是确保硬件设备在其设计和运行环境中能够正确地交互和通信。 一、硬件连通性测试对象 网…

Slurm集群管理系统

Slurm集群管理系统 Slurm(Simple Linux Utility for Resource Management,https://slurm.schedmd.com/)是一个开源的、容错的、高度可扩展的集群管理和作业调度系统,适用于大型和小型高性能计算(HPC)集群。…

憋了个大招_群发版

大家好,我是良许。 憋了个大招,兄弟们!我花了两个月的时间,搭建了一个自己的网站啦~ 不卖关子,网站链接为: www.lxlinux.net/e/ 网站首页截图如下: 这个网站全部都是关于嵌入式及…

【JavaWeb学习笔记】6 - Tomcat

项目代码 零、在线文档 Apache Tomcat 8 (8.0.53) - Documentation Index WEB开发 1. WEB,在英语中web表示网/网络资源(页面,图片,css,js)意思,它用于表示WEB服务器(主机)供浏览器访问的资源 2. WEB服务器(主机)上供外界访问的Web资源分为: 静态web…

动手学习深度学习-跟李沐学AI-自学笔记(3)

一、深度学习硬件-CPU和GPU 芯片:Intel or AMD 内存:DDR4 显卡:nVidia 芯片可以和GPU与内存通信 GPU不能和内存通信 1. CPU 能算出每一秒能运算的浮点运算数(大概0.15左右) 1.1 提升CPU利用率 1.1.1 提升缓存…

Vite4、Vue3、Axios 针对请求模块化封装搭配自动化导入(简单易用)

针对请求模块化封装搭配自动化导入(简单易用) 目标目录目标代码前提步入正题src / utils / index.jssrc /api / index.jssrc /api / request.jssrc /api / service.jssrc /api / utils.jssrc /api / modules / demo.js 自动化配置vite.config.jseslint 校…

2023中医药国际传承传播大会暨中医药图片和非遗艺术展隆重揭幕

由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会联合主办的“2023中医药国际传承传播大会”3日在广东省深圳市举办,“中医药国际传承传播图片展”与“非遗艺术展”在大会举办期间开展迎客。会议聚焦非遗健康、非遗传承等…

案例049:基于微信小程序的校园外卖平台设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端,局限性较高,有些问题看起来很小,但是初次接触很棘手,需要查找很多博客,内容也很杂。以下只是过程中总结下来的,要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

LeetCode:2646. 最小化旅行的价格总和(dfs + 树形dp C++、Java)

目录 2646. 最小化旅行的价格总和 题目描述: 实现代码与解析: DFS DP 原理思路: 2646. 最小化旅行的价格总和 题目描述: 现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号。给你一个整数…

团队git操作流程

项目的开发要求:(1)项目组厉员代码提交不少于20次 (2)项目组厉员每天提交不少于20次 (3)企业项目开发代码的每天的提交一般提交3-5次 (4)代码仓库的管理 git的基础操作流…

案例042:基于微信小程序的居住证申报系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

OpenCV-python numpy和基本作图

文章目录 一、实验目的二、实验内容三、实验过程Numpy1.NumPy 操作2.NumPy Ndarray 对象3.NumPy 基本类型4.NumPy 数组属性ndarray.ndimndarray.shapendarray.itemsizendarray.flags 5.NumPy 创建数组numpy.emptynumpy.zerosnumpy.ones 6.NumPy 从已有的数组创建数组numpy.asar…

【Python】Python读Excel文件生成xml文件

目录 ​前言 正文 1.Python基础学习 2.Python读取Excel表格 2.1安装xlrd模块 2.2使用介绍 2.2.1常用单元格中的数据类型 2.2.2 导入模块 2.2.3打开Excel文件读取数据 2.2.4常用函数 2.2.5代码测试 2.2.6 Python操作Excel官方网址 3.Python创建xml文件 3.1 xml语法…

HCL Domino 12系统管理员考试

大家好,才是真的好。 12月份的某一天,趁着风和日丽,天朗气清, 下了舍弃100多美金的狠心,在Pearson Vue官网上报了HCL Domino 12系统管理员考试的名 。时隔十五年后,骑着电动车风风火火地前往某一当地考试中…

AI Pika 生成进击的巨人动漫分镜案例

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级,包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画,动漫,卡通和电影风格。…

pytorch中的transpose用法

注意:维数从0开始,0维 1维2维…,负数代表从右往左数,-1代表第一维,以此类推 import torch import numpy as np# 创建一个二维数组 arr torch.tensor([[[1, 2],[3, 4]],[[5, 6],[7, 8]]]) print("原始数组:"…

深入理解 Java 虚拟机(JVM)从入门到精通

目录 一、JVM内存结构1、堆(Heap)(1)特点(2)堆内存分配(3)晋升到老年代的方式(4)堆内存检验方式2、虚拟机栈(VM Stack)(1&…