从需求设计到代码生成:GLM-4-Plus全面提升软件开发效率

代码为聘礼 2024-09-15 14:45:14

毫无疑问,在 AI 辅助研发领域,今年是 AI 应用落地元年。与上一年相比,人们探索大模型应用场景越来越深入,市面上出现了越来越多的准杀手级应用,诸如于“AI 工程师” Devin、需求自动编码 GitHub Copilot Workspace,以及最近在辅助编程领域特别火爆的 Cursor。同时,在国内我们也可以在各种技术大会上,看到越来越多有深度的应用案例,而不是像 2023 年的口头嗨 —— 生成式 AI 可以重塑 xx 产业。

在结合模型辅助研发软件时,通常会分为两个阶段来考虑结合 AI 的辅助:

战略阶段。使用推理能力最强的模型,进行辅助架构、API、代码理解等场景的设计。战术阶段。使用性价比(速度快、质量不错)的模型,去辅助我们完成日常的开发工作。

而与上一代及国外的模型相比,最新的 GLM-4-Plus模型大大地提供在推理、数学能力与上下文能力,更适合于我们去应用在编程领域的一些复杂设计上。再配合用于辅助编程的战术落地工具 CodeGeeX,可以大大提高我们的研发效能。在这里,我们可以看以下几个场景在 GLM-4-Plus 上的表现:

辅助技术调研与技术文章的分析和总结。辅助需求分解和测试用例设计辅助软件架构设计:API 设计、设计领域模型。结合上下文的代码理解等

作为最早吃到螃蟹的人之一,我还是想在开始之前提醒一下大家,我们现在应该学会提出一个好的问题?在编程场景一个好的问题包含四个基本因素:

明确的指令(生成测试)相关信息上下文(函数的输入和输出)明确的输出格式(代码)边界条件或其他约束(诸如你的一些额外要求)

除此,我们还要适用不同模型的脾气。

辅助技术调研与技术文章的分析和总结

在做技术调研时,我们只是会在网上进行一些搜索,尽管已经有了一系列 AI 搜索引擎,但是对于新老技术的判断,并不是那么理解。因此,总会结合着做一些手动的搜索技术资料,让 AI 做总结,获取一些关键信息。

只需要注册和登录智谱AI的 BigModel ⼤模型开发平台()

即可以体现和测试最新的模型。诸如于我们使用了 GLM-4-Plus 来实现如下的任务:

我在写一篇关于未来 AI 辅助 IDE 趋势的技术分析。请根据如下的内容,思考合适我的方向:https://www.phodal.com/blog/shire-0.5-secure-rag-and-shireql/ https://www.phodal.com/blog/hybird-agents-build-ide-intelli-with-cloud-agent/ https://www.phodal.com/blog/llm-for-documentation-shire-example/https://www.phodal.com/blog/ai-assistant-understanding-codebase/

结合智谱的开放平台,我们就能快速得到一个基础的思考框架:

而对于一些常用的技术框架和技术问题,那么模型是更擅长来辅助我们,诸如于:如何在 Spring 项目中使用 Swagger 来可视化 API?

考虑到模型的历史语料因此,模型在辅助我们迁移遗留系统上的能力更强。

辅助需求分解与单元测试用例设计

而回到我们日常的开发任务里,我们可以直接将模型使用起来。可以让他帮我们辅助做需求的单元测试用例设计。

针对如下需求,编写测试数据:开发一个出租车计费功能,它的计算规则是这样的:不超过8公里时每公里收费0.8元,超过8公里则每公里加收50%长途费,停车等待时每分钟加收0.25元。

如下是我们用 GLM-4-Plus去根据我们的问题生成结果,如下图所示:

当 AI 知道自己要计算才是对的,但 AI不知道自己在做计算任务时,复杂任务依旧需要拆解。比如上面的这个案例,在直接生成代码时,数值可能会出现错误。

我们可以基于上述的任务拆分,让 GLM-4-Plus生成对应的测试代码,再直接复制到IDE 中执行:

尽管如此,在效果上还是比 GPT4o 效果好一点,GLM-4-Plus直接生成的 9 个测试里只挂了 2 个,而 GPT-4o 则挂了 3 个。随后,我们可以让 GLM-4-Plus重新计算一下这个问题的答案。当 AI 知道自己是在计算,而不是回答问题时,结果就非常准确。

从上图中可以看到,模型会展示详细的计算过程,并计算出正确的结果。除此,它也能回答经典的 9.11和 9.10,以及相关的版本号问题:

辅助架构设计:UML 生成

GLM-4-Plus 也和其它的智谱一样,采用兼容 OpenAI 的 API 格式,可以集成到我们的工具中。如下是开源智能体语言 Shire 中的使用 GLM-4-Plus示例:

{ "title": "glm-4-plus", "apiKey": "xxxx, "model": "glm-4-plus", "apiBase": "https://open.bigmodel.cn/api/paas/v4/chat/completions"}

然后,我们可以写个 prompt 来让 AI 直接结合需求信息,与生成 PlantUML 格式的时序图。如下是我们编写的 Shire prompt:

---name: "设计 UML"variables: "story": /any/ { thread(".shire/shell/dify-epic-story.curl.sh") | jsonpath("$.answer", true) }onStreamingEnd: { parseCode | saveFile("docs/flow.puml") | openFile }model: "glm-4-plus"---你是一个资深的开发人员,根据用户故事使用 PlantUML 绘制 PUML 时序图。用户故事:$story请使用 Markdown Code 格式,语言 `puml`,请根据用户故事绘制 PUML 时序图,返回设计的 PUML 代码。

下图是结合需求在IDE中生成的时序图,GLM-4-Plus 可以直接生成准确可编译的 UML,并结合 IDE 的能力展示出来。

还可以生成 API 文档,如下是结合需求信息生成的 Swagger 文档示例。可以直接在 IDE 中显示,并进行测试。

需要注意的是在使用 API 时,GLM-4-Plus模型输出最大 tokens,最大输出为4095,默认值为1024。除此,开发者需要根据自己的场景,配置好对应的模型参数。

结合上下文的代码理解

在一些场景中,我们还可以根据上下文信息,让模型分析我们的需求信息,与代码库现状去判断应该在哪里修改代码。如下的示例中,我们将所有的 Controller 代码发给 GLM-4-Plus 模型,让模型根据需求找到合适的代码变更点:

不过,需要注意的是我们得考虑在适合的场景才使用如此的上下文。对于编码场景来说,精炼的信息,有助于模型生成更准确的答案。而另外一个非常依赖于长上下文的场景,则是让 GLM-4-Plus 去 review 代码, 以查找代码库的历史的变更内容,诸如于:

在这些场景上,GLM-4-Plus 都有非常不错的表现,能辅助我们更好地解决软件开发问题。除此,我们在先前的 Shire 语言的示例项目中做过一系列相关测试,在辅助编程场景上,GLM-4-Plus 已达到与 GPT-4o 等第一梯队模型持平的水平。

作为一个喜欢在 PPT 里放很多图的工程师,我经常使用 AI 来生成图,以避免版权问题。如下是 CogView-3-Plus 文生图模型生成的内容。非常贴合我所需要的日常场景:

就效果来说,已经可以在 PPT材料和文章中使用,也非常接近于主流的文生图模型。同时,与 GLM-4-Plus 一起上线的还有 GLM-4V-Plus 模型,它可以理解视频和网页等内容,如下图所示:

它可以解决领导突然发了一个截图,并 @ 茫然无措的你。

小结

从个人的使用而言,在软件开发领域,相较于国外模型,GLM-4-Plus更懂得国内用户的实际需求,如在注册功能设计中,能够自然地考虑到使用手机号、微信等多种登录方式。在复杂编程任务中,GLM-4-Plus展现出了卓越的推理和数学计算能力,能够准确地进行需求分解、测试用例设计,并在辅助架构设计时生成精确的UML图和API文档。在处理代码检视、发布文档等需要长上下文的内容时,GLM-4-Plus能够准确把握代码库的现状和需求变化,辅助开发者找到合适的代码修改点,甚至在代码审查中也能发现历史变更的细节。

同时,作为一个模型应用的开发者,采用兼容OpenAI API格式的GLM-4-Plus,可以轻松集成到现有工具和平台中,极大地方便了开发者的使用。我们可以在现有的 AI 应用中,直接通过它的 API 来改善现有 AI 应用的推理能力

最后,需要注意的是模型的效能很大程度上取决于输入问题的质量,学会提出明确、具体、包含必要上下文和约束条件的好问题,是充分发挥模型潜力的关键。

点击链接立即使用:https://zhipuaishengchan.datasink.sensorsdata.cn/t/UF

0 阅读:0

代码为聘礼

简介:感谢大家的关注