2023年2月23日 星期四

簡單介紹使用python串接OpenAI進行聊天對話/ 互動

最近很夯的ChatGPT是由OpenAI所提供的聊天機器人,

這邊簡單的介紹怎麼透過python來呼叫OpenAI

首先需要到OpenAI API進行註冊(SIGN UP) 然後再去個人資訊頁面產生API Key。



拿到API Key之後就可以透過python來進行串接了。不過因為這類的AI知識庫都是分類進行訓練的,所以想要拿到不同領域的回覆需要對不同的model做引用,因此想要呼叫OpenAI的哪一種model可以到這個範例頁面來做查詢,找到想要使用的情境後就可以點進去,就會有參考範例做使用。

像是以基本的Q&A來進行測試,會使用到的程式碼如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from para import OPENAI_API_KEY

import openai
openai.api_key = OPENAI_API_KEY

def openai_response(chat_message):
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=chat_message,
        temperature=0,
        max_tokens=2048,
        top_p=1,
        frequency_penalty=0.0,
        presence_penalty=0.0,
        stop=None
    )
    return response["choices"][0]["text"].strip()

print(openai_response("我想要在台北種百香果,請問是否適合,並且告訴我種百香果的完整流程"))

OpenAI回的內容可能會像這樣子



或是如果想要透過OpenAI來幫你找圖片的話,可以使用到的程式碼如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from para import OPENAI_API_KEY

import openai
openai.api_key = OPENAI_API_KEY

def openai_img(message: str):
    response = openai.Image.create(
        prompt=message,
        n=1,
        size='512x512'
    )
    return response['data'][0]['url']

print(openai_img("The farmers are planting rice in the field."))

透過OpenAI找圖的回傳資料是網路上的圖片連結。另外,OpenAI找圖的參數,需要使用英文來查詢會比較正確,如果使用者輸入的是中文,可以利用前一個範例的OpenAI對話來幫你翻成英文再用這個範例來找圖會比較好。


也可以把這樣子的互動串接到Line Bot裡面,之前這邊的網誌有介紹怎麼架設自己的Line Bot,就可以直接透過Line來做到聊天互動的功能了。不過Heroku現在已經沒有提供免費的平台了,若想要找免費的python website的話,可以使用另一個服務台 - Pythonanywhere

下面的擷圖是串接到我的Line Bot,先透過簡單的互動導到後端不同的服務,像是先說"oai"表示我想要找OpenAI做聊天/互動,說"找圖"就可以輸入想要找尋的圖檔資訊。

因為OpenAI在回應資料是即時"產生"出來的,所以給OpenAI相同的問題,回應的結果可能會不同。 在前面給的範例裡面也有不少參數可以調整,有興趣的人可以再去API頁面多了解細節。




沒有留言:

張貼留言