LoginSignup
2
4

More than 1 year has passed since last update.

Googleの代わりにOpenAIのGPT-3で質問に答えるようにした

Last updated at Posted at 2023-02-16

はじめに

今流行のOpenAIでGoogleの代わりに質問に答えるようにしました。
【変更】2023-2-18
speak.shは長文だとカットされるので、行単位に処理するようにしました。(。で改行)speak.shはgoogletts-cli.plを使用しています。
【変更】2023-3-3
chatGPTのAPIが公開されたので、それに変更しました。コストがGPT3の1/10だそうです。APIキーはGPT3のものと共通です。pipとopenaiのupgradeが必要な場合があります。

使用方法

■単独で使用する方法
python3 /home/xxxx/ai.py 電気料金の節約方法
■Googlehomeで質問し、回答を喋らす
Google Assitant V2 対策(IFTTTの変数入力の実現)
の記事でtask.jsを改造する。
下記の行を追加してください。

} else if(value1 === "AI") {
  command = "python3 /home/XXXXX/ai.py " + value2 + " >> /dev/null 2>&1 &";
  var execSync = require('child_process').exec;
  execSync(command) ;

自分:OK グーグル タスクリストに追加
自分:OK グーグル タスク (ルーティンでタスク=タスクリストに追加と定義した場合)
GoogleHome:追加するものを教えて下さい
自分:AI電気料金の節約方法

GPT-3で質問に回答するプログラム(ai.py)


# -*- coding: utf-8 -*-
import requests
import openai
import argparse
import subprocess
import time

# 起動オプション取り出し
parser = argparse.ArgumentParser()
parser.add_argument("param")
args = parser.parse_args()
text = args.param
print(text)

# Set the API key
openai.api_key = "XXXXXXXXXXXXX"

def generate_answer(prompt):
    # OpenAI API request to generate answer
    response = openai.Completion.create(
    engine="text-davinci-003",
    prompt=prompt,
    max_tokens=1024,
    n=1,
    stop=None,
    temperature=0.5,
    )

    answer = response["choices"][0]["text"]
    return answer


answer=generate_answer(text)
say= answer
say = say.replace('\n','') #文字列の置換(改行を全角空白)
say = say.replace(' ',' ')  #文字列の置換(半角空白を全角空白
say = say.replace('','\n')  #文字列の置換(半角空白を全角空白
f = open('myfile.txt', 'w')
f.write(say)
f.close()
print(say)
f = open('myfile.txt', 'r', encoding='UTF-8')
datalist=f.readlines()
for data in datalist:
   cmd = "/home/xxxxx/speak.sh" + ' ' + data;
   subprocess.run(cmd, shell=True)
f.close()

chatGPTで質問に回答するプログラム(ai.py)


# -*- coding: utf-8 -*-
import requests
import openai
import argparse
import subprocess
import time

# 起動オプション取り出し
parser = argparse.ArgumentParser()
parser.add_argument("param")
args = parser.parse_args()
text = args.param
print(text)

# Set the API key
openai.api_key = "XXXXXXXXXXXXX"

res = openai.ChatCompletion.create(
   model="gpt-3.5-turbo",
     messages=[
         {
             "role": "system",
             "content": "日本語で返答してください。"
         },
         {
             "role": "user",
             "content": text
         },
     ],
)
answer = res["choices"][0]["message"]["content"]
print(answer)

say= answer
say = say.replace('\n','') #文字列の置換(改行を全角空白)
say = say.replace(' ',' ')  #文字列の置換(半角空白を全角空白
say = say.replace('','\n')  #文字列の置換(半角空白を全角空白
f = open('myfile.txt', 'w')
f.write(say)
f.close()
print(say)
f = open('myfile.txt', 'r', encoding='UTF-8')
datalist=f.readlines()
for data in datalist:
   cmd = "/home/xxxxx/speak.sh" + ' ' + data;
   subprocess.run(cmd, shell=True)
f.close()

参考にした記事

AIをフル活用してRaspberry Pi 4でGPT-3とかいうの動かしてみる話 前編

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4