• 31-12-2023, 21:24:37
    #1
    merhaba bugün paylaştığımın konun 2. serisi bu bugün sizlere pythonanywhere üstünden canli websitede google gemini apisini kullanarak nasıl anlık bir chartbot yapabileceğiniz anlatiyorum zaten çok basit

    1. adım
    https://makersuite.google.com/
    siteye girdikte tüm şartları kabul edelim sol tarafta menüde create api diyelim.
    2. adım
    apimizi oluşturduktan sonra pythonanywhere.com sitesinden bir adet python server hosting oluşturuyoruz flask ile
    3. adım
    bu kodlari pythonanywhere py dosyasına yzip kaydediyoruz
    from flask import Flask, render_template, request, jsonify
    import google.generativeai as genai
    app = Flask(__name__)
    # GenAI yapılandırması ve model oluşturma
    genai.configure(api_key="buraya aldığınız token gelecek")
    generation_config = {
        "temperature": 0.9,
        "top_p": 1,
        "top_k": 1,
        "max_output_tokens": 2048,
    }
    safety_settings = [
        {
            "category": "HARM_CATEGORY_HARASSMENT",
            "threshold": "BLOCK_MEDIUM_AND_ABOVE"
        },
        {
            "category": "HARM_CATEGORY_HATE_SPEECH",
            "threshold": "BLOCK_MEDIUM_AND_ABOVE"
        },
        {
            "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
            "threshold": "BLOCK_MEDIUM_AND_ABOVE"
        },
        {
            "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
            "threshold": "BLOCK_MEDIUM_AND_ABOVE"
        },
    ]
    model = genai.GenerativeModel(model_name="gemini-pro",
                                  generation_config=generation_config,
                                  safety_settings=safety_settings)
    @app.route('/')
    def index():
        return render_template('index.html')
    @app.route('/generate', methods=['POST'])
    def generate_content():
        data = request.get_json()
        prompt = data.get('prompt', '')
        prompt_parts = [prompt]
        response = model.generate_content(prompt_parts)
        
        return jsonify({'response': response.text})
    if __name__ == '__main__':
        app.run(debug=True)
    4. adım
    tokenimizde ekledikten sonra py dosyamızı kaydediyoruz
    5. adım
    bir adet templates klasörü oluşturuyoruz ve içersine index.html dosyasını oluştueruyoruz

    6. adım
    oluşturdugunuz index.html içine
    şu kodları yapiştiriyoruz
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Google Gemini pro AI</title>
        <!-- Bootstrap CSS -->
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
        <style>
            /* Dark Mode */
            body {
                background-color: #1a1a1a;
                color: #fff;
            }
            /* Form Styling */
            #contentForm {
                margin-top: 20px;
            }
            #prompt {
                resize: none;
            }
            /* Result Styling */
            #result {
                margin-top: 20px;
            }
            .generated-text {
                margin-bottom: 20px;
                border: 1px solid #ccc;
                padding: 10px;
                position: relative;
                word-wrap: break-word;
            }
            .generated-text pre {
                white-space: pre-wrap;
                background-color: #f8f9fa;
                padding: 10px;
                border-radius: 5px;
                margin-top: 10px;
            }
            .copyButton {
                position: absolute;
                top: 5px;
                right: 5px;
                cursor: pointer;
                font-size: 24px;
                color: #007bff;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <h1 class="mt-4">Google Gemini pro AI</h1>
            <form id="contentForm" class="mt-4">
                <div class="form-group">
                    <label for="prompt">Soru:</label>
                    <textarea id="prompt" name="prompt" rows="4" cols="50" class="form-control"></textarea>
                </div>
                <button type="submit" class="btn btn-success">Üret</button>
            </form>
            <div id="result" class="mt-4"></div>
        </div>
    
        <!-- Bootstrap JS ve jQuery -->
        <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    
        <script>
            document.getElementById('contentForm').addEventListener('submit', function(event) {
                event.preventDefault();
                generateContent();
            });
    
            function generateContent() {
                var promptText = document.getElementById('prompt').value;
    
                fetch('/generate', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({prompt: promptText})
                })
                .then(response => response.json())
                .then(data => {
                    var resultDiv = document.getElementById('result');
                    var generatedText = document.createElement('div');
                    generatedText.classList.add('generated-text');
                    generatedText.innerHTML = `
                        <pre>${data.response}</pre>
                        <span class="copyButton" onclick="copyTextToClipboard('${data.response}')">📋</span>
                    `;
                    resultDiv.appendChild(generatedText);
                });
            }
    
            function copyTextToClipboard(text) {
                const el = document.createElement('textarea');
                el.value = text;
                document.body.appendChild(el);
                el.select();
                document.execCommand('copy');
                document.body.removeChild(el);
                alert('Metin panoya kopyalandı: ' + text);
            }
        </script>
    </body>
    </html>
    kaydediyoruz ve pythonanywhere web kısmına girip serverimizi bir kerwe yeniliyoruz

    vee işlemin sonucu



    oluşturdugum server örnek

    https://geminipro.pythonanywhere.com/
  • 31-12-2023, 21:32:04
    #2
    ai markdown olarak cevap veriyor galiba md to html eklersen daha güzel gözükebilir.