Python

openAI提供のchatGPTを試してみた

openAI提供のchatGPTを試してみた

chatGPTを試してみた

最近巷で流行っているOpenAI1という研究所が提供しているチャットボットを試してみました。 chatGPT(Generative Pre-trained Transformer)は、学習済言語モデルが質問に回答してくれるサービスです。 学習済AIが回答するので、準備された回答集から選んでくれるのではなく、質問に合わせて幅広に回答してくれます。 日本語にも対応してます。

準備

こちら1のページからアカウントを作成します。 マイコンソースコードも回答してくれるそうなので早速試してみます。

chatGPTを試す

質問「esp32でardunoを使ったLチカコードと配線方法を教えてください」

chatGPTの回答は以下のとおりです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
ArduinoLチカを実行するには、次のようなスケッチを作成する必要があります。

int LED = 13;

void setup() {
pinMode(LED, OUTPUT);
}

void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}

また、ArduinoLEDの間に1KΩの抵抗を接続する必要があります。具体的な配線図は次のとおりです。

Arduino - 1KΩ - LED - GND

もう少しマニアックな質問をしてみます。

質問「esp32でardunoを使ってBME280から温度と湿度を出力するコードと配線方法を教えてください」

openAIの回答は以下のとおりです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
BME280から温度と湿度を取得するには、Arduinoで次のようなスケッチを書く必要があります。

#include "Adafruit_BME280.h"
Adafruit_BME280 bme;

void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
if (!bme.begin()) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1) {
;
}
}
}

void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println(" %");
delay(2000);
}

また、ESP32BME280の間にI2C

それなりなコードを吐いてくれます。配線は不得意なようです。

回答されたコードをVScode+plathomeioな環境でバイナリーを作成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
rchiving .pio\build\esp32doit-devkit-v1\libFrameworkArduino.a
Linking .pio\build\esp32doit-devkit-v1\firmware.elf
Retrieving maximum program size .pio\build\esp32doit-devkit-v1\firmware.elf
Checking size .pio\build\esp32doit-devkit-v1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   6.9% (used 22656 bytes from 327680 bytes)
Flash: [==        ]  22.2% (used 290793 bytes from 1310720 bytes)
Building .pio\build\esp32doit-devkit-v1\firmware.bin
[esptool.py](http://esptool.py/)
v4.4
Creating esp32 image...
Merged 2 ELF sections
Successfully created esp32 image.

ちゃんとバイナリ作成はできます。

Python APIを試す

chatGPTの問い合わせをpython APIを経由します。パラメーターの内容は、今後調べます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import openai

# APIキーを取得
openai.api_key = "API_KEY"

#モデルを指定
model_engine = "text-davinci-002"

#指示(Prompt)を設定
prompt = "日本の首都はどこですか?"

#推論を実行
completions = openai.Completion.create(
    engine=model_engine,
    prompt=prompt,
    max_tokens=1024,
    n=1,
    stop=None,
    temperature=0.5,
)

#推論結果を出力
message = completions.choices[0].text
print(message)

なぜか回答は英語です。

1
2
3
4
pi@pi2b:~/work/openai $ python3 sample_openai.py

Japan's capital is Tokyo.
pi@pi2b:~/work/openai $

golang APIを試す

golangのAPIも試します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
	"context"
	"fmt"
	gogpt "github.com/sashabaranov/go-gpt3"
)

func main() {
	c := gogpt.NewClient("Your token")
	ctx := context.Background()

	req := gogpt.CompletionRequest{
//		Model: "ada",
		Model: "text-davinci-002",
		MaxTokens: 100,
		Prompt:    "日本の首都はどこですか?",
	}
	resp, err := c.CreateCompletion(ctx, req)
	if err != nil {
		return
	}
	fmt.Println(resp.Choices[0].Text)
}

こちらもなぜか英語で回答です。

1
2
3
4
pi@pi2b:~/work/openai $ go run ./openai_smple.go

Tokyo is the capital of Japan.
pi@pi2b:~/work/openai $

まとめ

OpenAIが提供しているchatGPTを試しました。python,go APIも試しましたが問題なく機能を確認できました。 無料アカウントは、有効期間6か月かつ課金制限$18のようです。 お試し何度かしましたが実績$0.03なので、それなりにお試し可能です。

参考リンク

comments powered by Disqus