这张图片展示了一种如何更好地引导大语言模型进行编程的方法。
首先,最简单也是最有效的方法是让大语言模型重复运行多次,每次增加一些额外的信息,直到获得想要的结果。这种方法虽然简单,但可能需要多次尝试才能得到满意的结果。
为了提高效率,可以采用微调提示词的方法,即逐步增加提示词的数量和复杂性,以引导模型生成更准确的代码。例如,可以使用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"):
函数的具体实现代码
```
最后,将函数创建完成后,用户可以使用这个函数来满足他们的需求。
这张图片描述了一个全自动化函数编写与审查的流程,主要分为三个核心部分:
-
核心函数一:自动代码创建函数`code_generate`,它负责根据用户的需求生成函数源代码。
-
核心函数二:自动debug函数`function_test`,它负责对生成的函数进行测试和调试,确保其通过测试。
-
底层文件系统代码和提示文件库,包括`tested_functions`和`untested_functions`两个文件夹,分别存放经过测试的函数及其提示信息,以及未经过测试的函数及其提示信息。
在实际操作中,用户首先需要提供函数名称`function_name`和用户需求`req`,然后通过`run_conversation`进行测试。如果测试未通过,则可以选择重新输入用户需求,或者进入Debug流程。如果测试通过,则将函数及其对应的提示移动至`tested_functions`文件夹中。
在第一阶段的LSTM提示流程中,用户需求`req`被识别为变量`pi`,并作为外部函数提示词`new_req_description`的一部分。在第二阶段的提示过程中,通过`extract_function_code`函数获取函数源代码,并运行新的`new_req_function`函数。
在流程的最后,用户需要输入新的函数名称,并同时完成运行。