Zenbo Junior串接OpenAI,變身萬事通

既然可以使用Python來開發Zenbo Junior的應用,那麼把Zenbo串接到OpenAI,透過ChatGPT的能力,我們的Zenbo Junior一下子就可以成為萬事通博士了,上天下地,天南地北都可以跟你聊上一段了。現在就來看看如何做。

首先,你等要有OpenAI的付費帳號(何老師目前只知道付費的使用方式),然後到OpenAI的網頁中箭頭所指的地方,就可以自行新增一個程式呼叫時要使用的API Key:

有了這個key之後,請把它存放在key.txt檔案中,並且如果你有使用分散式版本控制的話,請記得該檔案要設定為不能被同步到遠端的Repo上,否則你的帳號可能就會被別的有心人拿去使用了。

此外,由於此帳號是以使用的量來計費,所以如果沒有設定使用限額的話,到時候不小心可能會要付出非常多的費用,因此網頁左側Billing中的Usage limits選項也需要去設定一下。

有了帳戶和API Key之後,請在虛擬環境中安裝openai這個模組:

pip install openai

然後,下面這支程式就可以讓Zenbo以語音提示的方式讓我們在電腦中輸入想要問的句子,再透過Zenbo的語音說出他找到的答案:

import pyzenbo
import openai
from pyzenbo.modules.dialog_system import RobotFace

host = '192.168.1.104'
sdk = pyzenbo.connect(host)
key = open("key.txt", "r", encoding="utf-8").read()
openai.api_key= key

sdk.robot.set_expression(RobotFace.PLEASED, "你有什麼想問的嗎?")
prompt = input("Your prompt: ")
while prompt != "exit" and prompt !="":
    sdk.robot.set_expression(RobotFace.PLEASED, "你剛剛問我,"+prompt)
    response = openai.Completion.create(
        engine='text-davinci-003',
        prompt=prompt,
        temperature=0.7,
        max_tokens=100,
        n=1,
        stop=None,
    )
    reply = response.choices[0].text.strip()
    sdk.robot.speak("我的回答是:"+reply)
    sdk.robot.speak("你還有什麼想問的嗎?")
    prompt = input("Your prompt: ")
sdk.robot.set_expression(RobotFace.HIDEFACE) 
sdk.release()

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *