ChatGPT与码农的机会
之前一篇博客已经写了有关AI在博客编写方面的优势与对未来博客的编写方面的思考。这篇文档我继续分享一个我在开发中的一个案例和相关的感想。
事件还原
我发现ChatGPT也可以帮助我编写OData,于是我也利用GPT帮助我编程。
- OData如何将filter与apply字段联合使用?答案如下:
GET /odata/Products?$apply=groupby((Category), aggregate(UnitsInStock with sum as TotalUnitsInStock))&$filter=TotalUnitsInStock gt 100
ChatGPT提供了一个思路,不过这个例子却不能正确运行,因为通过聚合输出的结果已经不能再进行进一步的OData筛选操作了。
于是我继续告诉它这个不对,让他重新编写,却一直得不到令我满意的结果。
那么换一个问题,关于聚合查询的,对应的数据类型,可以看之前的我发的文章,我提问“我需要使用odata查询按照adcode进行归类,统计每个类别下面的attachdeviceinfo数量、deviceinfo数量和attachdevicetype数量”。回答如下:
/odata/DeviceInfos?$apply=groupby((Adcode), aggregate(AttachDevices/$count as NumAttachDevices, $count as NumDeviceInfos, AttachDevices/AttachDeviceType/$countdistinct as NumAttachDeviceTypes))
运行后报错,提示缺少with,于是我定位了问题之后,我重新提问“提示AttachDevices/$count缺少with,请重新修改”
ChatGPT开始给我乱写了:
“这个错误提示是由于count操作需要与一些其他操作一起使用,例如count操作需要与一些其他操作一起使用,例如filter或select。您需要将select。您需要将count操作与其中一个操作组合使用才能使其有效。
例如,如果您想要统计满足某个过滤条件的设备数量,您可以使用以下URL:
/AttachDevices?$filter=Property eq 'Value'&$count=true
请注意,在此URL中,count操作需要与count操作需要与filter操作组合使用,并且filter操作必须出现在filter操作必须出现在count操作之前。”
已经开始给我扯东扯西了,然后我继续修改提问的方式,依旧没有得到的我想要的结果。我总结一下:
- OData相关的资料比较少,数据集相对也较少,所以适配并不好,感觉还是一个冷门的技术....
- AI提供的思路完全没有问题,但是具体实现的语法上并不符合OData的规范。
- prompt的方式或许也需要改进,提供更多的上下文或者辅助信息,帮助AI更好地解决问题。
最后,我想到如果$count不行,那么使用实体的具体属性用于统计是否可以?改成以下就OK了。
odata/attachdeviceinfos?$apply=groupby((deviceinfo/Adcode), aggregate($count as NumAttachDevices, deviceinfo/deviceid with countdistinct as NumDevices, attachdevicetype/id with countdistinct as NumTypes))
机会
所以,提供给程序员的机会:
- 依然需要掌握一些相对冷门,或者较为复杂的技术,这样在AI给的解决方案错误的情况下,不至于完全抓瞎。
- 掌握快速Troubleshooting的技巧,遇见AI也不能解决的问题时,通过文档和相关经验迅速给出符合场景要求的方案。
所以,请警惕完全依赖AI时,它可能无法提供答案或者是错误答案。我想起了一个很久之前的电影《机械公敌》,人类在AI背叛的时候一时束手无策。。。希望我们未来不会这样。
ChatGPT与码农的机会的更多相关文章
- [2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路
(国内知名Android开发论坛 eoe开发者社区推荐:http://www.eoeandroid.com/) 前天,2013 eoe 移动开发者大会在国家会议中心召开,eoe 开发者社区创始人靳岩在 ...
- 老码农冒死揭开行业黑幕:如何编写无法维护的代码[ZZ]
下面是一篇有意思的"代码大全",可谓 逆软件工程. 老码农冒死揭开行业黑幕:如何编写无法维护的代码 原文如下 让自己稳拿铁饭碗 ;-) – Roedy Green(翻译版略有删节) ...
- 管理与技术未必不可兼得,一个20年IT老兵的码农生涯
作者|康德胜 我是一个喜欢写代码但几乎不太有机会写代码的CTO,也是一个看得懂财务报表.通过所有CFA(金融特许分析师)考试并获得FRM(金融风险经理)认证的拿到金融MBA的CTO,如果我有幸被称作码 ...
- 拥抱Mac之码农篇
拥抱Mac之码农篇 使用Mac大概两年时间.之前用着公司配的一台27寸的iMac.无奈机械硬盘严重拖慢速度,影响工作心情.于是入手Macbook Retina 13.这两年的开发工作所有在Mac上完毕 ...
- 6年DotNet码农的盲目经历
前言 第一篇没有选择记录与技术相关的文档,是考虑到有必要给查阅这篇文档的伙伴们“自我介绍”一下,大佬们看了求带或指导,我很愿意学习,初学者们看了千万不要重复走我之前的“学习之路”:我老家贵州,再过 ...
- 码农英语四级考了6次,也能进知名IT外企
程序员学英语 这显然不是新鲜的话题,但再怎么重复强调都不过分! 为啥要学 IT是当今世界发展最快的行业,没有之一!作为其中的从业人员,要始终保持对最新技术的关注度,难免需要阅读英文新闻或文章 平时工作 ...
- 【整理】待毕业.Net码农就业求职储备
声明:本文题目来源于互联网,仅供即将从学校毕业的.Net码农(当然,我本人也是菜逼一个)学习之用.当然,学习了这些题目不一定会拿到offer,但是针对就业求职做些针对性的准备也是不错的.此外,除了技术 ...
- <开心一笑> 码农 黑客和2B程序员之间的区别
笔记本电脑 码农: 黑客: 2B程序员: 求2的32次方: 码农: System.out.println(Math.pow(2, 32)); 黑客: System.out.println(1L< ...
- 经典算法C++版(参考一线码农博文)
鉴于一线码农的算法博文基本通过C#完成,此处用C++再实现一遍,具体解法可参考其博文. 地址:http://www.cnblogs.com/huangxincheng/category/401959. ...
- 专门为码农定制的14款创意的T裇(T-Shirt)设计
T裇衫是人们在各种场合都可穿着的服装,如在T裇衫上作适当的装饰,即可增添无穷的韵味.通过图案直接反映人类的精神风貌,你可以把日常生活中的兴趣.习惯.喜怒哀乐.嗜好等展露无疑,张扬个性.秀出自我.对于码 ...
随机推荐
- JS实现异步的方法:回调函数callback、事件监听、setTimeout、Promise、生成器Generators/yield、async/awt
所有异步任务都是在同步任务执行结束之后,从任务队列中依次取出执行. 回调函数是异步操作最基本的方法,比如AJAX回调,回调函数的优点是简单.容易理解和实现,缺点是不利于代码的阅读和维护,各个部分之间高 ...
- 【LeetCode - 1055】形成字符串的最短路径
1.题目描述 代码: #include <iostream> #include <string> using namespace std; const int MAX_LETT ...
- 学Java的第5天,今天做了个双色球系统
今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...
- java绘图技术
![](https://img2022.cnblogs.com/blog/2648796/202203/2648796-20220330191231939-149557321.png)
- unittest "ResourceWarning: unclosed <socket.socket fd=864, family=AddressFamily.AF_INET..." 解决办法...
将代码封装,并使用unittest调用时,返回如下警告: E:\intall\python-3.7.4-amd64\lib\unittest\suite.py:84: ResourceWarning: ...
- OSIDP-并发:死锁和饥饿-06
死锁原理 死锁:一组相互竞争系统资源或者进行通信的进程间"永久"阻塞的现象. 资源分为两类:可重用资源和可消耗资源. 可重用资源:一次只能被一个进程使用且不会被耗尽的资源.如处理器 ...
- django_设计模式和模板层
一.django的设计模式 1.传统MVC设计模式 (1)MVC(Model-View-Controller,模型-视图-控制器)模式. M--模型层,主要用于对数据库的封装: V--视图层,用于向用 ...
- SpringMvc配置和原理
运行原理 DispatcherServlet通过HandlerMapping在MVC的容器中找到处理请求的Controller,将请求提交给Controller,Controller对象调用业务层接口 ...
- Vue学习day1
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
- Stream流相关方法
LIST<对象> 转换MAP 并根据某个字段分组 // 并根据某个字段分组,并做了归类 Map<String, List<User>> collect = user ...