Google AI studio(Gemini) 로 챗봇 구현

Google AI studio로 챗봇을 구현할 수 있다. 아직 까지는 무료다. 아래 코드를 실행하면 구글 챗봇이 만들어진다.

python 코드

API Key는 여기서 얻어서 아래 “YOUR_API_KEY”부분에 붙여넣고 실행하시면 됩니다.

google AI는 여기서 접근하시면 됩니다.

아래 코드 중 ‘allow_unsafe_werkzeug=True’ 이 없으면, 아래 오류가 발생한다.

‘my query 1’과 “response 1” 부분에는 질문에 대한 모법 답안을 입력해주시면 됩니다.

RuntimeError: The Werkzeug web server is not designed to run in production. Pass allow_unsafe_werkzeug=True to the run() method to disable this error.

‘allow_unsafe_werkzeug=True’를 추가하면 해결된다. 그러나, flask는 개발용 웹서버로 이대로 서비스를 하면 해커들의 타겟이 되어 서버가 공격받게 된다.

"""
At the command line, only need to run once to install the package via pip:

$ pip install google-generativeai
"""

import google.generativeai as genai
from flask import Flask, render_template
from flask_socketio import SocketIO, send

genai.configure(api_key="YOUR_API_KEY")


app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

# Set up the model
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)

convo = model.start_chat(history=[
  {
    "role": "user",
    "parts": ["my query 1"]
  },
  {
    "role": "model",
    "parts": ["response 1"]
  },
  {
    "role": "user",
    "parts": ["my query 2"]
  },
  {
    "role": "model",
    "parts": ["response 2"]
  },
])



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

@socketio.on('message')
def handleMessage(msg):

    # my query
    send(msg, broadcast=True)

    convo.send_message(msg)
    send(convo.last.text, broadcast=True)

if __name__ == '__main__':
    socketio.run(app, host="0.0.0.0", port=5000, debug=True, allow_unsafe_werkzeug=True)

gaistudio.html를 templates폴에 생성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Chat App</title>
    <style>
        #messages { list-style-type: none; margin: 0; padding: 0; }
        #messages li { padding: 5px 10px; }
        #messages li:nth-child(odd) { background: #eee; }
        #message { margin-top: 10px; }
    </style>
</head>
<body>
    <ul id="messages"></ul>
    <input id="message" autocomplete="off"><button onclick="sendMessage()">Send</button>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.min.js"></script>
    <script type="text/javascript">
        var socket = io();

        function sendMessage() {
            var messageInput = document.getElementById('message');
            socket.emit('message', messageInput.value);
            messageInput.value = '';
        }

        socket.on('message', function(msg) {
            var messages = document.getElementById('messages');
            var li = document.createElement('li');
            li.textContent = msg;
            messages.appendChild(li);
            window.scrollTo(0, document.body.scrollHeight);
        });

        var input = document.getElementById("message");
        input.addEventListener("keyup", function(event) {
            if (event.keyCode === 13) {
                event.preventDefault();
                sendMessage();
            }
        });
    </script>
</body>
</html>

Chat GPT로 챗봇 만들기
Vertex AI로 챗봇 만들기
Google AI studio(Gemini) 로 챗봇 구현
Claude로 챗봇 만들기
챗팅창 화면 꾸미기

Leave a Comment