精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文告訴你如何用 Python 操作 ChatGPT

人工智能
如果要通過 API 來訪問 GPT 模型,那么不管什么版本都是收費的,至于費用多少則取決于 token 的數量。GPT 會對文本進行分詞,切分后的結果就是一個個的 token,而 token 的數量決定了費用。

楔子

ChatGPT 相信大家都用過,你覺得它給你的工作帶來了多少幫助呢?目前我們使用 ChatGPT 的方式是通過瀏覽器訪問 chat.openai.com,然后輸入問題,就像下面這樣。

圖片圖片

除了網頁之外,ChatGPT 還提供了 API 接口,讓我們可以在程序中訪問 GPT 模型。需要注意的是,如果使用網頁,那么 GPT 3.5 是免費的,GPT 4 則是一個月收費 20 美元。

但如果要通過 API 來訪問 GPT 模型,那么不管什么版本都是收費的,至于費用多少則取決于 token 的數量。GPT 會對文本進行分詞,切分后的結果就是一個個的 token,而 token 的數量決定了費用。

那么 Python 如何訪問 GPT 模型呢?首先需要安裝一個包,直接 pip install openai 即可。

然后登錄 platform.openai.com/api-keys,創建一個 API-KEY,如果要通過接口訪問,它是不可或缺的。

下面就可以通過 Python 來訪問了,我們舉例說明。

生成文本

我們可以給 GPT 一段話,讓它以文本的形式生成回復內容。

from openai import OpenAI
import httpx
# 我的 API_KEY,以及代理
from config import API_KEY, PROXIES

# openai 底層是通過 httpx 發送請求
# 但因為眾所周知的原因,我們不能直接訪問,需要設置代理
httpx_client = httpx.Client(proxies=PROXIES)
# 然后指定 api_key 參數和 httpx_client 參數
# 如果你不指定 httpx_client,那么內部會自動創建,但此時就無法設置代理了
# 當然要是你當前機器的網絡能直接訪問,也可以不用指定 http_client 參數
client = OpenAI(
    api_key=API_KEY,
    http_client=httpx_client
)

chat = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "1 + 1 等于幾",
        },
    ],
    model="gpt-3.5-turbo",
)
# chat.choices[0] 返回的是 pydantic 里面的 BaseModel
# 我們可以調用 dict 方法轉成字典
print(chat.choices[0].dict())
"""
{
    'finish_reason': 'stop', 
    'index': 0, 
    'logprobs': None, 
    'message': {'content': '1 + 1 等于2。',
                'role': 'assistant', 
                'function_call': None, 
                'tool_calls': None}
}
"""

然后解釋一下 client.chat.completions.create 里面的參數。

messages

ChatGPT 是有記憶功能的,它在回答的時候會結合上下文。那么問題來了,如果是通過接口的話,怎么把這個上下文傳遞過去呢?

# 注意 messages 里面的字典的 "role" 這個 key
# 如果 "role" 為 "user",那么 "content" 表示用戶問的問題
# 如果 "role" 為 "assistant",那么 "content" 表示 GPT 的回答
chat = client.chat.completions.create(
    messages=[
        {
            "role": "user",  # 開發者輸入內容
            "content": "記住:高老師總能分享出好東西",
        },
        {
            "role": "assistant",  # GPT 回答
            "content": "好的,我知道了",
        },
        {
            "role": "user",  # 開發者輸入內容
            "content": "請問誰總能分享出好東西,告訴我那個人的名字",
        },
    ],
    model="gpt-3.5-turbo",
)
print(chat.choices[0].dict())
"""
{
    'finish_reason': 'stop', 
    'index': 0, 
    'logprobs': None, 
    'message': {'content': '高老師',
                'role': 'assistant', 
                'function_call': None, 
                'tool_calls': None}
}
"""

所以 messages 是一個列表,它里面可以接收多個消息,如果希望 GPT 擁有記憶功能,那么每一次都要將完整的對話傳遞過去,顯然這會比較耗費 token。

舉個例子,我們通過接口來模擬網頁版 GPT。

messages = []  # 負責保存消息
while True:
    content = input("請輸入內容:")
    messages.append({"role": "user", "content": content})
    # 發送請求
    chat = client.chat.completions.create(
        messages=messages, model="gpt-3.5-turbo"
    )
    # 除了通過 chat.choices[0].dict() 轉成字典之外
    # 也可以直接通過 chat.choices[0].message.content 獲取回復內容
    gpt_reply = chat.choices[0].message.content
    print(f"GPT 回答如下:{gpt_reply}")
    # 將 GPT 的回復添加進去,開啟下一輪對話
    messages.append({"role": "assistant", "content": gpt_reply})

執行程序,效果如下:

圖片圖片

由于每次都要將歷史對話一起帶過去,所以這個過程比較耗費 token。

model

然后是 model 參數,它表示 GPT 所使用的模型,支持如下種類。

"gpt-4-0125-preview",
"gpt-4-turbo-preview",
"gpt-4-1106-preview",
"gpt-4-vision-preview",
"gpt-4",
"gpt-4-0314",
"gpt-4-0613",
"gpt-4-32k",
"gpt-4-32k-0314",
"gpt-4-32k-0613",
"gpt-3.5-turbo",
"gpt-3.5-turbo-16k",
"gpt-3.5-turbo-0301",
"gpt-3.5-turbo-0613",
"gpt-3.5-turbo-1106",
"gpt-3.5-turbo-0125",
"gpt-3.5-turbo-16k-0613",

一般選擇 gpt-3.5-turbo 或 gpt-4-turbo-preview 即可。

stream

默認情況下,GPT 會將內容全部生成完畢,然后一次性返回。顯然這在耗時比較長的時候,對用戶不是很友好。如果希望像網頁那樣,能夠將內容以流的形式返回,那么可以將該參數設置為 True。

chat = client.chat.completions.create(
    messages=[
        {"role": "user",
         "content": "請重復一句話:高老師總能分享出好東西"}
    ],
    model="gpt-3.5-turbo",
    stream=True  # 流式返回
)
for chunk in chat:
    print(chunk.choices[0].delta.dict())
"""
{'content': '', 'function_call': None, 'role': 'assistant', 'tool_calls': None}
{'content': '高', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '老', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '師', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '總', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '能', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '分享', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '出', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '好', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '東', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': '西', 'function_call': None, 'role': None, 'tool_calls': None}
{'content': None, 'function_call': None, 'role': None, 'tool_calls': None}
"""

如果 GPT 生成內容時耗時比較長,那么這種實時響應的方式會更友好。

n

GPT 回復內容的時候,可以讓它同一時刻回復多個版本,然后我們選擇一個滿意的。具體返回多少個,取決于 n 的大小,默認為 1。

chat = client.chat.completions.create(
    messages=[
        {"role": "user",
         "content": "世界上最高的雪山叫什么"}
    ],
    model="gpt-3.5-turbo",
    n=3,  # 同時生成三個回復
)
print(chat.choices[0].message.content)
"""
珠穆朗瑪峰(Mount Everest)
"""
print(chat.choices[1].message.content)
"""
世界上最高的雪山是珠穆朗瑪峰。珠穆朗瑪峰是位于喜馬拉雅山脈的一座高峰,
也是世界上海拔最高的山峰,海拔達到了8848米。
由于其極高的海拔和陡峭的山脊,珠穆朗瑪峰成為許多登山者夢寐以求的挑戰之一。
每年都有數百名登山者前往珠穆朗瑪峰嘗試攀登,但由于極端的氣候和高海拔帶來的極大危險,
很多人最終未能成功登頂。
"""
print(chat.choices[2].message.content)
"""
世界上最高的雪山是被稱為珠穆朗瑪峰,位于喜馬拉雅山脈,
是地球上海拔最高的山峰,也是登山愛好者們夢寐以求征服的目標。
"""

這里為了閱讀方便,我手動對回復的內容進行了換行。以上就是參數 n 的作用,不過說實話,為了不浪費 token,我們一般都會使用默認值 1。

生成圖像

再來看看如何生成圖像。

images = client.images.generate(
    # 提示詞
    prompt="幫我生成一張蕾姆的照片,她穿著婚紗站在教堂里",
    # 模型,可選 "dall-e-2" 或 "dall-e-3"
    model="dall-e-3",
    # 同時生成多少張照片,默認為 1
    n=1,
    # 圖像質量,可選 "standard" 或 "hd"
    # "hd" 更精細,但只支持 dall-e-3
    quality="standard",
    # 圖片的響應格式,可選 "url" 或 "b64_json"
    response_format="url",
    # 圖像大小,如果模型是 dall-e-2,可選 "256x256", "512x512", "1024x1024"
    # 如果模型是 dall-e-3,可選 "1024x1024", "1792x1024", "1024x1792"
    size="1024x1024",
    # 圖像風格,可選 "vivid" 或 "natural","vivid" 更加超現實
    style="vivid",
)

print(images.data[0].url)
"""
返回的圖片鏈接
"""
print(images.data[0].b64_json)
"""
因為 response_format 是 url,所以 b64_json 為空
"""
print(images.data[0].dict())
"""
{
    "b64_json": None,
    "revised_prompt": "修正之后的提示詞",
    "url": "https://...."
}
"""

效果如下:

圖片圖片

感覺不太像啊,頭發不應該是藍色的嗎?

小結

以上就是 Python 調用 ChatGPT 的相關內容,當然還有很多其它功能,比如生成圖像之后,如果覺得不滿意,可以在原有圖像的基礎上繼續編輯。有興趣可以自己了解一下。

責任編輯:武曉燕 來源: 古明地覺的編程教室
相關推薦

2019-03-14 15:59:44

前端開發編程

2024-01-30 09:58:00

IP屬地在線服務

2019-03-19 15:28:30

Linux 系統 數據

2024-10-28 00:00:03

IP屬地地址

2023-02-07 07:32:12

Istio微服務治理

2022-08-26 12:46:04

NQA網絡質量分析

2022-04-25 15:23:18

分布式系統故障

2021-01-22 08:13:58

Java日期時間API

2018-04-26 04:20:42

數據科學簡歷編程

2021-04-09 13:23:27

比特幣貨幣數據

2018-03-01 18:15:10

2022-05-06 08:09:28

代碼提交開發

2022-01-18 08:04:37

數據分析 Python

2021-04-25 21:18:27

技術開發爬蟲

2023-05-04 08:24:52

ChatGPT產品經理工業革命

2020-03-23 20:40:25

比特幣數字貨幣區塊鏈

2022-08-26 07:02:57

Python工具分割

2023-05-11 08:26:56

2018-03-15 21:56:59

程序員技能Java

2019-08-16 08:30:22

數據庫PostgreSQL Oracle
點贊
收藏

51CTO技術棧公眾號

国产成人手机高清在线观看网站| 在线三级中文| 久久亚洲欧美| 深夜福利日韩在线看| 污污的视频免费观看| 四虎亚洲成人| 久久精品亚洲精品国产欧美| 91免费看国产| 天天操中文字幕| 国产精品探花在线观看| 欧美一区二区免费观在线| 男人插女人视频在线观看| 天堂a中文在线| 精品一区二区三区久久| 狠狠色噜噜狠狠狠狠97| 青青草原成人| 亚洲国产综合一区| 奇米精品一区二区三区四区| 欧美黑人巨大精品一区二区| 日韩一区二区a片免费观看| 欧美视频第一| 亚洲va欧美va国产va天堂影院| 亚洲精品一区二区三区av| 粉嫩小泬无遮挡久久久久久| 日韩成人午夜电影| 2019中文字幕全在线观看| 看免费黄色录像| 伊人久久大香线蕉综合网站 | 丁香一区二区| 欧美三级电影精品| 男人靠女人免费视频网站| √天堂8在线网| 国产精品毛片大码女人| 欧美高清性xxxxhd| 人妻少妇一区二区三区| 国产成人综合自拍| 成人日韩av在线| 中文av免费观看| 亚洲欧美网站| 亚洲 日韩 国产第一| 久草视频免费在线播放| 牛牛国产精品| 久久精品国产免费观看| 自拍偷拍你懂的| 精品国产99| 亚洲区一区二区| 双性尿奴穿贞c带憋尿| 国产劲爆久久| 精品精品国产高清a毛片牛牛 | 96日本xxxxxⅹxxx17| 视频在线在亚洲| 热久久这里只有精品| 亚洲精品www久久久久久| 国产一区清纯| 国产做受高潮69| 日本一区二区三区免费视频| 欧美日韩视频| 九九热精品视频在线播放| 午夜精品福利在线视频| 久久久久久久久久久久久久| 久久精品视频99| 三级影片在线看| 精品91在线| 992tv在线成人免费观看| 日韩欧美一区二区一幕| 在线亚洲激情| 日本免费久久高清视频| 欧美成人精品网站| 经典一区二区三区| 亚洲影院色在线观看免费| 99国产在线播放| 丁香婷婷综合色啪| 激情小说网站亚洲综合网| 亚洲aaa在线观看| 国产日韩欧美在线一区| 亚洲在线观看一区| www.久久ai| 性感美女久久精品| 女性隐私黄www网站视频| 亚洲mmav| 日韩一区二区免费视频| 毛茸茸free性熟hd| 国产欧美日韩在线观看视频| 中文字幕综合一区| 欧美日韩人妻精品一区二区三区| 亚洲激情av| 国产精品白丝jk喷水视频一区| 国语对白做受69按摩| 韩国v欧美v亚洲v日本v| 99热在线播放| 国产福利免费在线观看| 亚洲欧美日韩系列| 久草青青在线观看| 91嫩草国产线观看亚洲一区二区| 亚洲第一福利视频| 国产精品成人在线视频| 亚洲午夜精品久久久久久app| 欧美在线不卡区| 在线免费观看高清视频| 成人美女视频在线观看| 亚洲国产一区二区在线 | 日韩av电影院| 国产男女裸体做爰爽爽| 91年精品国产| 波多野结衣激情| 校园春色亚洲| 91精品国产91久久久久久最新毛片| 亚洲一区二区在线免费| 久久神马影院| 欧美又大又硬又粗bbbbb| 精品国产乱码一区二区三| 久久久亚洲精品石原莉奈| 最新av网址在线观看| 欧美粗大gay| 精品日韩一区二区| 精品在线观看一区| 亚洲深爱激情| 99久久无色码| 麻豆最新免费在线视频| 福利视频第一区| 韩国三级在线看| 国产精品久久久久久| 日韩av免费一区| 秋霞网一区二区| 亚洲欧美一区二区不卡| 在线免费观看视频黄| 天堂综合网久久| 欧美激情在线一区| 国产xxxx在线观看| 中文字幕一区二区三区精华液| 欧美黄色免费影院| 国产精品videossex| 九九热最新视频//这里只有精品| 伊人色综合久久久| 欧美激情在线一区二区三区| 99精品人妻少妇一区二区| 爱爱精品视频| 欧美国产精品人人做人人爱| 国产色在线视频| 亚洲四区在线观看| 香蕉视频999| 国产高清一区二区| 国产在线视频欧美| 免费网站免费进入在线| 欧美日韩综合在线免费观看| 美女被到爽高潮视频| 免费在线成人| 欧洲视频一区二区三区| 黑人巨大亚洲一区二区久| 日韩成人小视频| 国产高潮久久久| www亚洲一区| av免费在线播放网站| 米奇777超碰欧美日韩亚洲| 日本韩国欧美精品大片卡二| 六十路在线观看| 91成人免费网站| 欧美xxxx精品| 国产一区在线看| a级片一区二区| 99久久香蕉| 亚洲18私人小影院| 欧洲一区av| 精品污污网站免费看| 中文国语毛片高清视频| 国产麻豆精品视频| www.亚洲视频.com| 日韩中文av| 国产精品情侣自拍| mm1313亚洲国产精品美女| 亚洲成人999| 怡红院av久久久久久久| 中文字幕一区在线观看| 香蕉网在线视频| 亚洲三级毛片| 欧美一区二区三区电影在线观看| 欧美成人免费全部网站| 欧美黄色片在线观看| 涩爱av在线播放一区二区| 欧美在线不卡一区| 亚洲区一区二区三| 国产a精品视频| 成人在线免费观看av| 99国产精品一区二区| 国产高清在线一区二区| 日韩电影免费观| 久久精品国产电影| 日韩一区av| 欧美一区二区三区啪啪| a v视频在线观看| 亚洲国产精品高清| 岛国精品一区二区三区| 视频一区中文字幕| 国产天堂视频在线观看| 成人免费电影网址| 国产a一区二区| 成人国产一区二区三区精品麻豆| 久久69精品久久久久久久电影好 | 欧美日韩怡红院| 欧美激情性爽国产精品17p| 欧美综合77777色婷婷| 欧美日韩国产一区二区在线观看| 日本a级片电影一区二区| 在线播放免费av| 亚洲一级一级97网| 天天干视频在线| 欧美国产日产图区| 久久av一区二区三| 麻豆精品视频在线观看免费| 国产无限制自拍| 国产精品国内免费一区二区三区| 麻豆精品传媒视频| 一区二区日韩| 成人黄色大片在线免费观看| 婷婷综合六月| 国内精品视频一区| a级网站在线播放| 在线视频日韩精品| 免费看男男www网站入口在线| 日韩一卡二卡三卡| 91精东传媒理伦片在线观看| 欧美性猛交xxxx富婆| 五月天综合在线| 亚洲精品一二三| 三上悠亚在线观看视频| 国产欧美一区视频| 国产成人精品无码免费看夜聊软件| 岛国av在线一区| 日本高清免费在线视频| 精品一区二区成人精品| 一区二区xxx| 日本美女一区二区三区视频| 久久精品国产精品亚洲色婷婷| 国产精品九九| 野外做受又硬又粗又大视频√| 影音先锋日韩在线| 国产又大又长又粗又黄| 色呦哟—国产精品| 天堂√在线观看一区二区| 亚洲精品亚洲人成在线观看| 久久国产手机看片| 亚洲动漫在线观看| 开心色怡人综合网站| 免费看久久久| 久久国产精品 国产精品| 精品中国亚洲| 麻豆成人在线播放| 欧美理论在线播放| 精品国产区在线| 偷窥自拍亚洲色图精选| 久久久久久九九| 伊人成综合网伊人222| 欧洲精品国产| 日韩欧美在线中字| 经典三级在线视频| 欧美激情1区2区| 蜜臀av性久久久久蜜臀av| 欧美精品激情| 男女超爽视频免费播放| 99热在线精品观看| www.亚洲天堂网| 秋霞午夜鲁丝一区二区老狼| 在线观看免费视频高清游戏推荐| 久久av资源站| 特黄特色免费视频| 97久久精品人人做人人爽50路| 欧美综合在线观看视频| 噜噜噜91成人网| 美女网站色免费| 国产乱码精品一区二区三| 农村末发育av片一区二区| 99视频超级精品| 91在线无精精品白丝| 自拍av一区二区三区| 国产真实乱人偷精品视频| 大桥未久av一区二区三区| 波多野结衣绝顶大高潮| 91精品综合久久久久久| 欧美视频xxx| 亚洲午夜精品久久久久久性色| 黄色网址在线免费观看| 欧美高清激情视频| 国产精品极品美女在线观看| 成人网页在线免费观看| 欧美激情15p| 在线看视频不卡| 亚洲精品婷婷| 99sesese| 97精品国产露脸对白| 人妻无码一区二区三区免费| 亚洲资源在线观看| 超碰在线97观看| 亚洲第一av在线| 五月婷婷在线观看| 97精品国产97久久久久久| 国产成人福利夜色影视| 黑人巨大精品欧美一区二区小视频| 欧洲视频一区| aa在线观看视频| 国产一区二区三区视频在线播放| 亚洲 欧美 日韩在线| 中文字幕一区二区三区蜜月| 在线天堂中文字幕| 欧美一区二区国产| jizz视频在线观看| 2019中文字幕免费视频| 免费欧美网站| 亚洲欧美在线网| 久久动漫亚洲| 50一60岁老妇女毛片| 亚洲人被黑人高潮完整版| 日本高清不卡码| 精品国产1区二区| 黄色精品在线观看| 国产精品美女视频网站| 日韩大胆成人| 国产成人永久免费视频| 韩国成人福利片在线播放| www.99热| 色偷偷成人一区二区三区91 | 国产精品vip| 国产九九热视频| 国产欧美一区二区精品久导航| 日本熟女一区二区| 日韩欧美一区在线| 黄网站视频在线观看| 国产精品户外野外| 狠狠做深爱婷婷综合一区| 日韩欧美一区三区| 北条麻妃国产九九精品视频| 精品国产欧美日韩不卡在线观看| 欧美日韩一区二区不卡| 国产福利在线观看| 国产精品69久久| 欧美肉体xxxx裸体137大胆| 国产日产欧美视频| 2021中文字幕一区亚洲| 一区二区三区视频免费看| 精品国产乱码久久久久久闺蜜 | 青青草原一区二区| 日韩a级大片| 欧美a v在线播放| 91视频.com| aaa在线视频| 亚洲香蕉伊综合在人在线视看| 日韩欧美看国产| 欧美午夜免费| 视频在线观看一区| 久久午夜精品视频| 欧美剧情片在线观看| 黄色网址在线免费观看| 91香蕉视频在线下载| 欧美激情五月| 538国产视频| 欧美网站在线观看| 东凛在线观看| 成人免费视频网址| 欧美视频日韩| 色综合久久五月| 91国产丝袜在线播放| 在线观看美女网站大全免费| 成人免费xxxxx在线观看| 欧美激情亚洲| 成人h动漫精品一区| 欧美在线一区二区三区| 免费网站看v片在线a| 高清视频一区| 久久精品伊人| www.97视频| 亚洲成人激情图| 欧美与亚洲与日本直播| 日韩精品第1页| jiyouzz国产精品久久| 99re国产在线| 另类视频在线观看| 欧美尿孔扩张虐视频| 三级a在线观看| 亚洲综合久久久| 日本一级在线观看| 成人福利在线视频| 红桃视频欧美| 黄色三级生活片| 日韩欧美的一区| 欧美日韩精品免费观看视完整| 亚洲欧洲精品一区二区三区波多野1战4| 国产乱人伦偷精品视频不卡 | 欧美资源一区| 国产剧情一区二区| 在线观看免费av片| 精品久久久av| 欧美女优在线视频| 91大神免费观看| 91久久精品国产91性色tv| 91麻豆免费在线视频| 欧美一区二区三区精美影视 | 久久一二三区| 久久久精品视频免费观看| 亚洲欧美国产一区二区三区| 国产精品一区二区美女视频免费看 | 亚洲另类黄色|