Developer Tool 2.0 - LLM Powered Feature Flags & Experimentation Management ServiceDeveloper Tool 2.

来源: FeatBit
   
在这篇文章中,我将详细描述我测试的两个场景:
- 利用ChatGPT消除无用功能标志代码
- 利用提示进行开发者工具的入门引导
随着ChatGPT(大型语言模型)越来越受欢迎,出现了像提示工程师(Prompt Engineer)、提示操作(Prompt Ops)和LLM操作(LLM Ops)等术语。这让我思考这种强大的模型是否可以应用于实际编程场景。于是,我决定测试其在FeatBit服务的功能标志(Feature Flags)方面的能力。我发现GPT-3.5 API和GPT-4聊天界面都取得了令人印象深刻的结果。然而,尽管在一定程度上对模型进行了微调,GPT-3的性能仍然未能达到我的期望。在这篇文章中,我将详细描述我测试的两个场景:
  • 利用ChatGPT消除无用功能标志代码
  • 利用提示进行开发者工具的入门引导

减少技术债务 - 移除无用功能标志

在代码库中使用功能标志的一种简单方法是使用if/else语句,如下所示:

public string UP(FbClient featureFlags)
{
var user = FbUser.Builder("anonymous").Build();
var ifC = featureFlags.BoolVariation("ui-c", user, defaultValue: false);
string total = "0", num1 = "3", num2 = "12";
if (ifC == true)
{
return total + num1 + num2;
}
return total;
}

一旦功能完全实现并交付,或实验完成并确定胜者,其中一个代码路径将不再被执行,需要移除这些“死亡”代码。在频繁使用功能标志时,您或您的同事可能会无意中移除错误的代码或忽略某些受功能标志间接控制的区域。尽管这种情况可能不经常发生,但仍然会对您的业务和整个开发团队产生影响。

使用ChatGPT3.5和4移除无用功能标志

我尝试利用ChatGPT来消除无用功能标志和相关代码。在初始尝试中,我使用了chatGPT 3.5的ChatCompletion方法。我向ChatGPT提供了清晰的操作指示,并为其提供了“预训练/微调”示例。
下面的图片展示了一个微调提示/完成示例。在左侧,有包含无用功能标志和相关代码的代码。相反,在右侧,您可以看到在移除无用功能标志后的清理过的代码版本。


我向ChatGPT-3.5-turbo提供了另外六个示例,演示了如何使用和移除功能标志。
接下来,我通过给ChatGPT提供一个代码片段以及相同的指示来测试它,看看它是否能准确地移除无用功能标志及其相关的无用代码。

如上图所示,结果非常引人入胜。这个简单的文本展示了ChatGPT解决迄今为止没有其他解决方案解决的主要痛点的潜力。
然而,在对更广泛的场景进行测试时,显然需要更多的微调示例以获得更好的性能。不幸的是,截至目前,ChatGPT-3.5或ChatGPT-4还没有提供微调功能。但是不要担心,这只是时间问题!
随着时间的推移,ChatGPT可能会为用户提供更多的微调选项,其他开源大型语言模型也将获得类似的功能。这一前景使我充满了希望。

text-davinci-003 & ChatGPT 3

我尝试使用相同的示例数据对chatGPT-3模型进行微调,但不幸的是,它没有产生任何有用的结果。我还尝试了text-davinci-003模型,该模型产生了令人满意的结果,但代价更高。

Optimal Developer Tools Onboarding Experience

通过利用ChatGPT的代码补全和代码插入功能,开发者可以轻松地使用简单的提示在现有项目中初始化FeatBit。即使没有微调,您也可以使用聊天补全让GPT-4阅读GitHub文档并学习如何使用FeatBit的SDK。
下面的图片展示了试验步骤:
  1. 我将FeatBit .NET SDK文档输入到ChatGPT-4。
  2. 我从ASP.NET Core 7的Program.cs文件中复制代码源。
  3. 指示GPT-4在代码源中初始化FeatBit的.NET SDK。
  4. GPT-4返回初始化后的修改过的代码。


虽然GPT-4表现得很好,但它在文件顶部添加了一些不必要的代码:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;


尽管不完美,这个引人入胜的试验展示了一种新的开发者工具入门方法。它强调了代码与开发者之间以及代码与非工程师之间的新颖交互方式。

目前Copilot还没有这个功能,但可以设想它最终会为开发者工具提供一个微调和创建插件的接口。

False Positive

目前,GPT-3.5 turbo和GPT-4已经展示了在某些任务中超越人类的潜力。它们目前在准确性上的不足可以通过更多数据和实际用例的预训练和微调来改进。

虽然在处理功能标志技术债务或初始化SDK时可能会出现误报的情况,但随着实际用例的增加,这些模型的性能将继续提高。

Conclusion

ChatGPT已经展示了在解决实际编程痛点方面的巨大潜力,如移除无用功能标志和提高开发者工具的入门体验。虽然目前的性能可能不是完美的,但我们必须记住,我们还处于探索这些语言模型能力的初期阶段。随着更多的数据和实际用例用于预训练和微调,我们可以期待在各种编程场景中看到ChatGPT准确性和实用性的显著提高。这不仅有望改变开发者与代码交互的方式,还为非工程师提供了更易于使用、更高效的解决方案。ChatGPT和类似模型的未来充满希望,我们热切期待它们为软件开发领域带来的进步。

除了ChatGPT外,我们将在未来的时间里去测试一些其他开源的大模型,找到更自由的、更容易满足客户需求场景的可在Text(代码)到Text(代码)领域有相同表现的大模型,如CodeGeeX。
欲了解更多信息,请访问 FeatBit的GitHub仓库.

顺便说一下,我不是一名Python开发者,我花了30分钟安装并掌握了Python的基础知识。我仅使用Copilot和ChatGPT-4成功地完成了我的ChatGPT Python命令行程序.

本文章暂未取得发布方确认,如有失实,可联系编辑,我们将作出相应处理。
详情请扫码联系编辑。

责任编辑: 云舒

相关资讯
写评论