Lala's tower

Google AI studio(Gemini) 로 챗봇 구현

Google AI studio(Gemini) 로 챗봇 구현

2024-03-05 23:12:54

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

Google AI studio(Gemini) 로 챗봇 구현 실행 결과

Google AI studio(Gemini) 로 챗봇 구현python 코드

Google AI studio 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>

코드를 배포하실 때는 gunicorn을 사용하시면됩니다.
그러나, 내 PC로 배포하는 것은 계속 켜두기 어려우니 서버에 올리는 방법이 있겠습니다만 비용이 발생하니, 아래 방법이 있습니다.

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