Java Intelligence Spring AI:5分钟构建智能聊天模型的利器

发布于:2024-10-24 编辑:匿名 来源:网络

鍓嶈█ 铏界劧Python鏈?杩戝凡缁忔垚涓虹紪绋嬭瑷?鐨勯閫夛紝浣咼ava鍦ㄤ汉宸ユ櫤鑳介鍩熺殑鍦颁綅涔熸槸涓嶅彲鍔ㄦ憞鐨勶紝杩欒褰掑姛浜庡己澶х殑Spring妗嗘灦銆傞殢鐫?浜哄伐鏅鸿兘鎶?鏈殑蹇?熷彂灞曪紝鎴戜滑姝e浜庝竴涓笉鏂垱鏂扮殑鏃朵唬銆備粠鏅鸿兘璇煶鍔╂墜鍒板鏉傜殑鑷劧璇█澶勭悊绯荤粺锛屼汉宸ユ櫤鑳藉凡缁忔垚涓虹幇浠g敓娲诲拰宸ヤ綔涓嶅彲鎴栫己鐨勪竴閮ㄥ垎銆傚湪姝よ儗鏅笅锛孲pring AI椤圭洰杩庢潵浜嗗彂灞曟満閬囥?傚敖绠¤椤圭洰浠嶭angChain鍜孡lamaIndex绛塒ython椤圭洰涓辈鍙栦簡鐏垫劅锛屼絾Spring AI骞朵笉鏄竴涓畝鍗曠殑绉绘銆傝椤圭洰鐨勫垵琛锋槸鎺ㄥ姩鐢熸垚寮忎汉宸ユ櫤鑳藉簲鐢ㄧ▼搴忕殑寮?鍙戯紝鑰屼笉浠呬粎鏄?Python 寮?鍙戜汉鍛樸??Spring AI鐨勬牳蹇冪悊蹇垫槸鎻愪緵楂樺害鎶借薄鐨勭粍浠朵綔涓哄紑鍙慉I搴旂敤鐨勫熀纭?銆傝繖浜涙娊璞$粍浠跺叿鏈夊绉嶅疄鐜版柟寮忥紝浣垮紑鍙戜汉鍛樿兘澶熶互鏈?灏戠殑浠g爜鏇存敼杞绘澗浜ゆ崲鍜屼紭鍖栧姛鑳芥ā鍧椼?傚叿浣撴潵璇达紝Spring AI 鎻愪緵浜嗘敮鎸佸涓富娴佹ā鍨嬫彁渚涘晢鐨勫姛鑳斤紝鍖呮嫭 OpenAI銆佸井杞?佷簹椹?娿?佽胺姝屽拰 Hugging Face銆傛敮鎸佺殑妯″瀷绫诲瀷娑电洊澶氫釜棰嗗煙锛屼粠鑱婂ぉ鏈哄櫒浜哄埌鏂囨湰鐢熸垚銆佸浘鍍忓鐞嗐?佽闊宠瘑鍒瓑銆傚叾璺ㄦā鍨嬫彁渚涜?呯殑鍙Щ妞岮PI璁捐涓嶄粎鏀寔鍚屾鍜屾祦寮忔帴鍙o紝杩樹负鐗瑰畾妯″瀷鍔熻兘鎻愪緵浜嗙伒娲荤殑閫夋嫨銆傛澶栵紝Spring AI杩樻敮鎸佸皢AI妯″瀷杈撳嚭鏄犲皠鍒癙OJO锛屼互鍙婁笌涓绘祦鐭㈤噺鏁版嵁搴撴彁渚涘晢锛堝Apache Cassandra銆丄zure Vector Search銆丮ongoDB Atlas绛夛級鏃犵紳闆嗘垚鐨勮兘鍔涖?傚叾鍔熻兘涓嶄粎闄愪簬妯″瀷鏈韩锛岃繕鍖呮嫭ETL妗嗘灦浠ュ強鏁版嵁宸ョ▼涓殑鍚勭渚挎嵎鍑芥暟璋冪敤锛屼娇寰桝I搴旂敤鐨勫紑鍙戞洿鍔犻珮鏁堝彲闈犮?傚揩閫熷疄鎴樻湰鏈熷疄鎴樻槸鎴戜滑鐨勭涓?绡囨枃绔狅紝鏃ㄥ湪蹇?熸紨绀篠pring AI椤圭洰锛岃澶у浜嗚В鍏朵紭鍔垮拰鐗圭偣銆備负浜嗘柟渚垮ぇ瀹朵娇鐢紝鎴戜篃灏嗘湰鏈熸簮鐮佹彁浜ゅ埌浠撳簱锛屽苟娣诲姞浜唖wagger-ui鐨凙PI璋冪敤鎺ュ彛锛屼娇鐢ㄨ捣鏉ユ洿鍔犳柟渚裤?傚鏋滄偍瀵规鎰熷叴瓒o紝娆㈣繋鍏虫敞鏄庢槦銆傚悓鏃讹紝鎴戜篃浼氱户缁淮鎶よ繖涓」鐩紝纭繚瀹冧繚鎸佹椿璺冦?備粨搴撳湴鍧?锛欰I渚濊禆骞跺垱寤洪」鐩??image 鑱婂ぉ妯″瀷 鍦ㄥぇ鍨嬫?″瀷涓紝鑱婂ぉ妯″瀷璧风潃鑷冲叧閲嶈鐨勪綔鐢ㄣ?傞偅涔堬紝SpringAI鏄浣曞皝瑁呯殑鍛紵鏈湡涓昏灞曠ず濡備綍鏈夋晥浣跨敤Spring AI鐨凜hatClient锛岀壒鍒槸鏈緥涓璖pring AI鏅鸿兘鑱婂ぉ妯″瀷鐨勫簲鐢ㄣ?傛棩蹇楃骇鍒?鍦ㄦ杩囩▼涓紝濡傛灉鎯虫煡鐪嬭姹傜殑璇︾粏鏃ュ織锛岃鍔″繀灏嗘棩蹇楃骇鍒皟鏁翠负DEBUG銆傚叿浣撴搷浣滃涓嬶細 闀滃儚妯″瀷閰嶇疆 褰撴垜浠娇鐢ㄦā鍨嬫椂锛岄鍏堣鍦ㄩ」鐩腑娣诲姞鐩稿叧渚濊禆锛屾坊鍔犱緷璧栨渶鍚庨渶瑕佸湪閰嶇疆鏂囦欢涓~鍐欑浉搴旂殑閰嶇疆淇℃伅銆傚鏋滃皢鍥惧儚娉ㄥ叆鍒版ā鍨嬩腑锛屾ā鍨嬪氨鍙互鑷姩娉ㄥ叆锛屾垜浠彲浠ョ洿鎺ヤ娇鐢ㄣ?傚湪鏈婕旂ず涓紝鎴戜滑灏嗗睍绀轰笁绉嶈嚜瀹氫箟妯″瀷娉ㄥ叆鏂规硶锛屽涓嬶細 浠g爜璇█锛歫ava copy private final ChatClient myChatClientWithSystem;绉佷汉鏈?缁?ChatClient myChatClientWithParam锛?/** * 鍙互閫夋嫨鑷姩娉ㄥ叆鎴栬?呭湪鏂规硶鍐呰嚜瀹氫箟锛岃瀹㈡埛绔病鏈夌郴缁熸枃鏈?/ private final ChatClient chatClient;鍏叡 MyController(ChatClient.Builder chatClientBuilder, MyChatClientWithSystem myChatClient, MyChatClientWithParam myChatClientWithParam) { this.chatClient = chatClientBuilder.build(); this.myChatClientWithSystem = myChatClient.client() ; this.myChatClientWithParam = myChatClientWithParam.client(); }濂藉惂锛屾垜瑙i噴涓?涓嬭繖涓夌鎯呭喌锛?chatClient锛氳繖鏄粯璁よ嚜鍔ㄦ敞鍏ョ殑ChatClient锛屼笉闇?瑕佷换浣曟潯浠躲??myChatClientWithParam锛氳繖鏄竴涓娇鐢ㄥ弬鏁版敞鍏ョ郴缁熸枃鏈殑 ChatClient銆?myChatClientWithSystem锛氳繖鏄竴涓敞鍏ョ郴缁熸枃鏈殑 ChatClient銆傚ソ浜嗭紝绗竴绉嶆儏鍐典笉鐢ㄥ鐞嗭紝鎴戜滑鍙渶瑕侀?氳繃閰嶇疆绫荤畝鍗曢厤缃互涓嬩袱涓狢hatClient鍗冲彲銆備唬鐮佽瑷?锛歫ava copy @Configurationclass Config { @Bean MyChatClientWithSystem myChatClientWithSystem(ChatClient.Builder builder) { MyChatClientWithSystem build = MyChatClientWithSystem.builder() .client(builder.defaultSystem("浣犳槸鍕ゅ鐨凧ava鏈嶅姟鍣ㄧ紪鐮佸憳灏忓畤锛屾垜鏄嚧鍔涗簬鐮旂┒AI鎶?鏈殑濂ョ锛岀儹鐖辨妧鏈氦娴佸拰鍒嗕韩锛岀儹鐖卞紑婧愮ぞ鍖猴紝鏄竴鍚嶄紭绉?鐨勬帢閲戜綔鑰呫?佽吘璁簯鍐呭鍏卞悓鍒涗綔鑰呫?侀樋閲屼簯涓撳鍗氫富銆佸崕涓轰簯浜戝垎浜笓瀹躲??鈥?) .build()).build();杩斿洖鏋勫缓锛?} @Bean MyChatClientWithParam myChatClientWithParam(ChatClient.Builder builder) { MyChatClientWithParam build = MyChatClientWithParam.builder() .client(builder.defaultSystem("鎮ㄦ槸 {user}.") .build()).build();杩斿洖鏋勫缓锛?}} 绠?鍗曠殑鏂囨湰绛旀 棣栧厛锛岃鎴戜滑璁ㄨ涓?浜涚畝鍗曠殑闂鍜岀瓟妗堛?備唬鐮佽瑷?锛歫ava copy @GetMapping("/ai") String GenerationByText(String userInput) { return this.chatClient.prompt() .user(userInput) .call() .content();鍦ㄨ繖娈电畝娲佺殑浠g爜涓紝瀹炵幇浜嗗悇绉嶅皝瑁呭拰浜や簰銆備负浜嗘洿濂界殑婕旂ず锛屾垜浠睍绀轰竴涓嬶細鍥惧儚灏佽鍥炵瓟浜嗗疄浣撳璞°?傚ぇ瀹堕兘鐭ラ亾Java鏄竴绉嶉潰鍚戝璞$殑缂栫▼璇█銆傚洜姝わ紝鍦ㄥ姞鍏ヤ汉宸ユ櫤鑳芥妧鏈椂锛屼负浜嗘弧瓒充笟鍔¢渶姹傦紝灏嗗璞$撼鍏ュ叾涓槸蹇呬笉鍙皯鐨勩?傞偅涔堬紝浜哄伐鏅鸿兘鐨勭瓟妗堝浣曡兘澶熻Spring妗嗘灦鑷姩灏佽鎴愬璞″憿锛熻鎴戜滑鎺㈣涓?涓嬶細瀹氫箟瀵硅薄璁板綍绫伙細鍚嶄负 ActorFilms 鐨勮褰曠被鐨勫畾涔夈?傜敤浜庡皝瑁呯浉鍏冲瓧娈电殑璁板綍绫昏嚜鍔ㄥ疄鐜颁簡toString()銆乪quals()銆乭ashCode()鍜実etter鏂规硶锛屼娇寰楀璞$殑瀛楃涓茶〃绀恒?佺浉绛夋瘮杈冨拰鍝堝笇璁$畻鍙樺緱绠?鍗曘?傛偍鍙互鐩存帴浣跨敤 actorFilms.toString()銆乤ctorFilms.equals(anotherActorFilms) 鍜?actorFilms.hashCode()銆備唬鐮佽瑷?锛歫ava copy public record ActorFilms(String actor, List movie) {} 浠g爜璇█锛歫ava copy @GetMapping("/ai-Entity") ActorFilms GenerationByEntity() { ActorFilms actorFilms = chatClient.prompt() .user 锛堚?滀负闅忔満婕斿憳鐢熸垚鐢靛奖浣滃搧琛ㄣ?傗?濓級 .call() .entity(ActorFilms.class);杩斿洖婕斿憳鐢靛奖锛?}濡傛偍鎵?瑙侊紝鍙渶灏嗗疄浣撹缃负 ActorFilms 鍗冲彲銆傛帴涓嬫潵锛屾垜浠渶瑕佹鏌ヨ繑鍥炵殑瀵硅薄鏄惁绗﹀悎棰勬湡銆傚綋鐢ㄦ埛杈撳叆淇℃伅鏃讹紝绯荤粺杩斿洖瀹炰綋绫诲瀷绛旀銆備箣鎵?浠ヨ兘澶熷皝瑁呰繖绫诲疄浣撶被鍨嬬瓟妗堬紝鏄洜涓虹郴缁熷湪鍙戦?佷俊鎭椂锛屼笉浠呬細鍙戦?佺敤鎴疯緭鍏ョ殑鏂囨湰锛岃繕浼氬湪鍏跺悗闈㈡坊鍔犻檮鍔犱俊鎭?傜敓鎴愰殢鏈烘紨鍛樼殑鐢靛奖浣滃搧琛ㄣ?俓r\n鎮ㄧ殑鍝嶅簲搴旈噰鐢?JSON 鏍煎紡銆俓r\n涓嶅寘鍚换浣曡В閲婏紝浠呮彁渚涢伒寰鏍煎紡涓斺?嬧?嬫棤鍋忓樊鐨?RFC 鍏煎 JSON 鍝嶅簲銆俓r\n璇峰嬁鍦ㄦ偍鐨勫搷搴斻?俓r\n浠庤緭鍑轰腑鍒犻櫎 ```json markdown銆俓r\n杩欐槸鎮ㄧ殑杈撳嚭蹇呴』閬靛畧鐨?JSON 鏋舵瀯瀹炰緥锛歕r\n```{\r\n \"$schema\" : \" \"绫诲瀷\" : \"瀵硅薄\",\r\n \"灞炴?" : {\r\n \"婕斿憳\" : {\r\n \"绫诲瀷\" : \"瀛楃涓瞈"\r\n },\r\n \"鐢靛奖\" : {\r\n \"绫诲瀷\" : \"鏁扮粍\",\r\n \"椤圭洰\" : {\r\n \"type\" : \"string\"\r\n }\r\n }\r\n }\r\n}```\r\n鍥犳锛屽綋鍚庣画杩斿洖鐨勬暟鎹负澶у瀷妯″瀷鏃讹紝渚嬪{鈥滄紨鍛樷?濓細鈥滆壘绫宠帀路甯冩湕鐗光?濓紝鈥滅數褰扁?濓細鈥滄槑鏃ヨ竟缂樷?濓紝鈥滃畨闈欑殑鍦版柟鈥濓紝鈥滅┛鏅媺杈剧殑濂崇帇鈥濓紝鈥滆竟澧冩潃鎵嬧?濓紝鈥淢鈥漚ry Poppins Returns鈥潁锛岃繖鏍稴pring灏卞彲浠ュ府鎴戣嚜鍔ㄥ皝瑁呬竴涓嬨?傚皝瑁呯瓟妗堝垪琛ㄥ疄浣撳璞°?傚綋鎴戜滑闇?瑕佽繑鍥炰竴涓垪琛ㄨ?屼笉鏄璞℃椂锛屾垜浠彲浠ュ緢鏂逛究鍦颁娇鐢⊿pring AI鐨勫皝瑁呭姛鑳芥潵瀹炵幇銆傝鎴戜滑鏉ョ湅鐪嬫?庝箞鍋氾細 浠g爜璇█锛歫ava Copy @GetMapping("/ai-EntityList") List GenerationByEntityList() { List actorFilms = chatClient.prompt() .user("鐢熸垚 5 鐨勭墖鐩堡濮喡锋眽鍏嬫柉鍜屾瘮灏斅烽粯閲岀殑鐢靛奖銆?) .call() .entity(new ParameterizedTypeReference() { }); return actorFilms; } 鐩存帴浣跨敤 ParameterizedTypeReference 瀵硅薄鍗冲彲銆備负浜嗚 Spring 鑷姩灏佽杩斿洖缁撴灉锛屽彂閫佹秷鎭椂涔熷寘鍚繑鍥炴牸寮忎俊鎭綔涓烘彁绀恒??鐜板湪璁╂垜浠湅涓?涓嬫紨绀虹殑缁撴灉銆?鍦ㄥ墠闈㈡墍绀虹殑绀轰緥涓紝澶фā鍨嬪畬鎴愪簡绛旀骞跺皢鍏跺叏閮ㄨ緭鍑哄埌銆備絾鏄紝鍓嶇涓嶈兘銆備负浜嗗疄鐜版墦瀛楁満鏁堟灉锛屾垜浠喅瀹氫娇鐢ㄦ祦寮忕瓟妗堟潵婕旂ず銆備唬鐮佽瑷?锛歫ava copy @GetMapping("/ai-streamWithParam") Flux GenerationByStreamWithParam() { var converter = new BeanOutputConverter<>(new ParameterizedTypeReference() { }); Flux Flux = this.chatClient.prompt() .user(u -> u.text(""" 鐢熸垚闅忔満婕斿憳鐨勭數褰变綔鍝併??{format} """) .param("format", converter. getFormat())) .stream() .content();瀛楃涓插唴瀹?= Flux.collectList().block().stream().collect(Collectors.joining()); List actorFilms = converter.convert(content);鏃ュ織銆備俊鎭紙鈥滄紨鍛樼數褰憋細{}鈥濓紝婕斿憳鐢靛奖锛?杩斿洖閫氶噺锛涗负浜嗘紨绀虹敤鎴蜂俊鎭腑鐨勫弬鏁颁紶閫掞紝鎴戝娴佺瓟妗堟墽琛屼簡闃诲鎿嶄綔銆傚鏋滄偍涓嶉渶瑕佸畠锛屽彲浠ュ皢鍏跺垹闄ゃ?傚彟澶栵紝鐢变簬鎴戦渶瑕佸皝瑁呬竴涓垪琛ㄥ璞★紝鎵?浠ユ垜杩涜浜嗛樆濉炴搷浣溿?傚叾瀹炶繖鍜屼笂闈㈣鐨勪竴鏍凤紝灏辨槸Q&A涓洿鎺ュ畾涔変簡澶фā鍨嬭繑鍥炵殑鏍煎紡銆傚ソ鐨勶紝鎴戜滑鐪嬩竴涓嬭繑鍥炵粨鏋溿?傚甫鏈夌郴缁熶俊鎭殑鍥惧儚瀹㈡埛绔?杩欐鎴戜滑灏嗘紨绀哄鎴风鐨勯厤缃?傚湪瀵硅瘽涓紝鎴戜滑鐭ラ亾瀛樺湪涓夌韬唤锛氱郴缁熴?佺敤鎴枫?佸姪鎵嬨?傚埌鐩墠涓烘锛屾垜浠繕娌℃湁灞曠ず绯荤粺韬唤锛屼絾鎴戜滑涔嬪墠宸茬粡浠ョ郴缁熺殑褰㈠紡瀹氫箟浜嗗鎴风銆傛墍浠ヨ繖娆℃垜浠氨鐩存帴浣跨敤锛?浠g爜璇█锛歫ava Copy @GetMapping("/ai-withSystemClient") Map GenerationByTextWithSystemClient(String message) { return Map.of("completion", myChatClientWithSystem.prompt( ) .user(娑堟伅).call().content());杩欐浠g爜寰堢畝鍗曪紝浣跨敤ChatClient鍗冲彲銆傜敤鎴疯緭鍏ュ悗锛屼細杩斿洖涓?涓狹ap绫诲瀷鐨勭瓟妗堬紝鍏朵腑key涓衡?渃ompletion鈥濓紝瀵瑰簲鐨剉alue涓虹瓟妗堝唴瀹广?傝鎴戜滑鐪嬬湅缁撴灉銆備粠鍥句腑鍙互鐪嬪嚭锛屼粬瀹為檯涓婂凡缁忓寘鍚簡鎴戠殑绯荤粺淇℃伅銆傚甫鍙傛暟淇℃伅鐨勫鎴风褰撻渶瑕佹紨绀哄甫鍙傛暟鐨勬儏鍐垫椂锛屽彲浠ヨ?冭檻浠ヤ笅鏂规硶锛氱敤鎴疯緭鍏ュ悗锛岃繑鍥炰竴涓狹ap绫诲瀷鐨勭瓟妗堬紝鍏朵腑鍖呭惈閿?煎锛岄敭涓衡?渃ompletion鈥濓紝鍊间负鐩稿簲鐨勭瓟妗堛?傚湪瀹為檯涓氬姟鍦烘櫙涓紝鍙傛暟鏄笉鍙伩鍏嶇殑锛屽洜姝よ繖绉嶆紨绀烘柟娉曞彲浠ユ洿濂藉湴灞曠ず浜哄伐鏅鸿兘鐨勯?傜敤鎬с?傝鎴戜滑缁х画鐪嬭繖涓?鐐癸細 浠g爜璇█锛歫ava Copy @GetMapping("/ai-withParamClient") Map GenerationByTextWithParamClient(String message, String user) { return Map.of("completion", myChatClientWithParam.prompt( ).system(sp ->sp.param("鐢ㄦ埛",user)).user(message).call().content());杩欎篃鏄緢绠?鍗曠殑涓?鍙ヨ瘽锛屾垜浠潵鐪嬬湅鏁堟灉锛?鍥剧墖 濡傛灉浣犲绛旀鎰熷埌鍥版儜?紝鎴戜滑鍙互鏌ョ湅鍚庡彴浼犺緭鏃ュ織鏉ヤ簡瑙d紶杈撶殑鍙傛暟璇︾粏淇℃伅銆傛濡傛偍鎵?娉ㄦ剰鍒扮殑锛屾垜浠疄闄呬笂宸茬粡鎴愬姛璁剧疆浜嗗弬鏁般?傝亰澶╄褰曞湪鏈?鍚庝竴涓富瑕佺殑涓氬姟鍦烘櫙涓紝姣忎釜浜洪兘浼氭湁鑷繁鐨勮亰澶╄褰曘?傛垜浠笉鑳戒竴鐩磋繘琛屾棤鐘舵?佸璇濓紝閭f槸涓嶆槑鏅虹殑銆傚洜姝わ紝鑱婂ぉ璁板綍鍔熻兘鏄繀瑕佺殑銆傝櫧鐒禨pring AI杩樻病鏈夊畬鍏ㄧ‘瀹氬浣曞皝瑁呰繖閮ㄥ垎鍔熻兘锛屼絾鏄畠宸茬粡鎻愪緵浜嗕竴涓畝鍗曠殑瀵硅薄绫讳緵鎴戜滑璋冪敤銆傛垜浠潵鐪嬩竴涓嬶細 浠g爜璇█锛歫ava 澶嶅埗 @GetMapping("/ai-chatMemory") String GenerationByChatMemory(HttpServletRequest request, String userInput) { String sessionId = request.getSession().getId(); } chatMemory.add(sessionId, new UserMessage(userInput));瀛楃涓插唴瀹?= this.chatClient.prompt() .advisors(new MessageChatMemoryAdvisor(chatMemory)) .user(userInput) .call() .content(); chatMemory.add(sessionId, new AssistantMessage(content ));杩斿洖鍐呭锛?}瀹為檯涓婏紝杩欑鎯呭喌涓嬶紝鎴戜滑闇?瑕佽嚜宸卞垱寤哄苟缁存姢涓?涓亰澶╄褰曞璞°?傚洜姝わ紝姣忔鑱婂ぉ涔嬪墠鍜屼箣鍚庯紝鎴戜滑閮藉簲璇ュ皢闇?瑕佺殑淇℃伅娣诲姞鍒板璞′腑骞剁洿鎺ヤ娇鐢ㄣ?傛垜浠潵鐪嬬湅杩欑鍋氭硶鐨勬晥鏋滐細 imageimage 鍙互鐪嬪埌锛岃繖閲屽叾瀹炲凡缁忔妸鍘嗗彶璁板綍鍛堢幇鍑烘潵浜嗐?傛?荤粨閫氳繃鏈枃鐨勪粙缁嶏紝鎴戜滑娣卞叆浜嗚В浜哠pring AI椤圭洰鐨勪紭鍔垮拰鐗圭偣锛屼互鍙婂湪瀹為檯搴旂敤涓揩閫熺殑瀹炰緥銆?Spring AI浣滀负楂樺害鎶借薄鐨勪汉宸ユ櫤鑳藉簲鐢ㄥ紑鍙戞鏋讹紝涓哄紑鍙戣?呮彁渚涗簡渚挎嵎鐨勬ā鍨嬫敮鎸併?佺伒娲荤殑鍔熻兘妯″潡浜ゆ崲鍜屼紭鍖栬兘鍔涖?傚畠涓嶄粎鍙互灏咥I妯″瀷杈撳嚭鏄犲皠鍒癙OJO锛岃繕鍙互涓庝富娴佺煝閲忔暟鎹簱鎻愪緵鍟嗘棤缂濋泦鎴愶紝浠庤?屾樉鐫?鎻愰珮寮?鍙慉I搴旂敤绋嬪簭鐨勬晥鐜囧拰鍙潬鎬с?備笌Python鐩告瘮锛孞ava鍦ㄤ紒涓氱骇搴旂敤鍜屽ぇ鍨嬬郴缁熶腑鍏锋湁鏄剧潃鐨勪紭鍔裤??Java璇█鐨勯潤鎬佺被鍨嬪拰涓ユ牸鐨勭紪璇戞椂妫?鏌ヤ娇浠g爜鏇村姞鍋ュ.锛屾洿鏄撲簬缁存姢锛岀壒鍒?傚悎闇?瑕侀珮鍙潬鎬у拰闀挎湡鏀寔鐨勯」鐩?傚悓鏃讹紝Java鐢熸?佺郴缁熺殑鎴愮啛鍜屽箍娉涘簲鐢ㄤ繚璇佷簡寮?鍙戣?呭彲浠ヨ交鏉炬壘鍒颁赴瀵岀殑搴撳拰宸ュ叿鏀寔锛屽姞蹇紑鍙戝懆鏈燂紝闄嶄綆椤圭洰椋庨櫓銆傚笇鏈涙湰鏂囪兘澶熷府鍔╂偍鐞嗚В鍜屽簲鐢⊿pring AI椤圭洰銆備篃娆㈣繋鎮ㄥ叧娉ㄥ拰浣跨敤鏈」鐩紝骞舵寔缁叧娉ㄦ洿鏂板拰缁存姢銆傝鎴戜滑鍏卞悓瑙佽瘉浜哄伐鏅鸿兘鎶?鏈殑涓嶆柇杩涙鍜屽簲鐢紒鎴戞槸灏忓畤锛屼竴鍚嶅嫟濂嬬殑Java鏈嶅姟鍣ㄧ▼搴忓憳锛岃嚧鍔涗簬鐮旂┒AI鎶?鏈殑濂ョ銆傛垜鐑埍鎶?鏈氦娴佸拰鍒嗕韩锛屽寮?婧愮ぞ鍖哄厖婊$儹鎯呫?傛澃鍑烘帢閲戜綔鑰呫?佽吘璁簯鍐呭鑱斿悎鍒涗綔鑰呫?侀樋閲屼簯涓撳鍗氫富銆佸崕涓轰簯鍒嗕韩涓撳銆?馃殌 鐩墠鎴戠殑鎺㈢储閲嶇偣鏄疉I Agent搴旂敤銆傛垜瀵瑰畠寰堝ソ濂囷紝骞朵笉鏂帰绱㈠畠鐨勬綔鍔涘拰鍙兘鎬с?傚鏋滀綘涔熷杩欎釜棰嗗煙鍏呮弧鐑儏锛屾杩庝笌鎴戜氦娴佸垎浜紝璁╂垜浠竴璧锋帰绱㈡湭鐭ョ殑棰嗗煙锛?馃挕鎴戜細姣笉鐘硅鲍鍦板垎浜垜涓汉鍦ㄦ妧鏈亾璺笂鐨勬帰绱㈠拰缁忛獙锛屽笇鏈涜兘缁欎綘鐨勫涔犲拰鎴愰暱甯︽潵涓?浜涘惎鍙戝拰甯姪銆?馃専娆㈣繋鍏虫敞鍔姏鐨勫皬瀹囷紒 馃専

Java Intelligence Spring AI:5分钟构建智能聊天模型的利器

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 新药研发公司成益生物完成新一轮超亿元融资

    新药研发公司成益生物完成新一轮超亿元融资

    据3月16日消息,新药研发公司上海成益生物科技有限公司(简称“成益生物”)近日公告完成新一轮融资超亿元。 本轮融资由元和元电、康熙环球投资基金联合领投。 青松资本、华盖资本及现有股东国药资本参与本轮投资。 本轮融资将主要用于支持多个代谢新药项目的临床试验、临床前

    06-17

  • 思创优完成1000万美元A轮融资,由Pedaily资本

    思创优完成1000万美元A轮融资,由Pedaily资本

    投资圈(微信ID:pedaily)7月6日消息,ASIC芯片公司思创优近日完成1万美元A轮融资,投资方是币资本。 这是Coin Capital继天使轮投资ASIC芯片公司思创优之后,对区块链基础赛道的持续投资。 资料显示,思创优是一家在区块链、人工智能领域提供高速、低功耗计算芯片及服务的创

    06-18

  • 英伟达黄仁勋大赌注:行走在破产边缘,打造万亿级AI“军火商”

    英伟达黄仁勋大赌注:行走在破产边缘,打造万亿级AI“军火商”

    营收翻三倍达到1亿美元,利润从去年同期的6.8亿美元直接飙升至92亿。 在AI浪潮下,英伟达最近一个季度的表现超出预期,从台积电手中夺回了桂冠,成为“芯片之王”。 人工智能领域正在爆发一场战争,而英伟达是唯一的军火商。 一位华尔街分析师曾这样评价。 英伟达如今享受到的

    06-21

  • 证监会:目前科创板、创业板平均审核注册周期大幅缩短至5个月以上

    证监会:目前科创板、创业板平均审核注册周期大幅缩短至5个月以上

    据证监会网站消息,新闻发言人表示,目前科创板、创业板的排队现象企业申请IPO类似于历史上的“堰塞湖”。 “问题各有不同。 当时市场关注的焦点是IPO尚未常态化,停停启动,预期不明确。 对于一些企业来说,从第一次提交申请到获得上市需要2到3年的时间。 ”近年来,证监会保

    06-17

  • 洋葱数学引入君联资本、腾讯超亿元C轮战略投资,在线教育如何突围?

    洋葱数学引入君联资本、腾讯超亿元C轮战略投资,在线教育如何突围?

    据投资界2月28日消息,洋葱数学今日正式宣布完成C轮融资,融资总额超过1.2亿元,由君联资本、腾讯共同投资。 洋葱数学联合创始人及CEO杨临风表示,本轮融资将全力推动和加速互联网辅导时代的到来。   洋葱数学由哈佛大学计算机专业毕业生杨临风、杜克大学生物科学、教育和

    06-18

  • 有故事的公司:亚化实业的上市路线图

    有故事的公司:亚化实业的上市路线图

    和所有新上市的公司一样,这是一家有故事的公司。 2019年8月27日,证监会发文宣布,四川雅化实业集团股份有限公司(以下简称“雅化实业”)通过审核,将成为首家落地雅化的公司。 四川省某市。 国内A股市场本土企业。   女士雅化实业的董事长郑戎也将加入雅安首富的行列。

    06-17

  • 腾讯发布混元大模型!微信里有“贾维斯”是什么感觉?

    腾讯发布混元大模型!微信里有“贾维斯”是什么感觉?

    8月31日注定成为国产大车型历史上的关键转折点。 国内多家大型模型公司已陆续通过注册方式向社会开放服务。 这意味着国产大型车型进入了一个新的阶段。 国产大机型能够为数亿用户提供服务,也会面临同样的多重审视和挑战。 刚刚,腾讯也正式发布了其自主研发的通用大语言模型

    06-21

  • 非洲娱乐社交平台“Mochat”获百万元种子轮融资

    非洲娱乐社交平台“Mochat”获百万元种子轮融资

    据投资界4月21日消息,非洲娱乐社交平台“Mochat”近日宣布获得百万元种子轮融资种子轮融资,由五岳资本领投,传音战略投资和孵化器肥城创新战略投资,本轮融资将用于技术研发、用户运营和品牌建设。 Mochat成立于2006年,目标客户为非洲20-35岁的用户。 它要满足年轻一代的

    06-17

  • 林氏集团亮相SEMICON China 2019,分享创新技术和行业洞察

    林氏集团亮相SEMICON China 2019,分享创新技术和行业洞察

    3月20-22日,全球领先的半导体制造设备和服务提供商林氏集团携尖端半导体制造工艺和技术亮相SEMICON China,其分享了对半导体行业发展的深刻见解和见解。 作为中国半导体行业的重大盛会之一,SEMICON China为行业各方提供了交流、合作和创新的平台,以满足日益增长的芯片制造

    06-06

  • 金融科技公司BITE Investments完成Pre-A轮融资

    金融科技公司BITE Investments完成Pre-A轮融资

    投资界(ID:pedaily)据5月19日消息,金融科技公司BITE Investments(以下简称“BITE”)完成Pre-A轮融资,由全球金融服务提供商 ApexGroup Ltd.(“Apex”)牵头投资。 同时,Apex与BITE也将展开深入的业务合作,为全球尤其是亚洲资产管理市场提供更好的解决方案。 据了解,

    06-18

  • 餐饮一年完成两轮千万美元融资,帮助中小餐饮商户收入翻倍

    餐饮一年完成两轮千万美元融资,帮助中小餐饮商户收入翻倍

    据投资界9月21日消息,一站式餐饮赋能服务商“餐饮赋能” ”一年内连续完成两轮融资。 首轮融资中,获得纪源资本、红点中国领投的近千万美元A轮融资,以及CCV创世资本领投、纪源资本、红点中国跟投的1000万美元A+轮融资。 家居货成立于今年7月。 它是从外卖代理业务开始的。

    06-18

  • 打造“核弹显卡”已经不能满足NVIDIA了

    打造“核弹显卡”已经不能满足NVIDIA了

    每年8月,NVIDIA都会在全球最重要的计算机图形会议SIGGRAPH上秀出自己的“肌肉”。 五年前,NVIDIA CEO黄仁勋在SIGGRAPH上发布了首款支持光线追踪的显卡Quadro RTX。 这是NVIDIA自G80以来最重要的产品,将NVIDIA GPU从GTX时代推向了RTX时代。 当时的NVIDIA还是一家非常纯粹的

    06-21