데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Year-End Thanks Card를 보내보자(feat.AI)

      bykhb 24.12.31
      1,933 7 3
      DEVOTEE 요약
      연말 편지를 보내는 것은 저자의 습관이자 일 년을 정리하는 방법으로, 올해는 AI 기술을 활용하여 시스템적으로 웹카드를 제작하는 프로젝트를 진행했습니다. 다양한 템플릿과 메시지를 제작하여 수신자들에게 더 의미 있고 흥미로운 연말 인사를 전하려 했으며, 작업 과정에서 AI 서비스를 적극 활용하여 편지 작성과 데이터 관리의 효율성을 높였습니다. 연말 인사를 통해 간단한 인연도 의미 있게 만들려는 저자의 노력과 함께, AI 기술의 발전과 그것이 인간에게 주는 가능성을 엿볼 수 있습니다.

      image.png

      Year End Thanks Letter


      1. 연말은 따뜻하게... 하지만 손이 너무 많이 가잖아!?

      다시 연말입니다. 어김없이 찾아오는 이 시기에는, '딱히 한 것도 없는데 벌써 연말'이라는 생각을 매년 하게 되는 것 같습니다.

      올해 못 이룬 것에 대한 후회/미련과 '내년에는 달라지겠지' 하는 기대/희망이 묘하게 공존하는 특별한 시기이죠.


      "삶은 사실 습관으로 이루어져 있다"

      유명한 인물이 했을 법한 격언 같지만, 사실 제가 지어낸 말입니다.

      저는 꽤 습관론자입니다.

      루틴하게 반복하는 것들이 정해져 있는데, 연말에 주변 분들에게 새해 인사겸 편지 돌리는 것도 루틴 중에 하나입니다.

      받는 입장에서는 진부할 수도 있겠고, 사실 서로의 건투를 빌어준다고 해도 크게 다르지 않을 내년이란 것도 알지만,

      그럼에도 한 해를 함께 무사히 건너온 동료애(?)라고 할까요. 연말 편지는 1년에 마침표를 찍는 하나의 루틴이 되었습니다.

      스크린샷 2024-12-29 오후 4.50.39.png

      Year-End Thanks Card 변천사.

      연말편지도 나름(?) 변천사가 있었는데, 처음 시작할 때는 줄 사람도 별로 없었고, 어차피 남는게 시간이었던 대학생 시절이라 실물 편지를 건넸으나,

      직장인이 된 이후에는 카카오톡 메시지로 변경했습니다.

      카톡 메시지로 몇 년 해보니, 약간 맹맹(?)한 느낌이 들어 작년까지는 인터랙티브 웹카드 디자인 사이트에서 만들어서 보내고 있었습니다.


      문제는 이 작업이 점점 손이 많이 간다는 것.

      시간이 지날수록 보내야 되는 사람들의 수는 늘어가는데, 좀 더 재밌고, 의미있는 시도를 해보자는 생각은 커져가서, 이번 연말에는 좀 더 시스템화를 해보기로 했습니다.

      특히, 올해 AI 서비스들을 업무와 일상생활에서 많이 써보니, AI 서비스들을 잘 활용하면 괜찮은 프로세스를 만들 수 있을 것 같다는 확신이 생겼습니다.

      image.png

      할 게 (오히려) 더 많아 보이는 건 기분탓...!?


      2. 셋팅: 프로젝트 Flow

      일단, 이 프로젝트를 위해 필요한 재료들이 무엇인지 파악해 보았어요.

      스크린샷 2024-12-30 오전 9.35.50.png

      잘 모르겠는 부분이 많지만, 일단 해보자!

      저는 데이터 분삭을 업무로 하기에 개발은 어꺠 넘어로 아는 정도이고, 개발을 해본 것이라고는 streamlit 기반의 간단한 데모 정도를 구현 해본 것이 전부여서,

      잘 모르겠는 부분은 우리 조수들한테 맡기기로 했습니다.

      image.png

      프로젝트에 대한 기본적인 정보를 담은 txt 파일을 작성하여 chatGPT/Claude의 '프로젝트' 메뉴에 있는 'Project Knowledge'에 넣었습니다. 저도 정답을 모르고, 경험이 없는 프로젝트이기에 두 개의 AI 서비스 답변을 비교해 가면서 작업하였습니다. 올 한해 동안 openAI에서 나온 여러 모델들과 Claude의 3.5 Sonnet을 활용하는 업무가 많았는데요,개인적으로는 항상 Claude의 답변이 더 나았습니다. 가장 최근에 나온 GPT Pro도 고려해봤으나 $200는 쉽지 않아(;;) 포기...

      이렇게 조수들 셋팅을 끝내고, 함께 그려본 프로젝트의 Flow는 아래와 같아요.

      image.png



      3. 2024 수신인 리스트

      2024에 보낼 분들을 확정 하기 위해 작년에 보냈던 분들의 리스트부터 확인하였습니다.

      다행히 그동안 보냈던 수신인/메시지의 히스토리는 저장해놓고 있었습니다.

      연도별로 수신인과 해당 수신인에게 보낸 메시지의 내용은 구글 클라우드에 있습니다.

      스크린샷 2024-12-29 오후 7.26.25-side.png

      평소에도 저장해놓는 걸 좋아합니다. 한번 눌러도 되는 ctrl+s도 수십번 연타합니다. 자료들도 모으고 또 모으는데, '다람쥐로 태어났으면 잘 살았겠네~' 하는 생각도 가끔 합니다.

      image.png

      구글 문서에 수신인별로 저장해 놓은 메시지들. 그래도 나름 데이터 분석을 업무로 하기에, 형식을 맞춰서 저장해두었습니다. 여담으로, 현재 우리나라의 공공기관에서의 AI 활용이 더딘 이유로 AI가 읽기 쉬운 구조의 자료가 아니라는 얘기를 들었던 기억이 있습니다. hwp 문서에서 표안의 표, 표 겹치기 등의 구조가 많아 그렇다고 하네용...

      구글 드라이브-구글 문서(gdocs)들에 있는 정보들을 json/dataframe 형태로 저장하여, LLM이든 프론트에서의 개발이든 언제든 꺼내 쓸 수 있도록 합니다.

      해당 작업은 colab -> Google Drive 마운트/Google API 인증 -> 구글 문서들의 doc ID 가져오기 -> 문서 접근 이런 식으로 처리하였습니다.

      사실 처음에는 colab에서 구글 문서(gdocs)들을 다뤄본적이 없어 당황했는데, 친절한 AI 조수들이 잘 알려주었습니다.

      image.png

      구글 문서들을 colab으로 가져 온 뒤에는, 필요한 정보들을 파싱해서 csv로 만들어야 하는데 여기에는 LLM을 활용했습니다.

      처음엔 정규표현식으로 해보다가, 문서들의 형식이 모두 통일되어 있는 것이 아니기에, 필요 정보 파싱/전처리가 힘들었습니다.

      이런 경우에는 LLM이 정리하는 게 나을 것 같았고, 문서의 양도 적어 API 비용에 대한 부담이 없어서 gpt-4-mini로 해결했습니다.

      def extract_message_info(text):
          try:
              prompt = f"""
              다음 텍스트에서 정보를 추출해주세요. 텍스트는 연말에 보내는 메시지들의 모음입니다.
              JSON 형식으로만 응답해주세요. 코드 블록(```)이나 'json' 같은 추가 텍스트 없이 순수한 JSON만 응답해주세요.
      
              텍스트:
              {text}
      
              다음 형식으로 응답:
              {{
                  "receiver": "수신자 이름 (문서 제목이나 내용에서 추출)",
                  "years": ["텍스트에 언급된 연도들을 배열로"],
                  "messages": {{
                      "연도1": "해당 연도의 메시지 전체 내용",
                      "연도2": "해당 연도의 메시지 전체 내용",
                      ...
                  }}
              }}
              """
      
              response = client.chat.completions.create(
                  model="gpt-4o-mini",
                  messages=[
                      {"role": "system", "content": "당신은 텍스트를 분석하여 순수한 JSON 형식으로만 정보를 추출하는 assistant입니다. 코드 블록이나 추가 텍스트 없이 JSON만 응답하세요."},
                      {"role": "user", "content": prompt}
                  ],
                  temperature=0
              )

      이렇게해서 작년까지 보냈던 히스토리 파일들에서 수신인과 메시지들을 csv로 얻을 수 있었어요.

      image.png

      강민,경훈,계웅님...지우라면 지울게요....^_^;;

      여기까지는 기존에 저장해둔 내역이고, 올해 새로 생긴 인연으로 수신인에 추가가 필요한 분들도 있습니다.

      저는 회사 일정은 아웃룩에, 개인 일정은 Notion에 저장 하기 때문에 이 두 개의 서비스에서 데이터를 추출해야 합니다.


      아웃룩은 파일 -> 열기 및 내보내기 -> 가져오기/내보내기 -> 일정을 통해 파일을 추출할 수 있고,

      Notion도 내보내기로 데이터를 얻을까 하다가, AI검색 기능이 있길래 사용해봤습니다.

      image.png

      image.png

      Notion은 검색이 좋지 않기로 악명이 높은데, 제가 일정이 별로 없어서 그런지 제대로 추출하더군요.

      위 작업들을 통해 2024년 수신인 약 180명을 최종 확정하였습니다.


      3. 웹카드 기획 및 개발

      연말 편지를 좀 더 흥미있게 보내기 위해 틈틈이 생각해놓은 아이디어들이 있었습니다.


      1. 사진앨범

      사진을 정리하는데 친구들 결혼식에서 찍은 사진들이 정말 많더군요.

      올해 유독 주변에 결혼식이 많았어서 그런건데, 문득 삭제하기에는 아깝다는 생각이 들었어요.

      이 사진들을 나중에 다시 재가공(!) 해서 보내주면 재밌겠다고 생각이 들었고, 아래와 같이 만들어봤습니다.

      image.png

      결혼식 사진외에도 저장된 사진 중에 함께 기억할만한 사진이 있으면 웹카드로 만들었습니다


      2. 연말결산

      image.png

      유튜브 뮤직 / 왓챠 / TOSS의 연멸 결산 컨텐츠.

      저도 연말마다 1년동안 보았던 영화,책,음악 등등에 순위를 매기는데,

      이걸 활용하면 취향 공유도 되고, 재밌을 것 같았어요.


      3. sora-영상생성 활용

      세번쨰는 제 관심의 연장선에서 만들어봤어요. openAI의 sora를 활용해야지 생각했는데, 좀처럼 기회가 없었는데

      이번에 사용해봤습니다. sora는 API도 없더군요. 웹페이지에서 프롬프트로 만드는 건데, sora는 chatGPT의 초기 버전처럼 영어와 한글 프롬프트의 차이점이 많았습니다.

      image.png

      둘 다 같은 프롬프트인데, 이 프롬프트에는 주인공 여성의 얼굴은 나오지 않게 해달라는 내용이 포함되어 있었습니다. 왼쪽은 한글 프롬프트이고, 오른쪽은 영어인데, 영어는 프롬프트 대로 여주인공의 얼굴이 나오지 않은 반면, 한국 프롬프트는 그렇지 않았습니다.

      sora 영상을 통한 웹카드는 받는 사람과 관련된 영상 웹카드 첫 페이지에 나오게 한 뒤에 편지는 뒤에 나오는 식으로 기획해봤습니다.

      image.png

      원본영상을 sora를 통해 Remix한 버전. remix에 사용된 프롬프트는 'k-pop 아이돌처럼 만들어줘, 무대도 동일하게'입니당. Remix는 강도를 정할 수 있는데, 가운데가 mid이고, 맨 오른쪾이 strong입니다. 참고로 영상 속 아이는 조카입니다.

      image.png

      대략적인 스케치는 위와 같이 제가 대충 그려 보고, AI 조수들과 개발하였습니다.

      올해 하반기에는 cursor.ai를 많이 활용하였는데, 만족스러워요.

      chatGPT, Claude는 코드를 계속 복붙해야 되는데, cursor.ai는 에디터에 그대로 사용가능하여 효율적입니다.


      이렇게 총 8개의 웹카드 템플릿을 제작 했고, 정리하면 아래와 같습니다.

      image.png

      • (추가) newyear: 별자리로 이어보는 2025년 + 개인화 메시지

      테스트URL

      (++)추가 2025 별자리: https://year-end-thanks-cards.web.app/card/newyear/2024/UregA4YmBQwZitGpPtob


      5. 메시지 생성하기

      메시지는 그동안 작성했었던 메시지들을 few shot으로 과거에 제가 작성했던 내용과 비슷한 메시지들을 생성했습니다.

      class MessageGenerator:
          def __init__(self, api_key: str, langsmith_api_key: str):
              self.tracer = LangChainTracer(
                  project_name="year_end_messages"
              )
      
              self.llm = ChatOpenAI(
                  temperature=0.7,
                  model_name="gpt-4",
                  openai_api_key=api_key,
                  callbacks=[self.tracer]
              )
      
              self.prompt_template = ChatPromptTemplate.from_template("""
              당신은 연말 감사 메시지를 작성하는 전문가입니다.
              아래는 이 사람에게 보낸 과거 메시지 히스토리입니다:
      
              {message_history}
      
              저와의 관계는 이래요:
              {person_relationship}
      
              올해 있었던 주요 사건들:
              {year_events}
      
              위 정보를 바탕으로, 2024년 연말 메시지를 작성해주세요.
              다음 사항을 고려해주세요:
              1. 과거 메시지의 톤앤매너를 유지하되, 반복적인 표현은 피해주세요
              2. 올해 있었던 특별한 사건이나 대화를 언급해주세요
              3. 진정성 있는 메시지를 작성해주세요
              4. 이모티콘은 적절히 사용해주세요
              """)

      올해는 업무도 고객 개인화 MMS를 생성했기에, 어떤 식으로 결과가 나올지는 대충 알고 있기는 했는데, 생성된 메시지가 아쉬운 점이 있더군요.

      내용이 나쁘지는 않지만, 제가 직접 고치는 메시지가 많았습니다.

      나는 올해 했던 일을 내년에도 할 수 있어서

      다행이라는 안심과,

      내년에도 반복해야되는 근심속에서

      올해는 정리하고 내년을 준비하고 있어.

      위 메시지는 AI 생성이고, 내용도 괜찮고 제가 과거에 썼던 표현들이 담겨있기는 한데,

      너무 포괄적이고, 생성된 메시지들과 수신인에 매칭 되지 않는 게 너무 많았습니다.

      개인적인 얘기들을 적어야 될 때도 있어서 LLM은 인사말/맺음말에만 적용했습니다.


      6. 결과물 확인 및 발송

      웹카드 템플릿과 메시지를 모두 만들었고, 이제 남은 건 누구한테 어떤 템플릿을 보낼지에 대한 고민입니다.

      일단, 올해 결혼한 사람들과 사진이 있는 사람들은 '결혼_B컷', '사진_추억' 템플릿에 우선으로 배정했고,

      문화에 대한 관심이 있다는 걸 아는 사람들은 '연말결산' 등 나름 고심(?)해서 매칭 하였습니다.

      image.png

      최종결과: 결혼_B컷 / 추억_사진

      image.png

      연말 결산

      image.png

      선택형

      image.png

      떙스레터, 퀴즈형

      image.png

      sora 영상 생성 유형

      image.png

      ++추가 선택유형, 별자리+개인화 메시지

      이렇게 최종 발송 준비가 끝났습니다.

      (이 글을 쓰는 현재는 아직 발송을 하지는 않았습니다. 발송까지 자동화하고 싶었는데, 카톡은 어려운 것 같네요)


      Epilogue

      image.png

      연말에 겨우 인사 한 번 하는 것이 고작일 수도 있고, 이런 게 무슨 의미가 있을까 싶기도 하죠. 하지만, '시절 인연'으로 끝났던, 혹은 그때가 마지막으로 보는 것인 줄은 미처 알지 못하고 지나간 인연들을 기억해본다면, 조금은 의미가 있을 수도 있겠지요.

      사실, 작년 연말에도 웹카드를 만들어 보려고 했으나 작년에는 못했어요.

      저는 작년이나 지금이나 비슷한 수준인데, 올해 달랐던 건 AI.

      1년 동안 나아진 건 제가 아니라 AI 서비스들인 것이죠.

      AI를 인류의 새로운 불이라고 하는 표현이 과장만은 아닌 이유입니다.


      각오로 시작하고, 반성으로 끝나는 1년이 쌓이는 것 같아요.

      "뭐, 내년에는 다르겠지"라고 맘편히 얘기 할 수 있는, 불안한 낙관이 허용되는 것도 오늘까지.

      내일부터는 다시 1년이 시작되고, 같은 질문을 다시 마주해야 합니다.

      그래도, 연말에는 역시 희망을 품고, 주변 사람들과 온기를 나누는 게 좋겠지요.

      다이어트도 항상 내일부터이지 않습니까~ ^_^


      마음 아픈 일들로 2024년의 연말 풍경은 따스한 불빛이 반짝이는 거리와는 다른 모습입니다.

      내년에는 행복한 일들만 가득하길 바랍니다.


      새해 복 많이 받으세요.


      Refernce

      1. https://www.cursor.com/

      2. https://openai.com/12-days/

      3. https://wikidocs.net/book/14314

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      bykhb 님의 최신 블로그

      더보기
      동영상 기고하기