본문 바로가기
✨Ai 프로젝트 만들기

3. OpenAI 를 활용하여 Aice 자격증 챗봇 만들기 - 파이썬 debug

by @ENFJ 2025. 6. 23.

1. breakpoint() 를 이용하여 디버깅 하기

 

메시지에 무슨 데이터가 들어오는지 확인하고 스레드로 답변! 하는 기능을 만들어 볼건데 

 

그전에 breakpoint 사용을 해볼겁니다.

 

슬랙에 다음과 같이  [  안녕  ]   이라고 쳤을때 @app.message("안녕") 이 실행될텐데 

그 아래 breakpoint(); 를 추가하여 멈춰 볼겁니다.

 

breakpoint();

 

그리고 이후 (pdb) 파이썬 디버그 뜨는데, 여기서 p message (print message) 를 입력하면 

p message

메시지에 대한 정보들이 나옵니다.

 

pp message (pretty print message) 를 입력하게 되면 더 보기 좋게 데이터들이 아래처럼  나옵니다.

pp message

보면 알겠지만 딕셔너리 데이터 / json 형태입니다.

 


2. breakpoint -> pp message 로 나온 데이터 살펴보기 

여기 데이터를 좀 살펴 보면 

여기서 채널(channel) 은 

업무 생상성 향상 <-- 이 채널을 말합니다.

 

이는 슬랙에서도 확인이 가능한데요,

이렇게 직접 채널 우클릭하여 [채널 세부정보 보기] 클릭 -> 채널 ID 를 확인 할 수 있습니다.

 

그리고 event_ts / ts 이렇게 두개가 있는데

 

일단 tstime stamp 인데요, 즉 시간을 기록합니다.

그렇다면 event_ts 는 이벤트가 발생한 시간을 기록하는거겠죠? 그러니까  메시지를 보낸 시간(ts) 이벤트를 발생한 시간(event_ts) 구별 한다는 것입니다. 

 

#app.py


@app.message("안녕")
def message_hello(message, say):
    # say(...) 함수는 같은 채널에 메시지를 다시 보내주는 함수야
    # <@{user}> 문법은 슬랙에서 멘션을 의미함 (즉, 사용자에게 직접 말하는 것처럼 보여)
    breakpoint()
    message_text = message.get("text")
    response = aice_chain(message_text)
    # say(response)
    say(response,thread_ts=message.get("ts"))
    
    # say(f"안녕하세요  <@{message['user']}> 님!")

 

app.py 코드 에서 아래 say(response) 는 그냥 대답을 하는 코드인데,

    say(response)

 

response 뒤에 인자로 thread_ts = message.get["ts"] 를 추가 하게 되면 해당 메시지에 답변을 다는 형태로 바뀌게 됩니다.

say(response,thread_ts=message.get("ts"))

 

실제로 슬랙에 안녕이라고 보내니까 답변을 달아주는 형식으로 변한걸 확인 할 수 있습니다.

댓글을 클릭 해보면 스레드 내에서 아래 사진 처럼  댓글을 달아주는 것을 볼 수 있습니다.