大模型(LLM)时代的开发范式
云知 · 3年前
大模型(LLM)时代的到来,给软件开发行业带来了巨大的变革,既有被淘汰的风险,也是大发展的机遇。作为软件开发行业的工程师们,或者正在进入,或准备进入的,必须要了解趋势大模型时代的开发范式(paradigm),这样,可以更好地面对未来,立于不败之地。
今天就观察到的LLM,LLaMa,Alpaca,HuggingGPT,AutoGPT,LangChain,Plugin,API,SDK,Programming,等等,和个人实践,来总结,分析和预见未来的开发范式。
先上结论,基于LLM的开发范式(paradigm):
### **Programming (Coding) -> API (SDK) -> Plugin (Command) -> Workflow (Meta) -> Application (Solution)**
LLM 给每一个环节提供无监督的自主智能(也就是说自我完成任务),或是提供有监督的辅助智能(也就是辅助人完成任务)。
接下来,具体阐述每一个环节,和LLM发挥的价值。
<strong>Programming (Coding)</strong>,这个,很多程序员,或是对编程有兴趣的人,估计都用过,或者听说过:
1. ChatGPT写(write)代码。只要你能把自己的需求说明白,ChatGPT就能按你的需求写出像模像样的代码。然后Copy & Paste,很多情况下都能顺利执行。
<br>
2. ChatGPT读(read)代码。把一段代码发给ChatGPT,它能给整体解释代码的作用。然后,还能一行一行地de给你注释,给解释每个函数调用的含义和标准。
<br>
3. ChatGPT审核(review)代码。把一段代码给ChatGPT,它能像个有经验的程序员一样,指出你代码的问题,和可以优化的地方。还能帮你发现代码中可能存在的bugs。
<br>
这里,ChatGPT只是LLM的一种指代,越来越多的大模型都渐渐具有这种Programming的能力。有公司就将这种能力做成了独立的服务或产品,直接集成到了IDE或其它开发工具中,最有名的是GitHub Copilot X。
个人使用的一些体会:
对一个新需求,ChatGPT能很快给出开发的程序框架,它知道的框架,包,库,SDK, 等,远远超出了一个程序员能掌握的范畴,能用程序员熟悉或是不熟悉的组件,快速完成搭建。如果没有它,要么要花时间去调研,去学习,去试用新的框架,包,库,SDK,等,要么等花精力去用基础代码实现。
有了大体的框架,然后,可以让ChatGPT,一个一个去完成具体的需求和实现Class和Method。由于LLM的context的限制,不管是4k还是8k tokens,都可能不足以让它一下写出整个系统。所以,还得程序员去架构,去Divide & Conquer。
遇到程序输出的错误信息,Copy & Paste到ChatGPT,它也能快速地告诉你可能的原因和修复的方法。经常会是对的,这样,也省了去StackOverflow去问了,或是去Google search。
但是,问题来了,ChatGPT喜欢捏造新的函数或选项,一旦ChatGPT搞不对,该怎么办?如果坚信ChatGPT能搞定,就会换着方式,不停地去问,不停地去尝试,也懒得花时间去搜索,去学习,往往浪费很多时间,这种方式,在一个小项目上就浪费了好几个小时,还无果而终。最后没有办法,还得去搜索,看文档,理解问题的机理,才能真正地把问题解决了。估计,这会是很多开发者的一种常态心理和经历,到底应该给ChatGPT多少时间才是一个平衡点。
<strong>API(SDK)</strong>,云上的服务,经常会包装成API,不管是RESTful,XML,JSON,还是私有格式。为了方便开发者使用,经常又会把功能或API包装成SDK。这样,只要import,include,静态动态link就能使用。
ChatGPT或LLM,你喂给它代码,或文档,它能快速的产生基于OpenAPI specification。或者你可以找自动化的工具来做,比如,Swagger。
ChatGPT给OpenAPI specification也加了限制,最多200个字符来描述一个API,最多200个字符来描述API中的一个参数。写描述的时候,也有很多建议的最佳实践。
经过这一步,原来有程序(Program)定义的服务(API),就变成了完全由自然语言来描述了,这种自然语言的描述,更容易被LLM来理解和使用。当然,也会有问题,鲁棒性,容错性,就是其中之一,代码通常是严格的精准的,而自然语言就经常会有模糊性,歧义。比如,一个参数错了,可能API就不能正常运行。
<strong>Plugin(Command)</strong>,是一种运行在平台上的有别于原始API提供者的程序或脚本,也可以称为Agent。简单的Plugin,可能是直接去调用某一个API,或是执行某一个函数,某一个简单的命令,比如调用计算器。复杂的Plugin,可以连着调用同一个服务的几个API来完成用户指示的简单任务,比如,订票,订餐,订车,等等。将某个服务的APIs和它们的API specification作为prompt传给ChatGPT,然后最好给几个简单任务的API调用的例子。那么,新的任务来了,ChatGPT会根据前面给的zero-shot或few-shot,自动生成一个API的调用序列来完成任务。
<br>
ChatGPT发布了Plugin的开发框架,上百个公司或服务已经开发了Plugin,很多的用户都可以选择激活Plugin。这样,用户在和ChatGPT聊天时,ChatGPT能根据用户的问题,自动触发Plugin,然后调用API,要么直接输出API返回的结果,要么将API返回的结果再通过ChatGPT生成经过文字加工的美化的结果。
对于公域的互联网上谁都可以使用的Plugin,嵌入到ChatGPT的chat流程,当然对Plugin开发者来说有好处,不但可以使用LLM提供的智能,语言能力,结构抽取,小规模规划,而且可以利用ChatGPT的上亿的用户群产生的流量。但是,对于私域的企业内部的组织内的服务,则不适合采用ChatGPT的Plugin,而是组织需要自己的Plugin框架,这时,Adept,Inflection AI,等提供了这种框架和服务来满足私域的需求。
<strong>Workflow(Meta)</strong>,则将Plugins串联起来共同完成一个复杂项目,或是多个agents(meta-agent)组成一个团队来集体完成复杂场景任务。一个复杂项目,会有多个需要实现的目标,然后每个目标都需要分解成(plan)多个子任务,有时子任务还能分解成更小的子任务,每个子任务,要么LLM自主完成,要么触发Plugin去完成。根据Plugin的返回结果,LLM再做进一步的规划,直到完成特定的目标。LLM作为workflow的核心,会统一规划,调度,监管,直到达成所有目标,完成任务。
比如,要做一个新品的报告,会需要行业分析,竞品分析,市场预期,销售策略,等等。做行业分析和竞品分析时,LLM会生成合适的query,然后调用搜索引擎agent,拿到结果后,会调用浏览agent,顺着每个结果浏览页面,找出页面中和目标一致的内容,然后将一致的内容聚合起来,作为LLM的prompt的一部分,生成出行业分析和竞品分析部分。处理市场预期时,LLM可以调用第三方提供的关于市场数据的agent,或是内部数据库的agent,然后LLM将这些数据做成表格,或是生成程序然后生成饼图或柱状图。处理销售策略时,可以调用Dall-E 2的API的agent,来生成图片文案,或是LLM自主生成营销文案。最后,将所有的东西组合起来,形成一个报告。
对于这种复杂场景项目,有类似LangChain的开发工具,也有AutoGPT之中预设了能组合记忆,搜索,浏览,文件读写,代码生成和调用,等等agents的,主要适合于调研和报告生成场景的工具。还有HuggingGPT这种根据需求调用不同的模型来集体完成某项任务,其实每个模型都是一个agent。
以AutoGPT为例,它的prompt就解释了它的内部工作原理,和它所能完成的任务,同时也提供了如何扩展的方式,当然,要提供更多的命令或Plugin。
```
CONSTRAINTS:
1. ~4000 word limit for memory. Your memory
is short, so immediately save important information to long term memory and
code to files.
2. No user assistance
3. Exclusively use the commands listed in double quotes e.g. "command name"
COMMANDS:
1. Google Search: "google", args: "input": "<search>"
2. Memory Add: "memory_add", args: "string": "<string>"
3. Memory Delete: "memory_del", args: "key": "<key>"
4. Memory Overwrite: "memory_ovr", args: "key": "<key>", "string": "<string>"
5. Browse Website: "browse_website", args: "url": "<url>", "question": "<what_you_want_to_find_on_website>"
6. Start GPT Agent: "start_agent", args: "name": <name>, "task": "<short_task_desc>", "prompt": "<prompt>"
7. Message GPT Agent: "message_agent", args: "key": "<key>", "message": "<message>"
8. List GPT Agents: "list_agents", args: ""
9. Delete GPT Agent: "delete_agent", args: "key": "<key>"
10. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
11. Read file: "read_file", args: "file": "<file>"
12. Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
13. Delete file: "delete_file", args: "file": "<file>"
14. Evaluate Code: "evaluate_code", args: "code": "<full_code_string>"
15. Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
16. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
17. Execute Python File: "execute_python_file", args: "file": "<file>"
18. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
RESOURCES:
1. Internet access for searches and information gathering.
2. Long Term memory management.
3. GPT-3.5 powered Agents for delegation of simple tasks.
4. File output.
PERFORMANCE EVALUATION:
1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.
2. Constructively self-criticize your big-picture behavior constantly.
3. Reflect on past decisions and strategies to refine your approach.
4. Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.
You should only respond in JSON format as described below
RESPONSE FORMAT:
{
"command": {
"name": "command name",
"args":{
"arg name": "value"
}
},
"thoughts": {
"text": "thought",
"reasoning": "reasoning",
"plan": "- short bulleted\n- list that conveys\n-long-term plan",
"criticism": "constructive self-criticism",
"speak": "thoughts summary to say to user"
}
}
Ensure the response can be parsed by Python json.loads
```
为了让AutoGPT这种workflow管理更强大,就需要提供更多的命令来处理场景的各种子任务。但是,现在大模型的content window是有长度限制的,就算GPT-4能容纳3.2万个token,大概2.4-2.5万个词,也许也不足以做成一个复杂的应用。
<strong>Application(Solution)</strong>,对于一项复杂的工作,会是一个复杂的workflow,或是很多个小的workflows组成,这些复杂的工作,或是场景的解决方案(solution),就形成了一个应用(application)。这种应用,可以是一种工作的全部workflow的组合,不管是内建的,还是用户定制的,也可以是一个消费场景,或工作场景,或娱乐场景的一个total solution。
像点餐外卖这种应用,会有餐馆管理流程(workflow),库存流程,菜品制成流程,用户订餐流程,配送和履约流程,用户反馈流程,支付流程,等等。每个流程又会涉及到很多的plugins。Plugin又会涉及到很多的API,除了文字相关的任务LLM能自主完成,其它的API又需要通过自动的或人工开发的programs来实现。将所有这些串起来,然后又能智能规划和执行的,就是LLM。
<strong>LLMs</strong>,一般有预训练的基础模型(pretrained foundation model,PFM),然后在之上用标注的数据去fine tuning,再用RLHF(Reinforcement Learning from Human Feedback)或者RLAIF(RL from AI Feedback)去和人类的价值观对齐(alignment)。这就是ChatGPT,GPT-4,Bard,Claude,等通用大模型的形成过程。
LLaMA,ChatGLM,BLOOM,等,则属于开源的PFM,大家在之上去SFT(supervised fine tuning),形成定制化的LLM服务于大众或行业用户。比如Alpaca,Vicuna,Dolly,等等。还有就是Augmented Language Model,主要是通过few-shot,Reasoning,ReAct,Self-Ask,等形式,不用动大模型的参数,就能完成垂直的任务。
一个LLM要能用于开发范式中,必须要求它有某种程度的涌现能力(emergent behavior),比如规划(plan)能力,逻辑能力,in context learning能力,等等。否则,它掌控不了这么多agents组成的应用。
围绕大模型的开发范式就在我们面前,谁先掌握它,谁就得先机。重要的事情再说一遍:
**Programming (Coding) -> API (SDK) -> Plugin (Command) -> Workflow (Meta) -> Application (Solution)**
资讯来源:https://mp.weixin.qq.com/s/U2iWxHINPs_kok4JyTXcNw
推荐资讯
-
对话无损的秘密:ThinkChat 的上下文优化之道
2026年06月11日
-
ThinkChat 空间知识库技能:让每个团队都拥有自己的"企业大脑"
2026年06月07日
-
ThinkChat IM频道上线——你随身超级工作助理
2026年06月07日
-
你的AI助理,终于能帮你"上网干活"了
2026年05月11日
-
ThinkChat 工作空间:让 AI 成为真正的团队成员
2026年05月07日
最新资讯
-
对话无损的秘密:ThinkChat 的上下文优化之道
2026年06月11日
-
ThinkChat 空间知识库技能:让每个团队都拥有自己的"企业大脑"
2026年06月07日
-
ThinkChat IM频道上线——你随身超级工作助理
2026年06月07日
-
你的AI助理,终于能帮你"上网干活"了
2026年05月11日
-
ThinkChat 工作空间:让 AI 成为真正的团队成员
2026年05月07日