학습 로그/Python3

D+43 [Python] PySide6 & 가상의 LLM 대화앱 예제 실습

goodjob^^ 2026. 6. 9. 21:37

ㅇ 일 자 : 2026년 6월 9일(화)

ㅇ 내 용 :  로컬호스트 개념, 멀티스레드 기반 GUI 비동기 처리, LLM연동 및 리소스 관리

    ※ 실습을 위한 가상환경임

1. 로컬호스트(Localhost) 및 개발 환경 이해
  • 개념 정의: 컴퓨터 자신을 지칭하는 기본 루프백 주소 (외부 네트워크에서 접근 불가)
  • 접속 방법: 서버 활성화 상태에서 브라우저 주소창에 http://127.0.0.1 또는 http://localhost 입력
  • 포트 지정: 개발 서버가 특정 포트를 사용할 경우 http://localhost:8080 형태로 접속
  • DB 관리: MySQL / MariaDB 환경은 http://localhost/phpmyadmin을 통해 데이터베이스 제어 (환경에 따라 다를 수 있음)
2. 워커 및 멀티스레드(Multi-Thread)
  • 스레드(Thread): 코드가 순차적으로 실행되는 단일 흐름의 단위
  • 멀티스레드 필요성: OS 기반 응용 소프트웨어 및 GUI 개발의 핵심 필수 개념
  • 동기(Synchronous): 하나의 작업이 완전히 끝난 후 다음 줄의 코드를 실행하는 방식
  • 비동기(Asynchronous): 앞선 작업의 종료 여부와 상관없이 다음 코드를 실행하는 방식 (네트워크 통신은 대기 방지를 위해 비동기 처리 권장)
  • GUI 화면 멈춤 방지: 프로그램 실행 중 UI가 먹통이 되는 현상을 방지하기 위해 대기 시간이 긴 로직 연산은 별도 스레드로 분리 (GUI 프로그램은 기본적으로 1개의 UI 스레드로 구동되며, 필요에 따라 로직 스레드를 추가)
3. 소스코드 보안 및 데이터 분리 원칙
  • 하드코딩 금지: 소스코드 내부에 고정 데이터를 직접 저장하는 행위 철저히 배제
  • 리소스 관리: 이미지나 아이콘 등은 리소스 파일(.qrc)을 활용하여 프로그램 코드와 자원을 독립적으로 분리
  • 개인정보 보호: AI 모델 정보, 회원 정보, API 키 등 민감 데이터는 소스코드 및 리소스 파일과 완벽히 분리하여 환경변수 파일(.env) 등으로 관리
4. 실습 및 기능 구현 핵심 요약
  • 응답 표시: GUI 화면에 로컬 LLM의 답변을 매끄럽게 출력하는 기능 구현
  • QThread 도입: LLM 답변 대기 시간 동안 UI가 멈추거나 응답 없음 상태가 되는 현상 해결
  • 앱 기능 전환: 일반 대화형 앱에서 효율적인 '메모 요약 앱'으로 구조 변경
  • 기록 시스템 구축: 사용자가 요약한 텍스트 히스토리를 한눈에 볼 수 있는 '요약 기록 목록' 구현
  • 환경 설정 최적화: 앱 세팅 값과 리소스 파일 정리를 통한 프로젝트 구조 안정화

 

5. 예시 실습 및 이해하기 

 

5.1. GUI에서 응답 표시하기

 

5. 2. QThread로 응답 대기중 화면 멈춤 방지

 

5.3. 메모 요약 앱으로 바꾸기

 

5.4. 요약 기록 목록 만들기

 

5.5. 세팅과 qrc 리소스 정리

 

끝.