当前位置: 首页 > news >正文

如何更好的引导大语言模型进行编程的高效开发流程?

这张图片展示了一种如何更好地引导大语言模型进行编程的方法。

首先,最简单也是最有效的方法是让大语言模型重复运行多次,每次增加一些额外的信息,直到获得想要的结果。这种方法虽然简单,但可能需要多次尝试才能得到满意的结果。

为了提高效率,可以采用微调提示词的方法,即逐步增加提示词的数量和复杂性,以引导模型生成更准确的代码。例如,可以使用Few-shot提示优化,增加示例数量和示例多样性,以提高模型的性能。此外,还可以采用复现提示策略,将复杂的编程任务分解成多个简单的子任务,让模型逐步完成。

为了进一步提高模型的编程能力,可以采用LTM提示法,将编程任务分解成三个阶段:说明编程背景、函数功能和返回结果格式。每个阶段都提供详细的提示,帮助模型理解编程任务的要求。

此外,还可以利用大语言模型的自我一致性,即让模型自己检查自己的输出结果。这可以通过构建模型自查流程来实现,让模型自己审查自己的输出结果。这样可以提高模型的编程质量,减少错误的发生。

最后,还可以采用多子模型微调和模型微调的方法,针对特定的编程任务进行微调,以提高模型的性能。

这张图片是一个思维导图,展示了基于大语言模型的高效开发流程的三个阶段。每个阶段都有其特定的核心变化和工作内容。

在阶段一,人工为主,大语言模型辅助开发。此时的人工工作包括产品需求梳理、功能实现方案、项目管理方法、核心代码编写和功能测试等。而大语言模型则辅助回答技术相关问题、辅助编写代码提交给人工审核。

在阶段二,人工和大语言模型配合完成开发。此时的人工工作包括需求梳理、代码编写和自动测试,而大模型的工作则包括功能开发自动化。

在阶段三,大语言模型为主,人工引导大语言模型来高效完成开发任务。此时人的工作是引导模型理解人类需求、创建自动化流程,而大模型的工作则是理解和实现人类需求、理解并自动创建外部函数流。

相比于阶段二,阶段三的核心变化在于将基本的项目管理工作交给大语言模型来执行,向大语言模型传递开发项目的管理流程和意图,并引导大语言模型完成一个类似的开发项目,在各开发项目执行时不断优化项目管理流程。通过这种方式,能够引导Chat模型理解流程并自动进行项目管理,包括自行Debug、分级错误汇报、提示库优化、自动执行代码本地管理等工作。

这张图片展示了一个采用LTM提示流程来编写Python函数的过程。

首先,用户提出需求,例如“请帮我查一下我的Gmail邮箱中总共有多少封邮件”。

接着,根据用户需求创建一个Prompt,如“请帮我编写一个Python函数,用于查看我的Gmail邮箱中总共有多少封邮件,函数要求如下……”。

然后,使用Few-shot学习,得到函数创建所需的代码提示。根据提示,可以创建一个名为`retrieve_emails`的函数,它接受一个参数`n`和一个默认值为`"me"`的`user_id`参数。

在函数创建过程中,需要拆解问题找出用户需求中的变量,得到子问题的答案,并将原问题和子问题的答案带入函数创建。在这个例子中,函数创建后的代码如下:

```python
def retrieve_emails(n, user_id="me"):
    # 函数的具体实现代码
```

最后,将函数创建完成后,用户可以使用这个函数来满足他们的需求。

这张图片描述了一个全自动化函数编写与审查的流程,主要分为三个核心部分:

1. 核心函数一:自动代码创建函数`code_generate`,它负责根据用户的需求生成函数源代码。

2. 核心函数二:自动debug函数`function_test`,它负责对生成的函数进行测试和调试,确保其通过测试。

3. 底层文件系统代码和提示文件库,包括`tested_functions`和`untested_functions`两个文件夹,分别存放经过测试的函数及其提示信息,以及未经过测试的函数及其提示信息。

在实际操作中,用户首先需要提供函数名称`function_name`和用户需求`req`,然后通过`run_conversation`进行测试。如果测试未通过,则可以选择重新输入用户需求,或者进入Debug流程。如果测试通过,则将函数及其对应的提示移动至`tested_functions`文件夹中。

在第一阶段的LSTM提示流程中,用户需求`req`被识别为变量`pi`,并作为外部函数提示词`new_req_description`的一部分。在第二阶段的提示过程中,通过`extract_function_code`函数获取函数源代码,并运行新的`new_req_function`函数。

在流程的最后,用户需要输入新的函数名称,并同时完成运行。

相关文章:

  • Kali Linux 2024.1
  • Java多线程注意事项(初级程序员必看)
  • 蓝桥杯练习题——dp
  • Python图像处理【21】基于卷积神经网络增强微光图像
  • SpringBoot接口防抖(防重复提交)的一些实现方案
  • Apache Flink连载(三十九):Kuberneters 部署案例
  • TikTok企业认证教程:提升账号可信度的必备步骤
  • 项目中如何优雅的使用枚举类型
  • Gif动图体积太大怎么办?1分钟极速压缩gif体积
  • 【Python刷题】回文链表
  • 2024 Idea激活,分享几个IntelliJ IDEA激活的方案
  • Linux 学习笔记(12)
  • 深入了解 Android 中的 FrameLayout 布局
  • 如何应对IT服务交付中的问题?
  • 【XR806开发板试用】Console流程解析以及添加自定义指令
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 30天自制操作系统-2
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • input实现文字超出省略号功能
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript创建对象的四种方式
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Vue UI框架库开发介绍
  • vue2.0项目引入element-ui
  • win10下安装mysql5.7
  • 利用jquery编写加法运算验证码
  • 盘点那些不知名却常用的 Git 操作
  • 算法-插入排序
  • 线上 python http server profile 实践
  • 学习笔记:对象,原型和继承(1)
  • 一个JAVA程序员成长之路分享
  • 鱼骨图 - 如何绘制?
  • 追踪解析 FutureTask 源码
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 如何用纯 CSS 创作一个货车 loader
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Python 3 新特性:类型注解
  • ​比特币大跌的 2 个原因
  • ​批处理文件中的errorlevel用法
  • # Maven错误Error executing Maven
  • #13 yum、编译安装与sed命令的使用
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • %@ page import=%的用法
  • (12)Linux 常见的三种进程状态
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (vue)页面文件上传获取:action地址
  • (二)hibernate配置管理
  • (附源码)ssm高校实验室 毕业设计 800008
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)大道至简,职场上做人做事做管理
  • **PHP二维数组遍历时同时赋值
  • .apk文件,IIS不支持下载解决