Copilot鏄疓ithub鎺ㄥ嚭鐨勪汉宸ユ櫤鑳界紪绋嬪姪鎵嬨€傜煭鐭竴骞存椂闂村氨鍙楀埌浜嗗ぇ鎵瑰紑鍙戣€呯殑杩芥崸锛堟嵁瀹樻柟缁熻鎷ユ湁120涓囩敤鎴凤級銆備絾鏄紝浠?022骞?鏈堝紑濮嬶紝瀹冭浆涓轰粯璐硅闃呮ā寮忥紙姣忔湀10缇庡厓鎴栨瘡骞?00缇庡厓锛夈€傚煿璁唬鐮佷腑鍙兘娑夊強鐨勭増鏉冨拰璁稿彲闂鏆備笖涓嶈璁恒€傚彲浠ヨ偗瀹氱殑鏄紝鍒╃敤鏈哄櫒瀛︿範璁粌鏅鸿兘缂栫▼AI妯″瀷灏嗘槸鏈潵鐨勫ぇ鍔挎墍瓒嬶紒宸у悎鐨勬槸锛屽氨鍦–opilot瀹e竷鏀惰垂鍚庡嚑澶╋紝浜氶┈閫婃帹鍑轰簡涓€娆剧珵鍝丆odeWhisperer锛佺浉淇″湪涓嶄箙鐨勫皢鏉ワ紝绫讳技鐨勪骇鍝佷細濡傞洦鍚庢槬绗嬭埇娑岀幇锛屽眾鏃讹紝绋嬪簭鍛樺拰缂栫▼瀛︿範鑰呭皢浼氭洿鍔犲垢绂忥紒浣滆€咃細BrianTarbox璇戣€咃細鐚笅鐨勮睂璞嗚姳@Python鐚嫳鏂囷細https://blog.symops.com/2022/...杞浇璇蜂繚鐣欎綔鑰?璇戣€?鍑哄淇℃伅浠g爜琛ュ叏浜?985骞撮娆″嚭鐜板湪Pascal涓婄紪杈戝悕鍙埍涓戒笣銆傚畠鏀寔鑷姩缂╄繘銆丅EGIN/END鎺у埗缁撴瀯鐨勮嚜鍔ㄥ畬鎴愶紝鐢氳嚦璇硶鐫€鑹层€備簤璁殢涔嬭€屾潵锛氬湪Alice鐨勬棭鏈燂紝浜轰滑鎷呭績浠g爜琛ュ叏璁╃紪鍐欒蒋浠跺彉寰楀お瀹规槗浜嗐€備絾瀹冨疄闄呬笂鍙槸涓€涓娉曞姪鎵嬨€備唬鐮佽ˉ鍏ㄥ彲浠ュ府鍔╀綘鍐欏嚭璇硶姝g‘銆佸彲缂栬瘧鐨勪唬鐮侊紝浣嗗畠涓嶈兘甯姪浣犲啓鍑鸿涔夋纭殑浠g爜锛岀敋鑷虫槸浠讳綍鏈夌敤鐨勪唬鐮併€侴itHub鐨凜oPilot鍜孉mazon鐨凜odeWhisperer閫氳繃鐢熸垚璇箟姝g‘鐨勪唬鐮佷互鍙婅娉曞府鍔╂潵鏀瑰彉杩欑鐘跺喌銆傚畠浠笉浠呮彁渚涗簡if璇彞鐨勫ぇ绾诧紝鑰屼笖杩樺垱寤轰簡瀹屾暣鐨勪唬鐮佺ず渚嬨€備絾鍦?022骞达紝浠g爜杈呭姪宸ュ叿鍒板簳鏈夊濂斤紵鏈枃灏嗗洿缁旵odeWhisperer鏉ュ皾璇曞洖绛旇繖涓棶棰樸€傝瘯璇曠湅锛氫娇鐢≒ython浠嶴3璇诲彇鏁版嵁浜氶┈閫婁簬2022骞?鏈堝彂甯冧簡CodeWhisperer鐨勯瑙堢増锛屽畠鐜板湪鏀寔Python銆丣ava鍜孞avaScript銆傝煉鐚敞锛氭埅鑷?022骞?鏈?7鏃ワ紝璇ユ湇鍔″皻鏈叏闈㈠紑鏀俱€傛兂璇曠敤鐨勫彲浠ュ埌瀹樼綉鐢宠锛歨ttps://pages.awscloud.com/co...闄勪笂瀹樻柟浠嬬粛锛歨ttps://aws.amazon.com/cn/blo...AWS鍗氬涓婄殑涓€绡囨枃绔狅紝MarkRichman瑙i噴璇达紝CodeWhisperer鐨勬ā鍨嬫槸鍦ㄢ€滃悇绉嶆暟鎹簮锛屽寘鎷簹椹€婂紑婧愪唬鐮佲€濅笂璁粌鐨勩€傛湁浜嗚繖涓鏂欏簱锛堟樉鐒剁‘瀹炲瓨鍦級瀹屽杽CodeWhisperer鐨勬ā鍨嬶紝缂栧啓浠g爜浠嶴3璇诲彇鏂囦欢搴旇鏄竴涓緢濂界殑娴嬭瘯鐢ㄤ緥銆備娇鐢–odeWhisperer(CW)鏃讹紝鎮ㄩ渶瑕佺紪鍐欐敞閲婃潵鎻忚堪鎮ㄥ笇鏈涘嚱鏁版墽琛岀殑鎿嶄綔銆傛偍鐨勬敞閲婃弿杩版€ц秺寮恒€佽秺鍑嗙‘锛岀郴缁熷氨瓒婅兘鎺ㄦ柇鍑烘偍鎯宠鐨勯€昏緫銆侳unctiontoopenanS3file娉ㄩ噴浠unction寮€澶达紝璁〤W鐭ラ亾浣犺鍒涘缓涓€涓嚱鏁般€備篃灏辨槸闇€瑕佺粰CW鍔犱竴涓猲ote浣滀负鎻愮ず銆侰W瑙f瀽娉ㄩ噴骞剁敓鎴愬嚱鏁板畾涔夈€傛鏃讹紝鎮ㄥ彲浠ュ湪鐢熸垚鍑芥暟浣撲箣鍓嶄慨鏀瑰嚱鏁板畾涔夈€侰W杩樺彲鑳芥彁渚涘绉嶅姛鑳藉畾涔変緵鎮ㄩ€夋嫨銆侷ntelliJ涓嶤odeWhisperer闆嗘垚鐨勫睆骞曟埅鍥惧崟鍑烩€滄彃鍏ヤ唬鐮佲€濓紝鎮ㄧ殑鍑芥暟灏嗗湪娉ㄩ噴涓嬫柟鍒涘缓銆傝娉ㄦ剰锛孋odeWhisperer涓嶄粎浼氭彃鍏ヤ唬鐮侊紝杩樹細鍒涘缓鏂囨。瀛楃涓层€?鎵撳紑S3鏂囦欢鐨勫嚱鏁癲efopen_s3_file(filename):""":paramfilename::return:"""s3=boto3.resource('s3')returns3.Object(bucket,filename).get()['Body'].read()鐪嬭捣鏉ヤ笉閿欙紒姝や唬鐮佹墽琛屾偍鐨勬敞閲婃墍鏈熸湜鐨勬搷浣滐紝骞跺湪鍑犵閽熷唴鐢熸垚銆傝妭鐪佸鎵綽oto3API鐨勬椂闂达紝鎮ㄥ彧闇€瑕佹鏌ヤ唬鐮佷互纭繚璇箟姝g‘銆傜劧鍚庣湅鐪嬪綋鍙戝嚭鏇村璇锋眰鏃朵細鍙戠敓浠€涔堛€傝繖鏄竴涓湁鐢ㄧ殑绀轰緥锛氱紪鍐欎竴涓嚱鏁帮紝璇ュ嚱鏁拌繑鍥濻3涓枃浠剁殑鍓嶁€渘鈥濊銆?浠嶴3涓殑鏂囦欢鑾峰彇鍓峮琛岀殑鍑芥暟defget_first_n_lines_from_s3(filename,n):"""鑾峰彇S3涓枃浠剁殑鍓峮琛?paramfilename::paramn::return:"""lines=[]forlineinopen_s3_file(filename):lines.append(line)iflen(lines)>=n:breakreturnlines鐪熺殑寰堢濂囷紒CodeWhisperer浣跨敤涔嬪墠鍒涘缓鐨勮緟鍔╂柟娉昽pen_s3_file骞剁敓鎴愪簡姝g‘鐨勫嚱鏁般€傚湪CW鐢熸垚鍑芥暟浣撲箣鍓嶏紝鍙互淇敼鍙傛暟鍚嶆潵鎻愰珮浠g爜鐨勫彲璇绘€с€備緥濡傦紝濡傛灉鎴戜滑杈撳叆锛?FunctiontofindcommonelementsinlistsCW浼氭彁绀猴細deffind_common_elements(list1,list2)鍦ㄧ敓鎴愬嚱鏁颁綋涔嬪墠锛屾垜浠彲浠ヤ慨鏀瑰嚱鏁板畾涔変娇鍏舵洿鍏锋弿杩版€э細deffind_common_elements(first,second)濡傛灉鎴戜滑鎺ュ彈瀹冪殑鍑芥暟瀹氫箟锛孋odeWhisperer灏嗕娇鐢ㄥ嚱鏁扮鍚嶅拰娉ㄩ噴鏉ユ瀯寤哄嚱鏁颁綋銆傜敓鎴愮殑鍑芥暟灏嗕娇鐢ㄦ敼杩涚殑鍙傛暟鍚嶇О銆?鍦ㄥ垪琛ㄤ腑鏌ユ壘鍏叡鍏冪礌鐨勫嚱鏁癲effind_common_elements(first,second):returnlist(set(first)&set(second))CodeWhisperer涓嶅彧鏄垱寤烘暣涓嚱鏁帮紱鎺ㄦ柇鐩稿叧鍙橀噺銆?reversethelistorderlines.reverse()CodeWhisperer鏄竴涓富瑕佺殑鐢熶骇鍔涘姪鎺ㄥ櫒浣跨敤CodeWhisperer锛屾垜鍙互鏇村揩鍦扮紪鍐欎唬鐮併€傚埌鐩墠涓烘锛屾渶澶х殑浠峰€兼槸S3绀轰緥鎵€灞曠ず鐨勫姛鑳姐€傚鏋滄垜鑷繁缂栧啓浠g爜锛屽ぇ閮ㄥ垎鏃堕棿灏嗚姳鍦ㄦ煡鎵綽otoAPI鏂囨。浠ョ‘淇濇垜缂栧啓浜嗘纭殑璋冪敤銆備娇鐢–odeWhisperer锛屽彧闇€涓夌閽熴€傝繖璁╂垜鎯冲埌浜嗕竴娈电儲浜虹殑浠g爜锛屾垜鑺变簡寰堝鏃堕棿鍦ㄤ笂闈細灏嗘暟鎹彂閫佸埌CloudWatch銆傝鎴戜滑鐪嬬湅CodeWhisperer鏄惁鍙互鎻愪緵甯姪锛屽皾璇曟彁渚涜瘎璁猴細鈥淔unctiontoemitaCloudWatchmetric鈥濄€?鍙戝嚭cloudwatch鐨勫嚱鏁癿etricdefput_metric_data(metric_name,metric_data):"""灏嗘寚鏍囨暟鎹斁鍏loudwatch:parammetric_name::parammetric_data::return:"""cloudwatch=boto3.client('cloudwatch')cloudwatch.put_metric_data(Namespace='my_namespace',MetricData=[{'MetricName':metric_name,'Dimensions':[{'Name':'string','Value':'string'},],'Unit':'Seconds','Value':metric_data},])闈炲父鏈夌敤锛丆W涓烘垜鑺傜渷浜嗗ぇ閲忕殑杈撳叆鍜屾煡闃匒PI鏂囨。鐨勬椂闂淬€傛垜鍙兘闇€瑕侀噸鏋勮繖娈典唬鐮侊紝浣嗗嵆浣挎垜浠庡ご寮€濮嬬紪鍐欏畠锛岀涓€姝ヤ篃鏄儚杩欐牱缂栧啓鍘熷閫昏緫銆傜幇鍦ㄥ彧闇€瑕佷笁绉掗挓锛屾垜鑺傜渷浜嗙紪鍐欏ぇ閲忔牱鏉夸唬鐮佺殑鏃堕棿锛屽苟涓斾负瀹氬埗鎴栭噸鏋勬彁渚涗簡涓€涓緢濂界殑璧风偣銆傞偅涔圕odeWhisperer鏄瘮鎴戞洿濂界殑绋嬪簭鍛樺悧锛熷敖绠℃湁涓€浜涘ご鏉℃柊闂伙紝浣咰W鐨勪唬鐮佹槸鍚︽瘮鎴戠殑濂藉苟涓嶉噸瑕併€傞噸瑕佺殑鏄紝瀹冧负鎴戣妭鐪佷簡澶ч噺鏃堕棿鍜岀簿鍔涳紝浣挎垜鑳藉涓撴敞浜庢敼杩涖€侀噸鏋勫拰娴嬭瘯銆傚畠璁╂垜鏈夋満浼氶€氳繃鎵挎媴涓€浜涘悓璐ㄧ殑绻侀噸宸ヤ綔鏉ユ垚涓轰竴鍚嶆洿濂界殑绋嬪簭鍛樸€備笂闈㈢殑渚嬪瓙鏄簹椹€婄殑宸ュ叿锛堝湪浜氶┈閫婄殑寮€婧愪唬鐮佷笂璁粌杩囷級鍙互鍋氬緱濡備綍鐨勪竴涓緥瀛愩€傚綋鐒讹紝鍦ㄥぇ澶氭暟寮€鍙戜汉鍛樿姳璐瑰ぇ閲忔椂闂寸殑鍦版柟锛屾瘮濡傜紪鍐欓鍩熺浉鍏崇殑閫昏緫锛孋W鍙兘鐢ㄥ涓嶅ぇ銆傝鎴戜滑鐪嬬湅CW浼氬嚭浠€涔堥棶棰樸€傛垜浠彲浠ヤ粠Python鏂囨。涓殑鏁版嵁绫荤ず渚嬪紑濮嬨€侤dataclassclassInventoryItem:"""鐢ㄤ簬璺熻釜搴撳瓨椤圭洰鐨勭被銆?""name:strunit_price:floatquantity_on_hand:int=0deftotal_cost(self)->float:returnself.unit_price*self.quantity_on_hand鎴戞兂鐭ラ亾CodeWhisperer鏄惁鍙互鍚戞绫绘坊鍔犳柟娉曘€傝鎴戜滑鐪嬬湅濡傛灉鎴戜滑娣诲姞娉ㄩ噴浼氬彂鐢熶粈涔堬細鈥滆繑鍥炶椤圭洰鐨勫嚱鏁版垚鏈秴杩?0缇庡厓鈥濓紵@dataclassclassInventoryItem:"""鐢ㄤ簬璺熻釜搴撳瓨椤圭洰鐨勭被銆?""name:strunit_price:floatquantity_on_hand:int=0deftotal_cost(self)->float:returnself.unit_price*self.quantity_on_hand#Function杩斿洖璇ュ晢鍝佺殑浠锋牸鏄惁瓒呰繃10缇庡厓defexpensive(self)->bool:returnself.unit_price>10闈炲父閰枫€傚€煎緱娉ㄦ剰鐨勬槸锛孋W涓鸿鍑芥暟鎻愪緵浜嗕竴涓洿瑙傜殑鍚嶇О锛屽苟鍖呭惈瀵箂elf鐨勫紩鐢ㄣ€傛帴涓嬫潵锛岃鎴戜滑灏濊瘯浣跨敤CW瀵瑰叾杩涜娴嬭瘯锛岀湅鐪嬪畠鏄惁杈惧埌浜嗘瀬闄愩€?娴嬭瘯InventoryItem鐨勫嚱鏁癱lassdeftest_inventory_item():"""TestInventoryItemclass:return:"""item=InventoryItem("Widget",10,5)assertitem.name=="Widget"assertitem.unit_price==10assertitem.quantity_on_hand==5assertitem.total_cost()==50assertnotitem.expensive()馃く鍝囷紒鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戣緭鍏ヤ簡璇勮锛孋W鑷姩瀹屾垚浜嗗墿涓嬬殑宸ヤ綔銆傛祴璇曚技涔庢槸CW鑺傜渷鏃堕棿鐨勪竴涓緢濂界殑渚嬪瓙銆傛垜涓嶉渶瑕佹氮璐规椂闂存€濊€冩祴璇曠殑浠峰€硷紝涔熶笉蹇呮妸鎵€鏈夌殑鎴愬憳鍙橀噺鍜屾柟娉曢兘鏁蹭竴閬嶃€侰odeWhisperer鐨勫眬闄愭€у畠杩樺浜庤捣姝ラ樁娈碉紝瀛樺湪寰堝闂銆傜爺绌朵汉鍛樺彂鐜帮紝GitHubCoPilot鐢熸垚鐨勪唬鐮佷腑鏈?0%瀛樺湪瀹夊叏婕忔礊銆侰odeWhisperer杩樻病鏈夎繖鏍风殑缁熻鏁版嵁锛屼絾AWS浼间箮鍦ㄥ己璋冨瀹夊叏鐨勫叧娉ㄣ€傛牴鎹垜鐨勬祴璇曪紝鍦ㄦ煇浜涙儏鍐典笅锛孋W鐢熸垚鐨勫嚱鏁版湁閿欒锛屾垨鑰呯粨鏋滀笉鏄垜鎯宠鐨勩€備笅闈㈢殑渚嬪瓙搴旇杩斿洖涓や釜鏂囦欢涓渶闀跨殑鍏叡琛岋紝浣嗗畠鍙繑鍥炵涓€涓尮閰嶈锛?Functiontofindthelongestcommonlineintwofilesdeffind_longest_common_line(file1,file2):"""Findthelongestcommonlineintwofilesfiles:paramfile1::paramfile2::return:"""withopen(file1,'r')asf1:withopen(file2,'r')asf2:forlineinf1:iflineinf2:returnlineCW杩樻湁鍏朵粬闂锛屽洜涓哄畠娌℃湁瓒冲鐨勪笂涓嬫枃鏉ョ悊瑙f垜鐨勬剰鍥俱€備粩缁嗘兂鎯筹紝濡傛灉鍛ㄥ洿鐨勪唬鐮佺粨鏋勮壇濂斤紝鎴戣寰楁槸鍙互瀹炵幇鐨勩€傚鏋滄偍浣跨敤棰嗗煙鍑嗙‘鐨勫悕璇嶈璁′唬鐮侊紝閭d箞寰堝鏄撴兂璞W鑳藉鍒涘缓棰嗗煙鐗瑰畾鐨勯€昏緫锛屽洜涓哄畠鏈夊緢濂界殑娉ㄩ噴銆傝嚦浜巄ug锛屼互鍚庤偗瀹氫細鏀硅繘鐨勩€俉rittenLast濡傛灉浣犲皾璇曚娇鐢–W锛屽畠鍙兘浼氳浣犳兂璞★細涔熻鏈変竴澶╋紝浼氭湁浜哄啓鍑轰汉绫诲巻鍙蹭笂鍐欑殑鏈€鍚庝竴琛屼唬鐮併€傚湪閭d箣鍓嶏紝CW鍙互甯姪浣犳垚涓轰竴涓洿濂界殑绋嬪簭鍛橈紝杩欐牱鍗充娇涓栫晫涓婃渶鍚庝竴涓▼搴忓憳鏄綘锛屾渶鍚庝竴琛屼汉绫讳唬鐮佷篃涓嶄細娌℃湁閿欒銆?/p>
