チャレンジGPT_8.HTMLでPythonでFlask
ほらねー
前から言ってたんですよ。
英語やらなんやら勉強する意味あるの?って。
俺が勉強しなくても、そのうち、ほんやくコンニャクができるんじゃないですかって。
私がちんたらしてる間に、世間はどんどん次のステージにいってるんですよ。
だから言ったんだよ。まったく。
GPTのAPIを使いこなしたいとか、やらなくていいのよ。
いらんことを。
下手の考え休むに似たり
笛吹けども踊らず
生兵法は大怪我のもと
そうこうしているうちに、その道のPROが作った良いツールがでるのよ。
絶対に。
とはいえ、
じゃあね、
じゃーよ。
じゃあ!!!
その日まで待てるっていうのかい?
いーや!
待てなーーい!!
やーる!!
(自分を鼓舞してる)
・
いつもの前置き
・
前回までに、簡単なウェブページの作成と、PythonでchatGPTを起動することに成功した私。
ここまで来るのにも、通常であれば何年もかかるだろう(実際この歳までできなかった)ものが、「やろうと思えば数十分でできる」ものになったのだということで、改めて、chat GPTのもつ力に驚愕しているわけであります。
・
■今回やったこと
以前作ったウェブページに、入力欄を表示した
入力欄のサイズを変更した
入力欄に入力した内容をAPIでGPTに送り、結果をウェブページに表示することができた
ただ、イメージしてたのは、前回作ったスクリプトと、今回作ったウェブページの入力欄をつなげるイメージだったんだけど、今回作った「app.py」は、前回のやつと全然違うものになった。
これがフラスコってやつで、HTMLページとつなぐときには、こういうことになるんだろうきっと。
おそらく、現行のGPT4は、「gpt-3.5-turbo」のことを知らない。
これは、2021年9月時点で、当時に、その情報がなかったか、あったとしても、 学習データが少ないからだろう。
結果、今回の流れでは「gpt-3.5-turbo」で動かすことができず、最初は「davinci」となった。
そのため、前回作成した「gpt-3.5-turbo」を使ったパイソンのスクリプトを提示して、再度作成してもらったら動いた
ゼロからコードを書いてもらうには、「使い古された手法である」か、「コードを理解した上で指示(修正点)を出す」か、をしないと何往復もして袋小路になる(前回も今回も、いきなり全部出てきたわけじゃない)
この辺が、今回のchatGPTへのプラグイン機能実装でURL参照とかできるようになったから、解消されるのかなという期待
そもそも、まだ何もわからない今の時点で、ウェブページと連携しようってのが虫のいい話?一回ターミナルのパイソン上だけで進めたほうが良いのかも
以下GPT4とのやりとり
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
<p>これはPythonとFlaskを使って作られたHello Worldのウェブページです。</p>
<form>
<label for="input-field">入力:</label><br>
<input type="text" id="input-field" name="input-field"><br><br>
<input type="submit" value="送信">
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
<p>これはPythonとFlaskを使って作られたHello Worldのウェブページです。</p>
<form>
<label for="input-field">入力:</label><br>
<textarea id="input-field" name="input-field" rows="10" cols="50"></textarea><br><br>
<input type="submit" value="送信">
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World</title>
<script>
async function submitText() {
// 入力フィールドからテキストを取得
const inputText = document.getElementById("input-field").value;
// サーバーにテキストを送信
const response = await fetch("/submit", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ text: inputText })
});
// サーバーからの応答を取得
const outputText = await response.text();
// 応答を HTML ページに表示
document.getElementById("output").textContent = outputText;
}
</script>
</head>
<body>
<h1>Hello World!</h1>
<p>これはPythonとFlaskを使って作られたHello Worldのウェブページです。</p>
<form onsubmit="event.preventDefault(); submitText();">
<label for="input-field">入力:</label><br>
<textarea id="input-field" name="input-field" rows="20" cols="50"></textarea><br><br>
<input type="submit" value="送信">
</form>
<div id="output"></div>
</body>
</html>
app.py
from flask import Flask, render_template, request
import openai_secret_manager
assert "openai" in openai_secret_manager.get_services()
secrets = openai_secret_manager.get_secret("openai")
openai.api_key = secrets["api_key"]
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html")
@app.route("/submit", methods=["POST"])
def submit():
# クライアントから送信されたテキストを取得
input_text = request.json["text"]
# OpenAI API にテキストを送信
response = openai.Completion.create(
engine="chatGPT3.5",
prompt=input_text,
max_tokens=150
)
# OpenAI API からの応答を取得
output_text = response["choices"][0]["text"]
# 応答テキストをクライアントに送信
return output_text
if __name__ == "__main__":
app.run(debug=True)
`index.html` と `app.py` の 2 つのファイルを作成します。
`index.html` ファイルに、上記の HTML コードをコピーして貼り付けます。
`app.py` ファイルに、上記の Python コードをコピーして貼り付けます。
ターミナルまたはコマンドプロンプトを開き、`app.py` ファイルがあるディレクトリに移動します。
`pip install flask openai` コマンドを実行して、必要なライブラリをインストールします。
`python app.py` コマンドを実行して、Flask アプリケーションを起動します。
ブラウザで `http://localhost:5000` にアクセスします。
HTML ページに表示される入力フィールドにテキストを入力し、送信ボタンをクリックします。
response = openai.Completion.create(
engine="davinci",
prompt=input_text,
max_tokens=150
)
from flask import Flask, request, render_template, jsonify
import openai
import os
app = Flask(__name__)
# OpenAIのAPIキーを設定します
openai.api_key = "api_key"
# 会話履歴を格納するためのリストを初期化
conversation_history = []
@app.route('/')
def home():
return render_template('index.html')
@app.route('/submit', methods=['POST'])
def submit():
new_message = request.json['text']
# ユーザーの質問を会話履歴に追加
conversation_history.append({"role": "user", "content": new_message})
# OpenAI APIを呼び出して応答を生成します
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You are a helpful assistant."}] + conversation_history,
max_tokens=2000,
)
# レスポンスからアシスタントのメッセージを取得します
assistant_message = response.choices[0].message['content'].strip()
# アシスタントのメッセージを会話履歴に追加します
conversation_history.append({"role": "assistant", "content": assistant_message})
return jsonify({'text': assistant_message})
if __name__ == '__main__':
app.run(debug=True)
※※※※注意※※※※
この記事が気に入ったらサポートをしてみませんか?