• 欢迎访问情深深几许的博客网站,这里有免费网络资源信息,WordPress教程,Python、MySQL教程
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏本网站吧

使用 OpenAI ChatGPT

免费资源 luckzk 1年前 (2023-03-21) 317次浏览 0个评论

註冊 OpenAI

前往 OpenAI 的網站。

Python 教學 - 使用 OpenAI - 前往 OpenAI

點擊最上方的「Try」,會開啟註冊或登入的頁面 ( 點擊「API」按鈕,也會開啟註冊或登入的頁面 ),點擊 Sign up 按鈕進行註冊,註冊時需要使用可以接收簡訊認證碼的手機電話號碼。

Python 教學 - 使用 OpenAI - 註冊 OpenAI

透過 ChatGPT 和 AI 聊天

註冊 OpenAI 並登入完成後,在頁面的下方會出現能「輸入文字」的欄位。

體驗 ChatGPT:https://chat.openai.com/

Python 教學 - 使用 OpenAI - 輸入文字

輸入文字後按下送出,就能開始與 OpenAI 的 AI 機器人聊天。

Python 教學 - 使用 OpenAI - 透過 ChatGPT 和 AI 聊天

因為每個註冊的帳號都可以和 AI 機器人聊天,也能夠透過 OpenAI 的 API 呼叫機器人,因此有時候會遇到 OpenAI 伺服器無法回應的狀況,這時候只能傻傻的等待,或在比較不熱門的時段和 AI 機器人聊天。

Python 教學 - 使用 OpenAI - 在比較不熱門的時段和 AI 機器人聊天

OpenAI 的使用額度

目前 OpenAI 提供「18 美金或三個月」的使用額度,會根據使用的字詞量多寡,或呼叫次數…等作業進行費用的扣除,使用範圍包含了在網站上與 AI 互動,或透過程式呼叫 API,當即將超過費用或是到達期限,就會先暫停使用權限並要求付費,初期適合嚐鮮或作為開發者使用 ( 下圖是 2022 年 12 月撰寫這篇文章時的用量 )。

OpenAI 開發者平台:https://platform.openai.com/

Python 教學 - 使用 OpenAI - OpenAI 的使用額度

建立 OpenAI API Key

如果要比較深入的使用 OpenAI ( 例如使用 Python 串接、結合 LINE BOT…等 ),就必須要透過 OpenAI 的 API 來實現,從右上方「Personal」的選單裡,選擇「View API Keys」。

Python 教學 - 使用 OpenAI - View API Keys

選擇後進入建立 API Keys 頁面,點擊「Create new secret key」按鈕,就能建立 API Keys。

注意!只有建立完成的當下可以複製 API Keys,請使用記事本或其他工具儲存 API Key,如果要刪除 API Key,必須再次建立新的 API Key 才能刪除舊的

Python 教學 - 使用 OpenAI - 建立 OpenAI API Key

使用 Python 串接 OpenAI API

輸入下列指令安裝 openai 函式庫 ( 本機環境根據個人狀況使用 pip 或 pip3 ),如果安裝失敗,可以使用 pip install --upgrade pip 更新 pip 嘗試解決。

<code class="language-py hljs python">!pip install openai
</code>

安裝後,使用下列的程式碼,就能夠向 OpenAI 的 AI 機器人發送對話訊息,並接收 AI 機器人所回傳的訊息。

<code class="language-py hljs python"><span class="hljs-keyword">import</span> openai
openai.api_key = <span class="hljs-string">'你的 API Key'</span>

response = openai.Completion.create(
    model=<span class="hljs-string">"text-davinci-003"</span>,
    prompt=<span class="hljs-string">"講個笑話來聽聽"</span>,
    max_tokens=<span class="hljs-number">128</span>,
    temperature=<span class="hljs-number">0.5</span>,
)

completed_text = response[<span class="hljs-string">"choices"</span>][<span class="hljs-number">0</span>][<span class="hljs-string">"text"</span>]
print(completed_text)
</code>

Python 教學 - 使用 OpenAI - 建立 OpenAI API Key

上述的程式碼中使用了 openai.Completion.create 方法,方法的參數說明如下 ( 詳細參數參考:Create completion ):

參數 說明
model AI 所使用的引擎模組,如果是以自然語意為主,預設使用 text-davinci-003 ( 更多引擎參考:https://beta.openai.com/docs/models/gpt-3 )。
prompt 要傳送的句子會詞彙。
max_tokens 希望 AI 回傳的最大字數,預設 128,在某些情況下回傳的字數會大於這個數字。
temperature 隨機文字組合,範圍 0~1,預設 0.5,0 表示不隨機,1 表示完全隨機。
language 機器人處理的「程式語言」,預設 python,可設定 javascript、java、csharp、golang、ruby、php、cpp。

也因為 OpenAI 的 AI 機器人是一個大型語言模型,能夠被訓練成理解和回覆多種語言,因此回覆訊息所使用的語言,是根據輸入的文字訊息內容決定,以下的程式碼為例,執行後輸入「中文笑話」,回覆的訊息就是中文笑話,而如果是輸入「english joke」,就會回應一個英文的笑話。

<code class="language-py hljs python"><span class="hljs-keyword">import</span> openai
openai.api_key = <span class="hljs-string">'你的 API Key'</span>

<span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:
    msg = input()
    response = openai.Completion.create(
        model=<span class="hljs-string">'text-davinci-003'</span>,
        prompt=msg,
        max_tokens=<span class="hljs-number">128</span>,
        temperature=<span class="hljs-number">0.5</span>
    )

    completed_text = response[<span class="hljs-string">'choices'</span>][<span class="hljs-number">0</span>][<span class="hljs-string">'text'</span>]
    print(completed_text)
</code>

Python 教學 - 使用 OpenAI - 建立 OpenAI API Key

如果是使用 gpt-3.5-turbo 引擎模組,則要把 openai.ChatCompletion 改成 openai.ChatCompletion,並將 prompt 參數改成 messages 參數,參數內容使用串列和字典的格式,透過字典格式表現上下文語句,例如下面的例子,ChatGPT 就會知道使用者的名字是 oxxo。

<code class="language-py hljs python"><span class="hljs-keyword">import</span> openai
openai.api_key = <span class="hljs-string">'你的 API KEY'</span>

response = openai.ChatCompletion.create(
  model=<span class="hljs-string">"gpt-3.5-turbo"</span>,
  max_tokens=<span class="hljs-number">128</span>,
  temperature=<span class="hljs-number">0.5</span>,
  messages=[
        {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"我叫做 oxxo"</span>},
        {<span class="hljs-string">"role"</span>: <span class="hljs-string">"assistant"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"原來你是 oxxo 呀"</span>},
        {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"請問我叫什麼名字?"</span>}
    ]
)
print(response.choices[<span class="hljs-number">0</span>].message.content)
</code>

Python 教學 - 使用 OpenAI - gpt-3.5-turbo 引擎模組

串連上下文語句

如果使用 text-davinci-003 模型,在傳送語句時,將之前對話的內容,使用「\n\n」兩個換行符號分隔 ( 實測這樣子的準確度最高 ),並連接目前要講的語句,傳送出去之後就可以讓 ChatGPT 了解過去的交談內容,實現串連上下語句的功能。

<code class="language-py hljs python"><span class="hljs-keyword">import</span> openai
openai.api_key = <span class="hljs-string">'你的 API Key'</span>

messages = <span class="hljs-string">''</span>
<span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:
    msg = input(<span class="hljs-string">'me > '</span>)
    messages = <span class="hljs-string">f'<span class="hljs-subst">{messages}</span><span class="hljs-subst">{msg}</span>\n'</span>   <span class="hljs-comment"># 將過去的語句連接目前的對話,後方加上 \n 可以避免標點符號結尾問題</span>
    response = openai.Completion.create(
        model=<span class="hljs-string">'text-davinci-003'</span>,
        prompt=messages,
        max_tokens=<span class="hljs-number">128</span>,
        temperature=<span class="hljs-number">0.5</span>
    )

    ai_msg = response[<span class="hljs-string">'choices'</span>][<span class="hljs-number">0</span>][<span class="hljs-string">'text'</span>].replace(<span class="hljs-string">'\n'</span>,<span class="hljs-string">''</span>)
    print(<span class="hljs-string">'ai > '</span>+ai_msg)
    messages = <span class="hljs-string">f'<span class="hljs-subst">{messages}</span>\n<span class="hljs-subst">{ai_msg}</span>\n\n'</span>  <span class="hljs-comment"># 合併 AI 回應的話</span>
</code>

Python 教學 - 使用 OpenAI - text-davinci-003 模型串連上下文語句

如果使用 gpt-3.5-turbo 模型,直接將回應語句使用字典的格式,添加到回應的 messages 串列中,ChatGPT 就能自動識別上下語句。

<code class="language-py hljs python"><span class="hljs-keyword">import</span> openai
openai.api_key = <span class="hljs-string">'你的 API Key'</span>

messages = []
<span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:
    msg = input(<span class="hljs-string">'me > '</span>)
    messages.append({<span class="hljs-string">"role"</span>:<span class="hljs-string">"user"</span>,<span class="hljs-string">"content"</span>:msg})   <span class="hljs-comment"># 添加 user 回應</span>
    response = openai.ChatCompletion.create(
        model=<span class="hljs-string">"gpt-3.5-turbo"</span>,
        max_tokens=<span class="hljs-number">128</span>,
        temperature=<span class="hljs-number">0.5</span>,
        messages=messages
    )
    ai_msg = response.choices[<span class="hljs-number">0</span>].message.content.replace(<span class="hljs-string">'\n'</span>,<span class="hljs-string">''</span>)
    messages.append({<span class="hljs-string">"role"</span>:<span class="hljs-string">"assistant"</span>,<span class="hljs-string">"content"</span>:ai_msg})   <span class="hljs-comment"># 添加 ChatGPT 回應</span>
    print(<span class="hljs-string">f'ai > <span class="hljs-subst">{ai_msg}</span>'</span>)
</code>

Python 教學 - 使用 OpenAI - text-davinci-003 模型串連上下文語句

不過要注意的是,傳送歷史紀錄會造成整體 token 暴增!必須要評估自己的口袋深度 ( 有沒有把握可以支付費用 ),再決定是否要進行歷史紀錄的動作。

Python 教學 - 使用 OpenAI - 傳送歷史紀錄會造成整體 token 數暴增

延伸閱讀

如果已經可以使用 Python 串接 OpenAI,就可以參考下方的文章,將 OpenAI 與 LINE BOT 串連,做出一個具有人工智慧的 LINE 聊天機器人囉!

小結

透過 Python 串接 OpenAI 的 API 其實非常簡單,只需要申請 API Key 就能串接,由於是免費版本,在使用上仍然會有每個月 18 美元的「額度」限制 ( 參考 OpenAI Usage ),但對於一般開發者來說應該是很足夠了,相信未來的生活裡,應該會充斥著許多 AI 代替真人的訊息或語音回覆,至於如何判斷訊息的好壞或是處理衍生的道德倫理問題,就有待人類智商來解決了吧。


情深几许 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 OpenAI ChatGPT
喜欢 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址