之前文章《智能原生:AI蓝海世界的关键钥匙》等里面提到过几次智能原生,普遍反馈是有点不好理解。 大概是因为AI削薄了业务、产品、技术之间的边界,至少在现阶段很难像过去那样把这几者弄得泾渭分明,然后各研究各的,也能成为一个专业领用。想弄清楚就得一会在业务(领域模型)、一会在产品、一会在技术,来回贯穿,所以很麻烦(过去其实也是,没有网络的技术特征,哪里会有互联网思维)。 这次我们用一个例子来说明AI应用的各个关键环节。 假如我们真想像某些开源项目那样,构建一个百分百基于AI的公司,那到底都需要干什么?又需要几个步骤? 当然,我们这不是个技术文章,最后还是要回到这种新的应用形式到底要匹配什么样的思维模式,能够创造什么样的价值。 从自己到底想要干什么开始 现实前提是现在的大模型到不了你和它说一句:给我干一个只有AI的公司,它就把活干了的程度。 大模型很像一个有纯粹智商的瓮中之脑,所以要干什么,怎么干都需要人做引导和价值判断,从类似赚不赚钱、有没有趣这类视角做设定。 所以,所有的工作就简化成两部分:你输入给这个瓮中之脑(大模型)什么,它回复了你什么? 最终智能的效能=瓮中之脑(大模型)的智商x现实的理解纵深(表现为prompt)。 现在假设目标干个只有AI的软件公司,这个公司里面除了你全是智能体,你和它说几句话,它就帮你把软件干出来了。 我们看看这事怎么干。 需要注意的是,这个产品是个应用,但也是个公司。 因为是个公司,所以第一步要对软件公司以及软件产品开发这件事进行分解,这样才能构建好需要让大模型理解的东西。 这是业务也是产品。 先是要分解过程,为了简化我们这里假设就三个步骤:弄清楚要干什么(需求分析),把软件开发出来(开发和评审),测试发布。 也要分解到底需要几个角色,比如要有个老板拍板,它要负责发起决定干不干;要有产品经理,它要负责确定产品到底干成什么样;要有程序员,它负责把代码写出来并且进行CodeReview;要有测试,他负责验证写出来的产品行为是不是对的。 只有角色还不能充分描述我们的业务(软件开发),还要有过程和活动。 过程再加上特定的活动(比如任务)负责把角色串起来,让他们彼此配合完成特定的目的。 单有过程(决定了推进持续),角色(决定有事的时候谁干什么)也还是不够的,还要有数据的描述,比如当前的任务是什么,每个角色上一步的输出是什么等。 这些设定比较清楚之后,就可以进入下一步,打造不同的智能体。 上面这个就是人对领域的设定,也可以认为是经常说的领域模型。其实有N种解法,而解法本身的选择和价值判断有关。 领域模型连接价值判断和瓮中之脑的纯粹智商(大模型)。 这种对领域的分解有什么意义呢? 简单可以理解成:为了更好的全自动的和瓮中之脑(大模型)交互。 既然就说一句话不行,比如给我生成一个XX软件产品,瓮中之脑的智商又够了,那就需要让它清楚现实,好发挥它的智力。 而需要输入能给它带来真实的变化的,这种变化需要一种管理体系,这个管理体系需要依赖领域模型(过程、角色、活动、数据等)。 这部分因为作为瓮中之脑的大模型只认识提示词,所以不管你干了多少事最终都要变成它能更好理解的提示词(当然你可以很长)。 另一部分目的则是重用这些约定俗成的词,比如程序员,比如产品经理。每个词后面其实折叠了很多细节。现在的模型是基于人类累积到现在为止的知识训练出来的,所以这些词背后约定俗成的意义也被包含在模型里面了,不需要重头解释每个词了。这也能提高和大模型的交互效率。 上面的工作做完了,就到了第二步,打造不同的Agent。 这一步很诡异的是确实主要是技术的活,但本质却不是。由于这不是一个技术文章,我们就简略一些做描述,还是只关注它和过去的差异。 打造不同Agent 一个方法是不做抽象就按角色做出一个个Agent,比如总经理的Agent、程序员的Agent。Agent里面要有自己对应的基础提示词,还要有按照执行时间点填充的实时信息,比如: 你是谁,要干什么;要有当前的阶段描述,比如现在的需求分析阶段,有哪些事要做;要有一定的记忆,比如我上一轮到底说什么了,我产出的代码是什么等。 当然也可以抽象一点,按职能来分,比如代表任务的Agent,代表对话的Agent等。 之后任务的Agent要调度各种角色。 真做的话,里面会包含很多细节,比如检查生成的代码是否合适这一环节,那要检查多少轮次才算合格呢? 但基本定位就是声明自己的角色、以及当前活动的上下文、当前活动的目标。 这里举个简单例子:比如ChatDev把程序员和CodeReviewer角色的prompt弄成了下面这样({}里面的部分是要根据执行时的情况填写的)。 'Programmer':[ '{chatdev_prompt}', 'YouareProgrammer.wearebothworkingatChatDev.Weshareacommoninterestincollaboratingtosuccessfullycompleteataskassignedbyanewcustomer.', 'Youcanwrite/createcomputersoftwareorapplicationsbyprovidingaspecificprogramminglanguagetothecomputer.Youhaveextensivecomputingandcodingexperienceinmanyvarietiesofprogramminglanguagesandplatforms,suchasPython,Java,C,C++,HTML,CSS,JavaScript,XML,SQL,PHP,etc,.', 'Hereisanewcustomer'stask:{task}.', 'Tocompletethetask,youmustwritearesponsethatappropriatelysolvestherequestedinstructionbasedonyourexpertiseandcustomer'sneeds.' ] 'CodeReviewer':[ '{chatdev_prompt}', 'YouareCodeReviewer.wearebothworkingatChatDev.Weshareacommoninterestincollaboratingtosuccessfullycompleteataskassignedbyanewcustomer.', 'Youcanhelpprogrammerstoassesssourcecodesforsoftwaretroubleshooting,fixbugstoincreasecodequalityandrobustness,andofferproposalstoimprovethesourcecodes.', 'Hereisanewcustomer'stask:{task}.', 'Tocompletethetask,youmustwritearesponsethatappropriatelysolvestherequestedinstructionbasedonyourexpertiseandcustomer'sneeds.' ] 把阶段的Prompt模板弄成了下面这样: 'Coding':{ 'assistant_role_name':'Programmer', 'user_role_name':'ChiefTechnologyOfficer', 'phase_prompt':[ 'Accordingtothenewuser'staskandoursoftwaredesignslistedbelow:', 'Task:'{task}'.', 'Taskdescription:'{description}'.', 'Modality:'{modality}'.', 'ProgrammingLanguage:'{language}'', 'Ideas:'{ideas}'', 'Wehavedecidedtocompletethetaskthroughaexecutablesoftwarewithmultiplefilesimplementedvia{language}.Asthe{assistant_role},tosatisfythenewuser'sdemands,youshouldwriteoneormultiplefilesandmakesurethateverydetailofthearchitectureis,intheend,implementedascode.{gui}', 'Thinkstepbystepandreasonyourselftotherightdecisionstomakesurewegetitright.', 'Youwillfirstlayoutthenamesofthecoreclasses,functions,methodsthatwillbenecessary,aswellasaquickcommentontheirpurpose.', 'Thenyouwilloutputthecontentofeachfileincludingcompletecode.Eachfilemuststrictlyfollowamarkdowncodeblockformat,wherethefollowingtokensmustbereplacedsuchthat'FILENAME'isthelowercasefilenameincludingthefileextension,'LANGUAGE'intheprogramminglanguage,'DOCSTRING'isastringliteralspecifiedinsourcecodethatisusedtodocumentaspecificsegmentofcode,and'CODE'istheoriginalcode:', 'FILENAME', '```LANGUAGE', ''''', 'DOCSTRING', ''''', 'CODE', '```', 'Youwillstartwiththe'main'file,thengototheonesthatareimportedbythatfile,andsoon.', 'Pleasenotethatthecodeshouldbefullyfunctional.Ensuretoimplementallfunctions.Noplaceholders(suchas'pass'inPython).' ] } 对这个步骤做简单总结就是下面这两点: 最终目标都是要形成一段话(prompt)在不同的步骤上用(现在的大模型只认这个); 这段话是变的。 每次需要根据不同的执行状态做出调整。 这和人其实差不多,人也是每次接受不同的信息(按角色),然后给出自己的判断和理解。 这就是为什么之前总说,这次大模型的核心进展是概念理解和判断能力,没有这个,这种智能体跑不起来。 这步看着确实是技术的活,但底子其实不是。 程序员的角色是提高效率,但从本质上看,这事行不行,能搞到什么程度,不是程序员能验证的。 程序员解决效率问题,但理解领域的人才能判断上限。(智能效能=大模型的智商高度x现实理解的纵深) 也就是说,过去说的图灵测试2.0的判断人不是程序员,甚至都不是人工智能科学家,而是理解领域的人要自己操练大模型做判断。要在这个背景下去理解角色中心式计算和图灵测试2.0。 随着使用深入肯定发生角色的重新定义,而角色的重定义等也不是技术能定义的事(参见:AI的脉络:非共识时刻的认知价值)。 启动整个公司 上面这些都做完以后,就需要把整个软件公司启动起来。等着外面的输入。 这个公司里有很多智能体,还保留了一个可以对话的入口。 比如可以和它说,帮我做一个TODO的小应用(和真正的公司很像,你说一句,然后一堆人就把活干了)。 启动程序就需要按照指定过程,先需求再开发然后测试发布,依次给每个角色分配任务,直到最终认为产品合格了,再把产品发布出来。 这时候,最终的公司就变成了这样: 一个人:决定到底要干什么软件产品。用什么样的过程,用几个角色,每个角色到底负责什么。 不同角色的智能体:每个的产出可以是一个阶段性成果,也可以是代码,当然复杂了也可以是美工的图,图标等。扩展起来还可以加上蜘蛛爬取某些实时的网上信息,让配图等更符合最新的风格。 公司就是应用,应用的边界也就成了公司的边界。 从公司角度看,和过去不一样的点是什么呢? 大量的智能体在干活,人只做原则设定。 从应用的角度看和过去比,不一样的点是什么呢? 这个应用在一个大边界下,你可以给它设定任何目的,什么软件都能开发。过去要依赖平台化才能张开自己的任务种类,现在都靠AI。 智能原生公司 基于这个例子,我们可以进一步总结一些关于AI智能应用的关键特征: 第一,和领域相关的部分是人的活。 这部分拆分未来可能模型能做一部分,但是在众多变量里面判断哪部分有价值,比如到底干什么,什么样才叫合格等估计一直是人的部分。也许方法论部分(比如什么过程等)未来可以模型干,但现在模型干这个费劲。这是边界问题。 第二,这种应用是按角色来的(角色中心式计算)。 比如程序员的角色可能需要调用一大堆工具Git、Python等才能完成自己的职责。但这些最终要变成提示词(prompt)才能驱动自己的活动。每个角色到底能不能成立,要看图灵测试2.0能不能过。 很多时候可能物理约束大于智能约束。我们这个例子里面没有物理约束(比如把汽车从北京开到苏州)。 所以智能原生化估计得从这类领域先开始。 第三,需要很多的配套措施。Agent要记住自己说了什么,要知道当前在干什么等,这需要一套完备且繁琐的机制。写程序似乎只需要记录代码就完了,但真正的公司需要汇总业务、财务等各种数据,并且保证数据精度。这一步成本很高,挑战很大。 第四,工作什么时候算完成了是个问题。产出内容到底合适不合适,幻觉了怎么办等,都是关键制约。放回到具体场景下智能和想象中的智能好像说的是一个东西,其实是两码事。所以之前我们说纯数字和幻觉本身不对应过大成本的领域会优先。 过去琢磨事对此进行了一些总结,比如把公司的智能原生式思维提炼为:智能优先,万物皆、实时反馈、中心决策。这在上面这种应用的基础上可能更好理解。 模型的技术特征决定了需要与之匹配的思维模式(参见:从1到10:AI产品和互联网产品的核心差异)。 是普通人的机会么? 上面这个过程看着需要写代码驱动,但本质上并不是一个技术问题。不写代码顶多就笨一点,一步一步写一堆提示词。代码可以让整个事串起来更自动一些,影响效率,不影响价值。 所谓的领域,还真不是模型和代码能概括的事。 也就是说把瓮中之脑的能力用起来正需要理解领域的普通人(不是AI科学家)。 所以理论上,这是普通人的机会,但现在关键问题不在这里,而是你把智能放到自己想的那个场景下,它不一定创造价值。 这是判断的关键。 同时这也暗示了一个很多人都关心的问题的答案:AI会取代对应的岗位么? 这是个必然发生的事。 回到基础公式:智能效能=模型的智商x现实理解纵深,就会发现这事取决于模型自身的发展,也取决于给它适配的对现实进行理解的系统(Agent)。在上面那个但上面软件公司里也还是要人的,只不过这个角色所需要的能力发生了巨大变化。 小结 最后要强调的是上面这个过程,做着玩是可以的,但不能创业。做领域拆分然后判断智能高度,这点会看得比较清楚。也就是说现在的技术成熟度不匹配合适的商业价值。但这不影响这趋势本身,模型的基本为此提供了源源不断的动力。理解这种基础原型其实提供了一个发现的视角和眼睛。地球上有石油已经亿万年了,但只有当嵌入到工业革命的上下文后,它才是财富,所以能看到新现实的新视野还是关键的。 |
|