저희 팀은 일기를 작성하면 크레파스로 그린 듯한 아이의 그림체로 변환해주는 프로그램을 만드는 과정에 있습니다. 핵심 부분은 모델 튜닝이지만... 이 부분은 방학 때 하는 것으로 넘겨보도록 한다 (긁적)
우선 글을 이미지로 바꾸어주는 과정에서 프롬프트 작성에 ChatGPT를 사용하기로 해서 Django에 ChatGPT를 연결한 과정을 보여드리려고 합니다.
pip install django
pip install openai
챗지피티를 연결하려면 우선 openai에서 API keys를 발급받아야 합니다.

로그인을 한 뒤 API keys에 들어가면 나오는 화면입니다.
Create new secret key를 눌러 키의 이름을 정하고 나면 키가 생성됩니다.
이때 팝업창에 뜬 키는 복사해서 반드시!!! 다른 곳에 저장해둬야 합니다다. 팝업창을 끄면 다시는 API key를 확인할 수 없기 때문입니다.
django-admin startproject config.
django-admin startapp CGPT

CGPT 앱의 urls.py는 직접 생성해야하며 templates 폴더 또한 직접 생성해줘야 합니다.
(아래 db_conncection.py는 다른 팀원의 것으로 무시해도 좋습니다)
from django.shortcuts import render
from django.http import JsonResponse
import openai
import os
openai.api_key='s--y' #앞서 자신이 부여받은 API key를 넣으면 된다. 절대 외부에 공개해서는 안된다.
def get_completion(prompt):
print(prompt)
query = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{'role':'user','content': prompt}
],
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
response = query.choices[0].message["content"]
print(response)
return response
def query_view(request):
if request.method == 'POST':
prompt = request.POST.get('prompt')
prompt=str(prompt)
response = get_completion(prompt)
return JsonResponse({'response': response})
return render(request, 'index.html')
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('', views.query_view, name='query_view'),
]
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('CGPT/', include('CGPT.urls')),
path('', include('CGPT.urls')),
]
<!-- query.html -->
<html>
<head>
<title>Query</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.0/dist/js.cookie.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.2/font/bootstrap-icons.css" integrity="sha384-b6lVK+yci+bfDmaY1u0zE8YYJt0TZxLEAFyYSLHId4xoVvsrQu3INevFKo+Xir8e" crossorigin="anonymous">
<script>
$(document).ready(function() {
// Send the form on enter keypress and avoid if shift is pressed
$('#prompt').keypress(function(event) {
if (event.keyCode === 13 && !event.shiftKey) {
event.preventDefault();
$('form').submit();
}
});
$('form').on('submit', function(event) {
event.preventDefault();
// get the CSRF token from the cookie
var csrftoken = Cookies.get('csrftoken');
// set the CSRF token in the AJAX headers
$.ajaxSetup({
headers: { 'X-CSRFToken': csrftoken }
});
// Get the prompt
var prompt = $('#prompt').val();
var dateTime = new Date();
var time = dateTime.toLocaleTimeString();
// Add the prompt to the response div
$('#response').append('<p>('+ time + ') <i class="bi bi-person"></i>: ' + prompt + '</p>');
// Clear the prompt
$('#prompt').val('');
$.ajax({
url: '/',
type: 'POST',
data: {prompt: prompt},
dataType: 'json',
success: function(data) {
$('#response').append('<p>('+ time + ') <i class="bi bi-robot"></i>: ' + data.response + '</p>');
}
});
});
});
</script>
</head>
<body>
<div class="container p-3">
<h3>ChatGPT Clone</h3>
<div class="mb-3">
<form method="post">
{% csrf_token %}
<label for="prompt" class="form-label"><strong>Prompt: </strong></label>
<textarea class="form-control" type="textarea" id="prompt" name="prompt" rows="3"></textarea>
<br>
<button class="btn btn-primary" type="submit">Submit</button>
</form>
</div>
<br>
<div class="mb-3">
<h6>Response:</h6>
<div class="container border overflow-auto h-50" id="response"></div>
</div>
</div>
</body>
</html>
python manage.py runserver
실제 http://127.0.0.1:8000/ 에 접속했을 때 출력화면의 모습입니다.

사용자가 hi gpt 라고 작성하면 연결된 gpt에게서 답이 돌아오는 것을 확인할 수 있습니다.
[참조]
https://www.geeksforgeeks.org/how-to-implement-chatgpt-in-django/
-> html은 아직 공부하지 못해 여기서 가져왔습니다.