AI 부트캠프/챕터5(12.30~01.31)

TIL 79

musukie 2025. 1. 7. 14:10

사용자 입력 자료 레퍼런스화

저번에 사용자가 txt, pdf, url을 업로드하면, 전처리나 크롤링 등의 과정을 거쳐 json 형식의 파일로도 저장하고 데이터베이스에도 저장되게 했었다. 오전 팀 회의를 통해 여러 의견을 나누었고, json 파일로 따로 저장하지 않고 바로 데이터베이스에만 저장하게 하기로 했다.
 
이전에는 아래의 함수를 통해 json 파일을 따로 로컬에 저장하게 했었다.

    def save_to_json(self, data, filename='user_input.json'):
        try:
            with open(filename, 'a', encoding='utf-8') as f:
                json.dump(data, f, ensure_ascii=False, indent=4)
                f.write(',\n')  # 항목 사이에 콤마 추가
        except Exception as e:
            return JsonResponse({'status': 'error', 'message': f"Error saving to JSON: {e}"}, status=500)

이제는 이 함수를 주석처리하거나 코드 상에서 삭제하여, 따로 json 파일로 저장하지 않게 만들었다.
 

Youtube url

추가로 Youtube url을 사용자가 입력으로 넣었을 때에 대한 처리를 해주었다. 사용자가 Youtube url을 입력으로 넣으면 함수를 통해 youtube id를 받아서, 그 id에 해당하는 동영상의 자막을 string으로 받아오게 된다. 받아온 string을 바로 데이터베이스에 저장해주는 작업을 추가해주었다. 이를 통해 사용자는 Youtube 동영상을 학습 자료로 챗봇에게 넘겨줄 수 있게 되고, 챗봇은 넘겨받은 Youtube 자막 데이터를 통해 사용자에게 그와 관련된 학습을 제공할 수 있게 된다.
 
views.py 에서 url을 처리하는 함수에 링크에 youtube가 들어가는 경우를 따로 처리해주었다.

def read_url(self, url):
    try:
        if "notion" in url.lower():
            # Notion URL인 경우, pre_processing.py의 process_url 호출
            return process_url(url)
        elif "youtube" in url.lower():
            # Youtube URL인 경우, youtube.py의 extract_script 호출
            subtitle = extract_script(url)
            return subtitle
        else:
            # Notion이나 Youtube가 아닌 URL은 BeautifulSoup와 Requests로 처리
            return self.fetch_with_requests(url)
    except Exception as e:
        raise Exception(f"Error reading URL: {e}")

url에 youtube가 들어가는 경우에는 youtube.py 파일의 extract_script 함수에 따라 처리되게 하였다. 나머지 부분은 이전의 코드와 동일하다. 이제 사용자가 입력하는 url에서 notion, youtube, 그 외의 url들로 따로 처리할 수 있게 되었다.

'AI 부트캠프 > 챕터5(12.30~01.31)' 카테고리의 다른 글

TIL 81  (1) 2025.01.07
TIL 80  (0) 2025.01.07
TIL 78  (0) 2025.01.07
TIL 77  (0) 2025.01.07
TIL 76  (0) 2025.01.06