最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

ChatGPT是程序員的好幫手?還是要干掉程序員?

2023-04-14 09:44 作者:IT編程培訓(xùn)-源碼時(shí)代  | 我要投稿

需求

剛好我準(zhǔn)備搭建一個(gè)對(duì)接ChatGPT的服務(wù),部署在云服務(wù)器上,這樣應(yīng)該就可以更方面的使用ChatGPT的服務(wù)了。

看了下騰訊云上的云服務(wù)的價(jià)錢,還是比較合適的,不知道618的時(shí)候會(huì)不會(huì)還有優(yōu)惠。

?


第一步,詢問ChatGPT

好了,我們把這個(gè)需求拋給 ChatGPT ,讓它說一說要如何對(duì)接。

?


哇,是不是很強(qiáng),不僅步驟清晰,而且還有核心代碼,每一步還都貼心的做了說明。

第二步,實(shí)戰(zhàn)

好的我們這就按照ChatGPT說的,去找到自己的API key

?


然后,我們照著它所說的創(chuàng)建好項(xiàng)目:

<dependencies>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-web</artifactId>
????????</dependency>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-test</artifactId>
????????????<scope>test</scope>
????????</dependency>
????????<dependency>
????????????<groupId>com.openai</groupId>
????????????<artifactId>openai-java-sdk</artifactId>
????????????<version>0.1.0</version>
????????</dependency>
????</dependencies>

但是,我們在加載Maven 時(shí)出現(xiàn)了一個(gè)錯(cuò)誤:

?


這里我們發(fā)現(xiàn)了ChatGPT瞎編了一個(gè)不存在的庫 ⊙﹏⊙b汗

?

第三步,調(diào)試ChatGPT

而且,但我們向他出錯(cuò)的原因時(shí),他竟然還有模有樣的給出了回答。

但是實(shí)際上,并沒有這個(gè)sdk,好了我們還是自己發(fā)送Http請求,實(shí)現(xiàn)最基礎(chǔ)的方式來對(duì)接吧。


import?cn.itsource.mychatgpt.service.OpenAIService;
import?org.springframework.beans.factory.annotation.Autowired;
import?org.springframework.web.bind.annotation.PostMapping;
import?org.springframework.web.bind.annotation.RequestBody;
import?org.springframework.web.bind.annotation.RestController;

@RestController
public?class?OpenAiController {

????@Autowired
????private?OpenAIService openAIService;

????@PostMapping("/MyChat")
????public?String?myChat(@RequestBody?String?prompt) {
????????return?openAIService.myChat(prompt);
????}
}

import?com.alibaba.fastjson.JSON;
import?org.springframework.http.*;
import?org.springframework.stereotype.Service;
import?org.springframework.web.client.RestTemplate;

import?java.util.*;

@Service
public?class?OpenAIServiceImpl implements?OpenAIService {

????private?static?final?String?API_KEY = "sk-YOU-API-KEY";
????private?static?final?String?API_URL = "https://api.openai.com/v1/completions";
????private?static?final?HttpHeaders headers = new?HttpHeaders();

????static?{
????????headers.set("Content-Type", "application/json");
????????headers.set("Authorization", "Bearer "?+ API_KEY);
????}

????public??String?myChat(String?prompt) {
????????RestTemplate restTemplate = new?RestTemplate();

?? ????// String prompt = "Once upon a time";
????????String?model = "text-davinci-002";
????????int?maxTokens = 500;

????????// 拼接json格式的請求體
????????//String requestBody = "{\"prompt\": \"" + prompt + "\", \"model\": \"" + model + "\", \"max_tokens\": " + maxTokens + "}";
????????
????????Map?data = new?HashMap();
????????data.put("model",model);
????????data.put("prompt",prompt);
????????data.put("max_tokens",maxTokens); ???????
????????// 用Json對(duì)象轉(zhuǎn)一下,避免拼接字符串的問題
????????String?requestBody = JSON.toJSONString(data);

????????HttpEntity<String> entity = new?HttpEntity<>(requestBody, headers);

????????ResponseEntity<String> response = restTemplate.postForEntity(API_URL, entity, String.class);
????????if?(response.getStatusCode() == HttpStatus.OK) {
????????????System.out.println(response.getBody());
????????} else?{
????????????System.out.println("Request failed with status code: "?+ response.getStatusCode());
????????????throw?new?RunTimeException("網(wǎng)絡(luò)異常,請稍后重試!");
????????}
????????return?response.getBody();
????}
}

?

但是這個(gè)請求的地址依然有問題,GPT依然一本正經(jīng)的告訴了我一些看起來還蠻靠譜的解決方案:

?


?

?

第四步,人工介入實(shí)現(xiàn)開發(fā)

算了,我們還是老老實(shí)實(shí)的參考官方文檔吧,于是我讓ChatGPT告訴了我OpenAI的開發(fā)文檔地址:

?


?

官方文檔的地址: https://platform.openai.com/docs/api-reference

通過查看官方文檔里,我們終于找到了:

?


?

?

這回我們清楚了,要想和ChatGPT聊天,我們需要發(fā)送POST請求,請求地址是:https://api.openai.com/v1/chat/completions?

并且要設(shè)置請求頭參數(shù):

"Content-Type: application/json"?和 "Authorization: Bearer $OPENAI_API_KEY"

Json 格式請求體,必須要包括 model?和 messages

{
????"model":?"gpt-3.5-turbo",
????"messages":?[{"role":?"user",?"content":?"Hello!"}]
}

當(dāng)然,還有一些其他的參數(shù),這里我就不一一介紹了,有興趣的可以自己參考官方文檔的說明。

?

這次我們在到PostMan里測試一下,添加好請求頭,我們發(fā)送個(gè)請求測試一下

?


?

要想實(shí)現(xiàn)聊天,讓ChatGPT知道我們的上下文只需要在下次請求的時(shí)候,把他回答的 "role": "assistant"?和 content也放到 messages 數(shù)組中就可以實(shí)現(xiàn)了。

OK,清楚了請求地址和參數(shù),我們修改代碼中的配置。

終于,我們成功通過SpringBoot 實(shí)現(xiàn)了ChatGPT的對(duì)接:

?


剩下的,只需要找一個(gè)合適的前端頁面,發(fā)送請求,就可以愉快的和ChatGPT對(duì)話了。

?

?

總結(jié):

通過這次使用ChatGPT的輔助開發(fā)流程,我們可以發(fā)現(xiàn),對(duì)于一些簡單的知識(shí),ChatGPT基本上沒得問題, 他可以給出具體的實(shí)現(xiàn)步驟和常規(guī)的解決方案。

但是,一旦專業(yè)性比較強(qiáng)一點(diǎn)的任務(wù),ChatGPT 就開始編了。它 會(huì)給你編一個(gè)不存在的庫,甚至還給出不存在的github連接, 還會(huì)瞎編源碼(文件名對(duì), 內(nèi)容不對(duì)), 你給它說不存在, 它就換個(gè)名字,換個(gè)鏈接繼續(xù)編。

而這些問題的本質(zhì),是 ChatGPT的實(shí)現(xiàn)原理導(dǎo)致的(大概率的語言模型),它并不清楚它所生成的答案到底是什么,只是給予概率的計(jì)算,生成的合乎語法格式的大概率答案。

總的來說,如果你不懂編程,直接用它生成的代碼,是跑不起來的(代碼缺失+Bug),還是需要程序員來定位到出錯(cuò)的地方,并解決。

所以,對(duì)于這樣的情況來說,人工智能AI 它只是一個(gè)工具,未來程序員還是不可或缺的,它可以成為程序員的好幫手,肯定無法替代程序員。


ChatGPT是程序員的好幫手?還是要干掉程序員?的評(píng)論 (共 條)

分享到微博請遵守國家法律
临安市| 铜梁县| 郓城县| 高安市| 巴里| 宁河县| 界首市| 武胜县| 石柱| 成安县| 额尔古纳市| 武胜县| 承德县| 定襄县| 九台市| 明水县| 分宜县| 东阳市| 厦门市| 诸暨市| 五常市| 磴口县| 武强县| 新源县| 临夏市| 奇台县| 白朗县| 广汉市| 资兴市| 阳曲县| 盐山县| 湟中县| 中卫市| 古蔺县| 荣昌县| 临高县| 黎川县| 沽源县| 东城区| 淅川县| 静乐县|