Replit的Ghostwriter:一个AI编程助手的测试

新知榜官方账号

2023-10-01 23:26:51

Replit的Ghostwriter:一个AI编程助手的测试

编程平台Replit正以AI精神为指引继续前进,其Ghostwriter产品获得成功的机会远不止一点半点,DavidEastman表示。译自GhostintheIDE:TestingReplit’sAIHelper,Ghostwriter。最近,我一直在尝试各种为软件开发者提供提示、帮助、调试建议或(在某些情况下)完整代码片段的工具,这些工具都受到我们现在称为人工智能的支持。我特别喜欢在编辑行上给出提示,就像VisualStudio已经实现的那样,Copilot做的更多。考虑到我喜欢在线沙箱,而且也在研究人工智能工具,似乎有一个明显的工具我应该研究一下。

Replit是一个已经非常流行的在线IDE,您的项目托管在"Repls"(REPL或read-eval-printloop一词是其名称的由来)上。Replit是一个托管的解决方案,因此协作已经内置在其中。最近,该公司推出了其LLM服务Ghostwriter。与OpenAI的通用能力不同,经济学家注意到,Replit更倾向于使用LLM模型来专注于开发。他们使用了Nvidia高度投入的DatabricksAI平台。我无需安装任何东西,就直接用Google账号创建了一个Replit账号。当然,我也可以使用GitHub作为身份验证。有趣的是,Replit不仅询问您的预期用途(个人、协作等),还询问您完成了多少开发工作。我在仪表板上首先看到的是一个悬赏任务墙,这超出了我的预期。这充分体现了Replit不仅是一个工具,更是一个社区-因此它内置了方便的内部市场。但我来这里是为了尝试它的代码助手功能。我注意到我可以用10美元购买1000次使用Ghostwriter服务;也就是说,10美元可以获得1000个使用周期。至少Replit没有直接公开它们的AI服务定价,所以后台如果有调整,他们可以灵活处理。而且使用虚拟货币比较透明-这与《堡垒之夜》的做法类似。众所周知,《堡垒之夜》会精心设定价格,所以你总会发现自己还差一点点游戏币就可以买到想要的皮肤。我的目标是在Replit的代码编辑页面上使用Ghostwriter,所以我先买了1000个周期试试看。我假设公共代码页面是免费的,这与Github的模式相似。在之前的文章中,我使用了一个小的代码类来试用Copilot。Copilot根据方法名(遵循常规命名约定)以及它对C#FlagsAttribute的理解来补全我的方法代码。FlagsAttribute只是表示枚举可以作为位字段使用:[Flags]publicenumOccurrenceType{None=0,OccurrenceA=1,OccurrenceB=2,OccurrenceC=4,OccurrenceD=8}...privateOccurrenceTypeoccurrences{get;privateset;}=OccurenceType.None这种技术可以紧凑地存储事件信息;检查事件是否发生也很高效。所以我可以通过在一个变量中按位或OccurrenceA和OccurrenceC来表示它们发生:0000(Nothinghashappened)OR0001(OccurrenceAhappened)OR0100(OccurrenceChappened)-----0101通过适当的掩码,我们可以很快检测到OccurrenceC是否发生。这应该比使用列表更高效。所以,我在Replit上新建了一个C#项目。在生成了C#模板项目后,小助手向我展示了基本操作,但是界面保持着正常的窗口化显示。另外,它邀请我试用Ghostwriter:奇怪的是,Run按钮起初似乎不工作......然后我注意到CPU使用率达到了100%,但它最终还是打印出了“HelloWorld”。唉,看来我需要多花些游戏币啊(记住这是运行在Replit的基础设施上的)。不幸的是,Ghostwriter起初没有响应。可能是网络问题,也可能只是它的反应比较慢。它没有给出任何解释。我能从CPU的运算中得到反馈,但没有从Ghostwriter那里得到反馈。虽然如果将工作外包给另一个服务是不可避免会有延时的,但平台本身需要做更多状态监控和提示。当聊天窗口终于有反应时,我准备开始了。但遗憾的是,Ghost并没有在代码编辑过程中实时给出任何提示,而只是可以在编辑窗口生成完整代码。所以我让它帮忙生成SetOccurrences方法的代码。第一次尝试没有成功。它生成了:publicvoidSetOccurrences(OccurrenceTypeoccurrence){this.occurrences=occurrence;}这是错误的,因为我的要求不够明确:这个方法名本应该叫“AddOccurrence”更恰当。我取消了该提示,并再次试了试,这次改进了一下方法名:这样就正确了。它是通过按位或的方式添加了新的事件标志,而不是直接覆盖设置。不过我本该再精确一些的方法名。Checkingwhetheranoccurrencehappened这个方法我比较倒霉,好几次提示都是错的。最后,它给出了正确的按位运算实现:这是使用按位标志的正确方式。它将存储的标志值与要检查的标志进行按位与,实现掩码的效果。任何非零结果都表示对应的事件发生了。同样,如果我在方法名上给我的幽灵助手一个更明确的提示,比如HasOccurrence,它可能更快给出正确的实现。我还试着看看它是否可以使用.NET7中新增的HasFlag方法。尽管它没能给出这个建议(从项目设置看它没有使用.NET7,所以也不会有这个建议),但它的提示更简洁了:publicboolIsOccurrence(OccurrenceTypeoccurrence){return(occurrences&occurrence)==occurrence;}这是一个更好的表达。在main.cs文件中添加了一些测试代码和控制台输出后,这个小项目可以正常工作了:最后一个调试任务。为了让FlagsAttribute正确工作,枚举中的值必须是标准的二进制表示。如果我把OccurrenceD改成5会发生什么呢?Ghostwriter似乎没有注意到这个问题,而且也没有直接的调试选项。但是,当我让它“解释代码”时,在错误存在的情况下它给出了非常准确的回应:这完全正确,它甚至在分析代码时就发现了这个bug-几乎达到了人的水平。总体来说,虽然Ghostwriter对我并没有非常主动的性能,但它的设置确实比VisualStudio和Copilot简单快速得多。我猜如果有更多的计算资源,网络条件良好,它的表现会更加正面和直接。与任何合作伙伴的磨合都需要时间,不管是人还是AI。随着Ghostwriter在Replit基础设施上的不断优化,我相信它的表现会变得更加可靠,状态监控也会更友好。简而言之,Replit在人工智能辅助编程的道路上正在稳步前进。它完全有望发展出一个成功的AI编程助手。

本页网址:https://www.xinzhibang.net/article_detail-14727.html

寻求报道,请 点击这里 微信扫码咨询

关键词

Replit Ghostwriter AI编程助手

分享至微信: 微信扫码阅读

相关工具

相关文章