python chatGPT2-AI

chatGPT-2.py

from flask import Flask, render_template, request, redirect, url_for
from transformers import GPT2Tokenizer, GPT2LMHeadModel
import wikipedia

app = Flask(__name__)

# GPT-2のトークナイザーとモデルをロード
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/generate', methods=['POST'])
def generate_text():
    # ユーザーからの入力を取得
    prompt_text = request.form['prompt']
    
    try:
        # Wikipediaからテキストを取得
        wikipedia_text = wikipedia.summary(prompt_text)
        
        # テキストの生成
        inputs = tokenizer.encode(wikipedia_text, return_tensors="pt")
        outputs = model.generate(inputs, max_length=100, num_return_sequences=1, temperature=0.7)
        
        # 生成されたテキストをデコードしてHTMLコードに組み込む
        generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
        
        # 生成されたテキストとWikipediaのテキストと共にHTMLを返す
        return render_template('index.html', prompt_text=prompt_text, generated_text=generated_text, wikipedia_text=wikipedia_text)
    
    except wikipedia.exceptions.DisambiguationError as e:
        # 曖昧性がある場合は、候補のリストを表示
        options = e.options
        return render_template('disambiguation.html', options=options)
    
    except wikipedia.exceptions.PageError:
        wikipedia_text = "Wikipediaにそのトピックが見つかりませんでした。"
        return render_template('index.html', prompt_text=prompt_text, wikipedia_text=wikipedia_text)

@app.route('/generate_with_option/<option>', methods=['GET'])
def generate_with_option(option):
    try:
        # Wikipediaからテキストを取得
        wikipedia_text = wikipedia.summary(option)
        
        # テキストの生成
        inputs = tokenizer.encode(wikipedia_text, return_tensors="pt")
        outputs = model.generate(inputs, max_length=100, num_return_sequences=1, temperature=0.7)
        
        # 生成されたテキストをデコードしてHTMLコードに組み込む
        generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
        
        # 生成されたテキストとWikipediaのテキストと共にHTMLを返す
        return render_template('index.html', prompt_text=option, generated_text=generated_text, wikipedia_text=wikipedia_text)
    
    except wikipedia.exceptions.PageError:
        wikipedia_text = "Wikipediaにそのトピックが見つかりませんでした。"
        return render_template('index.html', prompt_text=option, wikipedia_text=wikipedia_text)

if __name__ == '__main__':
    app.run(debug=True)

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generate Text</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f4f4f4;
        }

        header {
            text-align: center;
            margin-top: 50px;
        }

        main {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }

        .form-section, .response-section, .wikipedia-section {
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            padding: 20px;
            margin-bottom: 20px;
        }

        .prompt-form {
            max-width: 100%;
        }

        label {
            font-weight: bold;
        }

        input[type="text"] {
            width: 100%;
            padding: 10px;
            margin: 10px 0;
            border: 1px solid #ccc;
            border-radius: 4px;
        }

        button {
            padding: 10px 20px;
            background-color: #007bff;
            color: #fff;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }

        button:hover {
            background-color: #0056b3;
        }

        .generated-text {
            margin-top: 20px;
        }

        .tweet-link {
            display: block;
            margin-top: 10px;
            text-align: center;
        }

        footer {
            text-align: center;
            margin-top: 50px;
        }
    </style>
</head>
<body>

    <header>
        <h1>Generate Text</h1>
    </header>

    <main>
        <section class="form-section">
            <form action="/generate" method="POST" class="prompt-form">
                <label for="prompt">Enter your prompt:</label><br>
                <input type="text" id="prompt" name="prompt" placeholder="Enter your prompt..."><br><br>
                <button type="submit">Generate</button>
            </form>
        </section>

        <!-- 生成されたテキストを表示 -->
        {% if generated_text %}
        <section class="response-section">
            <div class="response">
                <h2>Generated Text:</h2>
                <p class="generated-text">{{ generated_text }}</p>
                <a href="https://twitter.com/intent/tweet?text={{ generated_text }}" class="tweet-link">Tweet</a>
            </div>
        </section>
        {% endif %}

        <!-- Wikipediaからの関連情報を表示 -->
        {% if wikipedia_text %}
        <section class="wikipedia-section">
            <div class="wikipedia-info">
                <h2>Wikipedia Info:</h2>
                <p>{{ wikipedia_text }}</p>
            </div>
        </section>
        {% endif %}

        <!-- 保存ボタン -->
        <button id="saveButton">Save Generated Text</button>
    </main>

    <footer>
        <p>© 2024 Generate Text App</p>
    </footer>

    <script>
        // 保存ボタンがクリックされたときの処理
        document.getElementById('saveButton').addEventListener('click', function() {
            // 生成されたテキストを取得
            var generatedText = document.querySelector('.generated-text').innerText;
            // テキストをダウンロード用にBlobに変換
            var blob = new Blob([generatedText], { type: 'text/plain' });
            // BlobをURLに変換
            var url = window.URL.createObjectURL(blob);
            // ダウンロード用のリンクを作成してクリック
            var a = document.createElement('a');
            a.href = url;
            a.download = 'generated_text.txt';
            document.body.appendChild(a);
            a.click();
            // 不要なURLを解放
            window.URL.revokeObjectURL(url);
            document.body.removeChild(a);
        });
    </script>

</body>
</html>

今回はテキストデータを保存できるようにしました

GPT-4にWebサイトを“自律的に”ハッキングさせる方法 AI自身が脆弱性を検出、成功率70%以上【研究紹介】

米UIUC(イリノイ大学アーバナ・シャンペーン校)に所属する研究者らが発表した論文「LLM Agents can Autonomously Hack Websites」は、大規模言語モデル(LLM)を用いたAIエージェントに、自律的にWebサイトをハッキングさせる攻撃手法を提案した研究報告である。LLMエージェントがWebサイトに存在する脆弱性を事前に知…

Posted from: this blog via Microsoft Power Automate.

電子書籍の取り分についてのお話|hiroyama

コンテンツ制作側は意外と儲からないという話をしておきたい電子書籍の分配について、作家さんやマンガ家さんからいろいろな論が出ている。出版社が暴利を取っている、搾取しているという論もあるが、割とそんなこともないぞという話。 電子書籍販売のプレイヤーと主な料率下記料率は主にグロス売上(一般的な小売価格ベ…

Posted from: this blog via Microsoft Power Automate.

消えたライトノベル作家その1―江古田東京砂漠にまぼろしのぶらじま太郎を見た!(総集編)

ライトノベル&イラストレーション外伝 消えたライトノベル作家その1 江古田東京砂漠にまぼろしのぶらじま太郎を見た!(総集編) 昔から、パソコンを初めとした情報技術産業の一年は、他の業界の三年に相当すると言われてきた。冷蔵庫が三年で壊れたらクレームが殺到するだろうが、三年前のパソコンは、もはや買い替え…

Posted from: this blog via Microsoft Power Automate.

クルマ系YouTuberが開発!? KGモーターズが超小型EV「ミニマムモビリティ」を公開 – スマートモビリティJP

原付以上軽自動車未満「ミニカー」区分のモビリティ今回発表された「ミニマムモビリティ」は、1人乗りの超小型車両区分である「ミニカー」(50cc原付エンジンを乗せたミニ自動車)規格で設計され、走る楽しさを追求した超小型EVだ。 軽自動車未満の超小型EVとして開発中 80年代のポラロイドカメラをモチーフに、レトロで…

Posted from: this blog via Microsoft Power Automate.

ロッテと麺屋武蔵の斬新コラボ「揚見(あげみ)だいふく ら~麺」を食べたら、あのパスタの味がした!

麺屋武蔵は東京で14店舗を展開する、1996年創業の老舗ラーメンチェーンである。毎年バレンタインの時期にロッテとタッグを組んで、チョコレートを使ったラーメンを提供することでよく知られている。そのコラボメニューは独創的で、 […]

from ロケットニュース24 https://ift.tt/G0ZgI7O
via IFTTT

軽自動車を「手で塗る “しっくい風” 壁用仕上げ塗料」でオールペン(全塗装)したらこうなった

『手で塗るMORUMORU(モルモル)』という商品をご存知だろうか? 屋内でも屋外でも使用できる、しっくい風の壁用仕上・補修剤だ。 その名の通り、手で塗れるのが特徴で、DIY初心者でも簡単にしっくい風の質感や風合いを楽し […]

from ロケットニュース24 https://ift.tt/pvcBUkN
via IFTTT

【閲覧注意】昔は当たり前にあったお風呂場の懐かしい床がいつしかすごい嫌われ者になっていた「本能的に無理 ! ってなる」

ユイ(Taylor’s Version) @Jirachi_yui え、こういうの結構好きなんだけどレアなのかな でも確かに自分の家は嫌だってのは分かるかもしれない。たまにだからいいみたいな感じだよね、派手なホテルとかそんな感じ。 x.com/hirausan/statu… 2024-02-20 21:06:15

Posted from: this blog via Microsoft Power Automate.

激安通販「Temu」に初めて登録 → 1万5000円のクーポンに歓喜するもタイマー発動 → 制限時間内に買い物できなかった結果…

凄まじい勢いを感じていただけに、中国の激安通販サイトTemu(ティームー)が気になりまくっていた。 何しろ、インスタやゲームアプリなど至るところでTemu、Temu、Temu。とんでもない数の広告とエンカウントして、私は […]

from ロケットニュース24 https://ift.tt/RfQBhu1
via IFTTT