[TIL] 내일배움캠프 59일차_[Djangp] Django에 ChatGPT 연결
👀Today I Learn
구현하기
- urls.py
- 가장 먼저 url을 구현
- /chatbot/ 링크에서 에서 바로 이용할 수 있도록 하였음!
from django.urls import path from . import views app_name = 'chatbot' urlpatterns = [ path('', views.py_tutor, name='py_tutor'), ]
- models.py
-
모델은 유저의 질문과 챗봇의 답변만 설정하여 질문에 답변만 매칭되도록 구현
from django.db import models class Chatbot(models.Model) : user_message = models.TextField() gpt_message = models.TextField()
-
- bot.py
-
내 질문에 답변을 해줄 챗봇 설정
import openai from dotenv import load_dotenv import os # .env 파일에서 환경 변수 로드 load_dotenv() # API Key 설정 openai.api_key = os.getenv("OPENAI_API_KEY") def gpt(message) : prompt = """ 너는 파이썬 함수를 알려주는 서포터야. 내가 파이썬 함수를 입력하면, 함수의 역할과 사용방법에 대해 알려주고 간단한 예시도 알려줘. """ response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ { "role": "system", "content":prompt, }, { "role": "user", "content":message, } ] ) return response['choices'][0]['message']['content']
-
- view.py
-
이 부분에서 고민을 많이 했는데, 답변이랑 질문이 같이 보이는게 좋을 것 같아서 히스토리 형식으로 10개만 보이도록 셋팅함!
from django.shortcuts import render, redirect from .models import Chatbot from .bot import gpt def py_tutor(request) : if request.method == 'POST' : user_message = request.POST.get('user_message') if user_message : bot_response = gpt(user_message) Chatbot.objects.create(user_message=user_message, gpt_message=bot_response) chat_history = Chatbot.objects.all().order_by('-pk')[:10] context ={ "chat_history" : chat_history, } return render(request, 'chatbot/chatbot.html', context) return render(request, 'chatbot/chatbot.html')
-
- chatbot.html
- html은 아직도 좀 어려워서 간단하게 아는 것들만 사용해서 구현(ChatGPT가 살짝 도와줬다.)
{% extends "base.html" %}
{% block content %}
<h1>🤖hello! I'm Python Tutor</h1>
<h2>모르는 파이썬 함수가 있다면 검색해보세요!</h2>
<form method="POST">
{% csrf_token %}
<textarea name="user_message" rows="4" cols="50" placeholder="Ask me anything..."></textarea>
<button type="submit">질문하기</button>
</form>
<ul class="history">
{% for chat in chat_history %}
<li class="history-item">
<p class="user-message"> 질문 : {{ chat.user_message }}</p>
<pre class="bot-response"> 답변 {{ chat.gpt_message }}</pre>
</li>
{% endfor %}
{% endblock content %}
에러 해결하기
APIRemovedINV1
-
runserver를 하고 처음 질문을 하니까 뜨는 오류..!
-
OpenAI의 ChatCompletion API가 이전 버전에서 제거되었거나 더 이상 지원되지 않음!
-
💪해결하기
-
0.28을 사용하라고 하여서 변경해주었음
pip install openai==0.28
-
TemplateDoesNotExist
-
템플릿을 찾을 수 없다는 오류가 떴다.
-
💪해결하기
- 이럴 땐 오타를 찾는게 최고라고 과제를 하면서 깨달아서 열심히 오타를 찾으로 다녀보니,
- views.py에서
chatbot/chabot.html
라고 적어놨다ㅠㅠ t 하나가 빠져버린..🥲 오타 조심해야지..
- views.py에서
- 이럴 땐 오타를 찾는게 최고라고 과제를 하면서 깨달아서 열심히 오타를 찾으로 다녀보니,
구현화면
- 조금 꾸릿하지만 그래도 구현 완료!
- HTML과 CSS가 해결되면 그래도 조금 낫지 않을까..
-
여기에 질문시간을 추가하는 것도 좋을 것 같다.
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 256-260
- SQL 코드카타 86-87
- LLM 특강 내용 정리하기
- LLM 과제
- Docker 특강1 듣기
- TIL 작성
회고
Docker 강의까지 야무지게 듣는게 오늘 목표였는데, LLM 특강에서 과제가 나올거라고 누가 알았겠냐구요.. 생각보다 과제를 오래 붙잡고 있어서 오늘 목표는 다 못끝냈다.. 내일 시간내서 들어야지😭
CH4가 시작되면서 조가 바뀌었다. 저번 조는 다같이 팀 노션도 호로록 작성하고, 간략한 것들을 정한 뒤에 학습을 시작했다. 이번 주차에는 팀과제가 있어서 조금 더 빡세게 공부해야할듯💪
댓글남기기