<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>service</artifactId>
<version>0.11.1</version>
</dependency>

1.1.2、安裝完成后,可以參考以下的代碼案例,通過綁定密鑰來調用chatGPT模型——

@GetMapping("/ai")
public void sendMsg() throws InterruptedException {
System.out.println("開始提問題~");
//GPT_TOKEN即你的代碼密鑰
OpenAiService service = new OpenAiService(GPT_TOKEN,Duration.ofSeconds(10000));
CompletionRequest completionRequest = CompletionRequest.builder()
//使用的模型
.model("text-davinci-003")
//輸入提示語
.prompt("你是一個工作助手,請幫忙設計一份活動策劃書")
//該值越大每次返回的結果越隨機,即相似度越小,可選參數,默認值為 1,取值 0-2
.temperature(0.5)
//返回結果最大分詞數
.maxTokens(2048)
//與temperature類似
.topP(1D)
.build();
service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
Thread.sleep(6000);
}

需要注意的是,若是部署在有”魔法代理”的Linux云服務商,代碼需要相應做一下調整,否則是無法訪問到ChatGPT的,只會出現以下異常提示:

java.net.ConnectException:Failed to connect to api.openai.com/2a03:2880:f10c:283:face:b00c:0:25de:443]

當日我在這個問題上就踩了一個坑。

解決的辦法很簡單,只需要做以下調整——

public void send1Msg() throws InterruptedException {

System.out.println("開始提問題~");
//需要額外設置一個能訪問chatGPT的魔法訪問代理
ObjectMapper mapper = defaultObjectMapper();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8889));
OkHttpClient client = defaultClient(GPT_TOKEN,Duration.ofSeconds(10000))
.newBuilder()
.proxy(proxy)
.build();
Retrofit retrofit = defaultRetrofit(client, mapper);
OpenAiApi api = retrofit.create(OpenAiApi.class);

//將設置的代理傳給OpenAiService即可
OpenAiService service = new OpenAiService(api);
CompletionRequest completionRequest = CompletionRequest.builder()
.model("text-davinci-003")
.prompt("你是一個工作助手,情幫忙設計一份活動策劃書,設計一份活動策劃書")
.temperature(0.5)
.maxTokens(2048)
.topP(1D)
.build();
service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
Thread.sleep(6000);
}

1.2、Go

官方推薦的是sashabaranov開源的go-gpt3 。

1.2.1、需要先安裝以下依賴包——

go get github.com/sashabaranov/go-openai

1.2.2、該開源項目提供的參考案例如下——

package main
import (
"context"
"fmt"
openai "github.com/sashabaranov/go-openai"
)
func main() {
client := openai.NewClient("your token")
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: openai.GPT3Dot5Turbo,
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "Hello!",
},
},
},
)
if err != nil {
fmt.Printf("ChatCompletion error: %v\n", err)
return
}
fmt.Println(resp.Choices[0].Message.Content)
}

1.3、Python

先下載Python版本的open庫——

$ pip install openai

安裝完成后,可以參考以下的代碼案例,通過綁定密鑰來調用chatGPT模型——

import os
import openai

# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

1.4、Node

先下載Node版本的openai庫——

$ npm install openai

安裝完成后,可以參考以下的代碼案例,通過綁定密鑰來調用chatGPT模型——

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
model: "text-davinci-003",
prompt: "Say this is a test",
temperature: 0,
max_tokens: 7,
});

二、密鑰認證

OpenAi API是需要使用API密鑰進行認證訪問。密鑰獲取方式,需要登錄https://platform.openai.com/account/api-keys頁面。

接著點擊【Create new secret key】生成一個新的密鑰,需要注意一點是,該密鑰生成時就得保存下來,否則過后是無法再進行查看的,例如,我的密鑰庫里先前已有一條密鑰,但現在無法再去確定這條密鑰是什么了。

順便提一點是,chatGPT是有免費額度的,調用API會消耗掉這些額度,我們可以在點擊左邊菜單【Usage】查看——

在調用OpenAiAPI請求時,需要在HTTP請求報頭中包含該API密鑰,例如——

Authorization: Bearer OPENAI_API_KEY

三、GPT請求設置

官方提供了一個curl通過密鑰調用API的請求案例,需要將案例里的$OPENAI_API_KEY替換為自己的API密鑰,在開啟了代理的服務器上運行,可以基于該案例測試服務器是否能正常調用到ChatGPT——

curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "這是一個測試請求!"}],
"temperature": 0.7
}'

我在自己的服務器上運行了,返回結果如下——

這個請求表示,查詢gpt-3.5-turbo模型完成文本處理,提示語為”這是一個測試請求!”,響應結果如下——

{
"id": "chatcmpl-75U8z1PVwDb0pA0EPhOMZVC1q7q11",
"object": "chat.completion",
"created": 1681541869,
"model": "gpt-3.5-turbo",
"usage": {
"prompt_tokens": 14,
"completion_tokens": 46,
"total_tokens": 60
},
"choices": [{
"message": {
"role": "assistant",
"content": "您好,這是一個回復測試請求的信息。請問您有什么需要測試的具體內容或問題嗎?我會盡力幫助您解決問題。"
},
"finish_reason": "stop",
"index": 0
}]
}

Request body各字段說明——

四、開發中添加敏捷信息審核層

首先得提一下2023年4月11日網信發布的一份《生成式人工智能服務管理辦法(征求意見稿)》,里面第四條明確表示,生成式人工智能算法或服務應當遵守法律法規的要求,尊重社會公德、公序良俗。這就意味著,未來在使用這類Ai接口進行輸入/輸出時,必須針對內容進行違規內容信息的過濾。

其實OpenAi有針對這塊內容審核提供了開放的API接口,可以免費使用。

若想在聊天API的輸出中添加一個敏捷信息攔截層,就可以在輸入/輸出信息時,調用該接口。例如,存在這樣一份API接口調用案例——

curl https://api.openai.com/v1/moderations \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"input": "測試一句話"}'

響應返回內容如下——

{
"id": "modr-75k0nHCOc0SR88t9xCNBHctPDMO8d",
"model": "text-moderation-004",
"results": [{
"flagged": false,
"categories": {
"sexual": false,
"hate": false,
"violence": false,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false
},
"category_scores": {
"sexual": 0.00012780998076777905,
"hate": 0.00013749735080637038,
"violence": 1.4757171129531343e-07,
"self-harm": 5.410008441231184e-09,
"sexual/minors": 1.5541245375061408e-06,
"hate/threatening": 6.1530336381565576e-09,
"violence/graphic": 2.9580141003293647e-08
}
}]
}

categories和category_scores具體字段值對應的說明如下表格所示——

官方表示目前該審核接口仍在不斷努力提高分類器的準確性,特別是仇恨、自殘和暴力等內容的分類。值得注意一點是,對非英語語言的支持目前是有限的,也就是說,中文的審核支持比較有限。

除了使用OpenAi提供的輸入/輸出信息審核接口,還可以開發敏感詞過濾系統,將傳給ChatGPT以及響應返回的數據,進行敏感詞過濾。

四、模型調用

4.1、模型列表

OpenAi提供了多種模型,可以通過執行以下查詢指令,查詢出API支持的模型類型——

curl https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"

出現出來的結果如下,應該有數十個模型,我用的最多是gpt-3.5-turbo,這是目前比較標準的型號版本——

{
"data": [
{
"id": "text-davinci-003",
"object": "model",
"created": 1669599635,
"owned_by": "openai-internal",
"permission": [...],
"root": "text-davinci-003",
"parent": null
},

{
"id": "gpt-3.5-turbo",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"permission": [...],
"root": "gpt-3.5-turbo",
"parent": null
},
.....
],
"object": "list"
}

4.2、查詢指定GPT模型詳情

可以基于以上模型類表接口,查詢出具體模型實例的詳情,包括模型的基本信息、所有者及權限等——

curl https://api.openai.com/v1/models/gpt-3.5-turbo \
-H "Authorization: Bearer $OPENAI_API_KEY"

查詢出gpt-3.5-turbo的模型詳情如下——

{
"id": "gpt-3.5-turbo",
"object": "model",
"created": 1677610602,
"owned_by": "openai",
"permission": [
{
"id": "modelperm-BmdmcAa1aQwToDxri3DFbZw9",
"object": "model_permission",
"created": 1681343255,
"allow_create_engine": false,
"allow_sampling": true,
"allow_logprobs": true,
"allow_search_indices": false,
"allow_view": true,
"allow_fine_tuning": false,
"organization": "*",
"group": null,
"is_blocking": false
}
],
"root": "gpt-3.5-turbo",
"parent": null
}

GPT-3.5模型可以理解和生成自然語言或代碼,在GPT-3.5版本當中,最有能力和最具成本收益的模型是GPT-3.5-turbo,它是基于原有的3.5版本模型進行的迭代優化,可以更好地完成傳統任務。目前最新模型是GPT-4,具有更先進的常識和推理能力,但還沒有開放免費API接口。

以下是GPT-3.5模型列表介紹——

官方推薦使用GPT-3.5-turbo而不是其他GPT-3.5模型,因為它的成本更低。gpt-3.5-turbo的性能與text-davinci-003相似,但每個token的價格是它的10%,官方推薦在大多數情況下使用gpt-3.5-turbo。

五、圖像生成調用

給定一個提示和/或一個輸入圖像,模型會生成一個新的圖像,例如,我想讓它畫一只胖貓——

curl https://api.openai.com/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "畫一只可愛的大胖貓",
"n": 2,
"size": "1024x1024"
}'

然后,它確實給我畫了兩張圖——

{
"created": 1681547551,
"data": [
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-LqdibnOuIlW8xc7Lfh2REsXo/user-6D0yIziBFiX73mCUwNwOwczJ/img-jKdFuRLINlkCeFL1QCWFZtId.png?st=2023-04-15T07%3A32%3A31Z&se=2023-04-15T09%3A32%3A31Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-04-15T08%3A28%3A22Z&ske=2023-04-16T08%3A28%3A22Z&sks=b&skv=2021-08-06&sig=Rbe8x3ZdEcoScQOXrkxGAe1G8rGOrO%2B4wzmzZwotP68%3D"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-LqdibnOuIlW8xc7Lfh2REsXo/user-6D0yIziBFiX73mCUwNwOwczJ/img-00FKmNWnDm5p21CS89UPm56T.png?st=2023-04-15T07%3A32%3A31Z&se=2023-04-15T09%3A32%3A31Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-04-15T08%3A28%3A22Z&ske=2023-04-16T08%3A28%3A22Z&sks=b&skv=2021-08-06&sig=KVsxjwPIsJFC0cFEjRqVPrcckGxipp5BiiUmayPmqMM%3D"
}
]
}

通過圖url鏈接,可以查看圖片,若是在代碼里,可以直接丟給<img src=””>里顯示出圖片。不過,我讓openai給我畫的是一只胖貓,圖一我還能理解,但是,圖二,這個貓屁股著實有些離譜了(自帶??)……

體驗下來,感覺與midjourney還是有較大區別的,只能說,勉強能用吧。

圖像生成接口參數如下——

六、ChatGPT使用技巧和注意事項

6.1、調整temperature參數

我在前文調用API的參數當中,有提及一個temperature參數,翻譯過來叫溫度。該參數用于指定生成文本時的隨機性和多樣性,默認值為1,介于 0 和 2 之間,較高的溫度值值(如 0.8)會導致GPT輸出內容更隨機,而較低的溫度值(如 0.2)會使其更加可以預測和具備確定性。

打一個比喻,ChatGPT中的溫度值就演員演戲——

較低的溫度值可以看作是“按照劇本表演”,演員是什么水平,就演出什么樣子。溫度值低生成的文本比較保守和確定,適合需要準確性和連貫性的任務,比如內容摘要、機器翻譯等。

較高的溫度值可以看成“即興表演”,生成的文本可能更加隨機和多樣性,當然,也可能更加糟糕,這種情況比較適合用來創作和探索性任務,比如生成對話、創意寫作等。

當然,這個temperature參數并非萬能的,在某些文本內容當中,可能幾乎感受不到太多差別。

若溫度值設置為0,那么,模型將總會返回相同或非常相似的內容,當溫度高于0時,每次提交相同的提示會導致生成不同內容。官方表示,溫度值在0~1之間,基本上可以控制模型生成比較滿意的答案。

例如,當用戶詢問“如何形容一只胖貓?”時,聊天機器人可能會生成以下不同的回答:

在提問當中,使用這個參數的方法很簡單,只需要在提示語后面跟上“Use a temperature of 0.5”即可——

6.2、傳遞給API的數據是否會被存儲

用戶比較關心一個問題是,我們傳給ChatGPT的數據是否會被存儲。官方表示,自2023年3月1日起,將保留您的API數據30天,但不再使用通過API發送的數據來改進模型。這就意味著,請勿傳輸涉及個人隱私或者安全相關的信息,避免數據泄漏。

本文章轉載微信公眾號@寫代碼的朱季謙

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
OLLama詳細的 api 介紹 不完全指南 python 直接調用 OLLama api 翻譯助手演示
下一篇
AI開發實戰(002):自定義實現 LangChang ChatModel 來集成 Claude 2 API 調用
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
成人永久aaa| 日本欧美在线观看| 9i在线看片成人免费| 欧美视频一区二区三区四区| 久久久蜜臀国产一区二区| 精品一区二区三区在线播放| 日韩欧美成人一区| 亚洲成人免费在线观看| 欧美人妇做爰xxxⅹ性高电影| 国产精品国产三级国产普通话蜜臀| 国产美女精品人人做人人爽| 波多野结衣中文字幕一区| 免费欧美日韩国产三级电影| 91麻豆精品国产自产在线| 九九国产精品视频| 国产精品激情偷乱一区二区∴| 99国产精品国产精品久久| 日韩avvvv在线播放| 亚洲免费看黄网站| 久久久久久久久久电影| 色欧美日韩亚洲| 最新国产精品久久精品| 欧美丰满嫩嫩电影| 精品视频一区三区九区| 精品一区二区三区在线观看| 日本不卡中文字幕| 蜜臂av日日欢夜夜爽一区| 亚洲成av人影院| 亚洲另类在线制服丝袜| 国产日本一区二区| 亚洲精选视频在线| 久久青草欧美一区二区三区| 99久久婷婷国产综合精品电影| 国产ts人妖一区二区| www.成人在线| 9191久久久久久久久久久| 国产美女视频一区| 亚洲第一成年网| 久久精品视频在线看| 亚洲人成人一区二区在线观看| 亚洲成人自拍一区| 国产精品自拍一区| 欧美日韩国产a| 亚洲日本免费电影| 日产欧产美韩系列久久99| 精品少妇一区二区三区在线播放 | 日本一区二区高清| 夜夜嗨av一区二区三区中文字幕| 亚洲精品乱码久久久久久久久| 制服.丝袜.亚洲.另类.中文 | 亚洲成人激情自拍| 欧美精品久久99| 欧美日韩国产三级| 亚洲一区二区视频在线| 欧日韩精品视频| 国产精品久久久久久亚洲伦| 精品一区二区三区在线播放视频| 欧美日韩亚洲高清一区二区| 亚洲国产另类av| 欧美大胆一级视频| 97久久超碰精品国产| 亚洲欧美日韩国产手机在线| 国产伦精一区二区三区| 成年人午夜久久久| 亚洲免费观看高清完整| 在线精品观看国产| 国产91精品一区二区麻豆网站| 亚洲人成伊人成综合网小说| 激情久久五月天| 在线视频一区二区三区| 加勒比av一区二区| 亚洲欧美日韩国产手机在线| 日韩视频国产视频| 99re这里只有精品视频首页| 裸体在线国模精品偷拍| 亚洲高清视频中文字幕| 国产精品国产三级国产aⅴ中文| 欧美图区在线视频| 欧美日韩国产综合视频在线观看| eeuss鲁片一区二区三区在线观看| 美女视频黄久久| 精品在线一区二区三区| 国产精品久99| 亚洲欧洲av色图| 91精品国产综合久久久蜜臀图片| 日本精品一区二区三区四区的功能| 国产精品白丝jk黑袜喷水| 日日夜夜免费精品| 九色综合国产一区二区三区| 高清国产一区二区三区| 色综合天天性综合| 热久久国产精品| 日韩成人精品视频| 亚洲丝袜自拍清纯另类| 亚洲男女一区二区三区| 亚洲摸摸操操av| 日本怡春院一区二区| 韩国成人在线视频| 粉嫩一区二区三区性色av| yourporn久久国产精品| 成人免费视频app| 亚洲老司机在线| 免费高清不卡av| 国产午夜亚洲精品理论片色戒| 精品国产乱码久久久久久老虎| 亚洲精品一区二区精华| 国产精品久久久久久久久搜平片 | 欧美精品丝袜中出| av不卡在线播放| 6080午夜不卡| 日韩一区二区三区视频在线| 日韩一区二区不卡| 日韩视频永久免费| 韩国欧美一区二区| 日韩一区二区在线播放| 国产女人水真多18毛片18精品视频| 亚洲电影第三页| 欧洲精品在线观看| 欧美电影免费观看完整版| 天天综合网天天综合色| 欧美精品在线一区二区三区| 亚洲一区二区高清| 欧美一级欧美三级在线观看| 麻豆视频观看网址久久| 久久久久国产成人精品亚洲午夜| 国产精品亚洲视频| 日本不卡一区二区三区 | 日韩av一二三| 久久久国产一区二区三区四区小说| 日韩av高清在线观看| 26uuu另类欧美亚洲曰本| 樱花影视一区二区| 国产日韩欧美不卡| 99re这里只有精品视频首页| 精品国产乱码久久| 国内精品国产三级国产a久久| 久久se这里有精品| 国产拍欧美日韩视频二区| 欧美精品久久久久久久多人混战 | 欧美韩国日本不卡| 色94色欧美sute亚洲13| 国产激情一区二区三区四区| 国产一区二区三区电影在线观看| 亚洲天堂成人网| 国产一区二区三区av电影 | 欧洲亚洲国产日韩| 国产欧美日韩卡一| 日韩和欧美一区二区三区| 亚洲精品视频自拍| 久久人人超碰精品| 久久er99热精品一区二区| 中文一区二区完整视频在线观看| 在线观看视频一区二区| 99re6这里只有精品视频在线观看| 免费在线观看成人| 不卡电影一区二区三区| 日本一区二区免费在线观看视频 | 国产一区在线精品| 制服丝袜中文字幕一区| 日韩精彩视频在线观看| 欧美成人官网二区| 在线免费亚洲电影| 国产日韩欧美电影| 亚洲精品国产无天堂网2021| 亚洲精品免费一二三区| 91极品视觉盛宴| 欧美精品vⅰdeose4hd| 麻豆91免费观看| 美女高潮久久久| 国产成人av一区二区| 欧美日韩中文另类| 在线精品视频一区二区| 9191国产精品| 久久伊99综合婷婷久久伊| 亚洲三级小视频| 高清成人在线观看| 成人做爰69片免费看网站| 欧美日韩国产首页| 中文字幕日韩一区二区| k8久久久一区二区三区| 欧美成人精品福利| 亚洲香蕉伊在人在线观| 亚洲大片免费看| 欧美亚洲国产bt| 亚洲福利电影网| 色综合久久久久综合| 国产精品国产三级国产三级人妇| a级高清视频欧美日韩| 日韩精品一区二区三区四区| 亚洲国产日日夜夜| 麻豆精品一区二区三区| 精品久久久久久综合日本欧美| 麻豆成人综合网| 国产精品乱码久久久久久| 欧洲一区在线电影| 麻豆精品国产传媒mv男同| 在线电影欧美成精品| 亚洲欧美成人一区二区三区| 91麻豆精品国产91久久久久久久久 | 精品亚洲porn|