Skip to content

boostcampaitech7/level4-nlp-finalproject-hackathon-nlp-06-lv3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋งค์ผ๋ฉ”์ผ: ์ผ๊ฐ„ ๋ฉ”์ผ ๋ณด๊ณ ์„œ ๋น„์„œ

banner

๋งค์ผ ์Œ“์ด๋Š” ๋ฉ”์ผ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ , ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋†“์น˜์ง€ ์•Š๋„๋ก ๋•๋Š” LLM Agent ๊ธฐ๋ฐ˜ Chrome Extension ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

ํ•˜๋ฃจ ๋™์•ˆ ๋ฐ›์€ ๋ฉ”์ผ์„ ์š”์•ฝํ•œ ๋ณด๊ณ ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด ์—…๋ฌด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๋ฐ ์ž์„ธํ•œ ์‹คํ—˜ ๋‚ด์—ญ์€ ๋…ธ์…˜ ๋งํฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฌ DEMO

main

  1. /assets/chrome_extension.zip์„ ๋‹ค์šด๋ฐ›์•„ ์••์ถ•ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

  2. chrome://extensions์—์„œ ์šฐ์ƒ๋‹จ์˜ ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ขŒ์ƒ๋‹จ์˜ ์••์ถ•ํ•ด์ œ๋œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.๋ฅผ ์„ ํƒํ•˜์—ฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ“ฉ ๋ฉ”์ผ ์š”์•ฝ & ๋ณด๊ณ ์„œ ์ œ๊ณต
    • ๋งค์ผ ์˜ค์ „ 9์‹œ, ๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋“ค์˜ ๋ฐ›์€ ๋ฉ”์ผ์„ ์š”์•ฝํ•ด ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • Reflexion ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ๋„ ํ•ต์‹ฌ์ ์ธ ๋‚ด์šฉ์ด ๋‹ด๊ธฐ๋„๋ก ๋ฐ˜๋ณต์ ์œผ๋กœ ์ •์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ” ์ฒจ๋ถ€ํŒŒ์ผ ๋ฐ ์ด๋ฏธ์ง€ ๋ถ„์„
    • ๋ฉ”์ผ ๋ณธ๋ฌธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€, ์ฒจ๋ถ€ํŒŒ์ผ์˜ ๋‚ด์šฉ๊นŒ์ง€ ๋ถ„์„ํ•˜์—ฌ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • Upstage Document Parse๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์„œ ๋‚ด ์ •๋ณด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  • โœ… ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ œ๊ณต
    • ๋ฉ”์ผ์„ ํ•™์ˆ  / ํ–‰์ • / ๊ธฐํƒ€ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์š”์•ฝ๋œ ๋‚ด์šฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • Solar Pro๋ฅผ ํ™œ์šฉํ•ด ๋ถ„๋ฅ˜ ๋ฐ ์š”์•ฝ์„ ์ง„ํ–‰ํ•˜๋ฉฐ, Upstage Groundedness Check ๋ฐ Self-refine ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ด ์ •ํ™•๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๐Ÿ“‚ ์œ ์‚ฌ ๋ฉ”์ผ ์ž๋™ ๋ฌถ๊ธฐ
    • ๋น„์Šทํ•œ ์ฃผ์ œ์˜ ๋ฉ”์ผ์„ ์ž๋™์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ฝ๊ธฐ ๋ถ€๋‹ด์„ ์ค„์ž…๋‹ˆ๋‹ค.
    • Upstage Embedding ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜์—ฌ ์œ ์‚ฌ๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›๏ธ System Structures

service_pipeline

๐Ÿ—“๏ธ Project Timeline

timeline

๐Ÿ’ฏ ํ‰๊ฐ€ ์ง€ํ‘œ ๋ฐ ๊ฒฐ๊ณผ

๐Ÿ“ ๊ฐœ๋ณ„ ๋ฉ”์ผ ์š”์•ฝ

Condition ROUGE-1 Recall ROUGE-1 Precision ROUGE-1 F1 BERT Score Recall BERT Score Precision BERT Score F1 G-EVAL Conciseness
Baseline 0.0667 0.0042 0.1678 0.8223 0.8789 0.8494 4.3958
+ refine 0.2618 0.2049 0.4649 0.8740 0.9146 0.8932 4.8750
+ one-shot 0.2288 0.2005 0.3661 0.8325 0.8905 0.8588 4.9375
+ refine, one-shot 0.3062 0.2691 0.4690 0.8905 0.9319 0.0901 4.9167

ROUGE-1์—์„œ 24.0 ~ 30.1%p, BERTScore์—์„œ 5.3 ~ 6.8%p, G-Eval conciseness ํ•ญ๋ชฉ(5์  ๋งŒ์ )์—์„œ 0.52์  ์ƒ์Šนํญ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ G-eval ํ‰๊ฐ€ ํ•ญ๋ชฉ ๋ณ„ ํ”„๋กฌํ”„ํŠธ

๐Ÿท๏ธ ๋ฉ”์ผ ๋ถ„๋ฅ˜

Condition Accuracy Tokens Accuracy per Token
Baseline 0.8104 97,436 8.32e-6
summary based 0.7708 52,477 1.47e-5
summary based + 1-shot 0.8021 63,599 1.27e-5
summary based + 5-shots 0.7708 86,878 8.87e-6
summary based + 10-shots 0.8146 115,558 7.05e-6

์ •ํ™•๋„/ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์ง€ํ‘œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ˜„์žฌ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“œ ์ตœ์ข… ๋ฆฌํฌํŠธ

Condition G-eval score
Self-Refine: Baseline 3.75
Self-Refine: Detailed Instructions 3.50
Self-Refine: Detailed Instructions + Formatting Penalty 3.94
Reflexion: Baseline 4.00
Reflexion: Detailed Instructions 3.50
Reflexion: Detailed Instructions + Formatting Penalty 4.19

G-Eval ํ‰๊ฐ€ ํ‰๊ท  ์ ์ˆ˜(4.5์  ๋งŒ์ )์—์„œ 0.44์  ์ƒ์Šน์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌํŠธ G-Eval ํ‰๊ฐ€ ํ•ญ๋ชฉ ๋ณ„ ํ”„๋กฌํ”„ํŠธ

๐Ÿ› ๏ธ Tools and Technologies

Python Agent upstage solarpro gmail

upstage DocumentParse Self Refine Reflexion G-eval upstage solar embedding

fastapi mysql docker amazonec2 nginx github action

Chrome Extension typescript React vite tailwindcss reactquery

๐Ÿš€ Core Pipeline

core pipeline

๐Ÿ“ฉ mail ๋ฐ์ดํ„ฐ ํ…์ŠคํŠธํ™”

๋‹ค์–‘ํ•œ ์ฒจ๋ถ€ ํŒŒ์ผ๊ณผ ์‚ฌ์ง„ ๋“ฑ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์ผ ๋ฐ์ดํ„ฐ๋ฅผ LLM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ

  • Rule-based Filtering
    • LLM ํ† ํฐ์˜ ํšจ์œจ์  ํ™œ์šฉ์„ ์œ„ํ•ด ๊ด‘๊ณ  ๋ฉ”์ผ์€ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ œ์™ธ
  • Upstage Document Parse
    • ์ด๋ฏธ์ง€์— ํฌํ•จ๋œ ํ…์ŠคํŠธ ์ถ”์ถœ
  • Mail Metadata
    • ๋ฐ›์€ ์‹œ๊ฐ„, ๋ณด๋‚ธ ์ด ์ •๋ณด ๋“ฑ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉ

๐Ÿ“ ๊ฐœ๋ณ„ ๋ฉ”์ผ ์š”์•ฝ

๊ฐœ๋ณ„ ๋ฉ”์ผ๋“ค์„ ์š”์•ฝํ•˜์—ฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธํ™”

self-refine

  • LLM์„ ํ†ตํ•œ ์š”์•ฝ
    • Upstage Solar Pro ํ™œ์šฉ
  • Upstege Groundedness Check
    • ์›๋ฌธ๊ณผ์˜ ๋ถˆ์ผ์น˜๋‚˜ ์‚ฌ์‹ค๊ด€๊ณ„ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์ฆ
  • Self-Refine
    • ์ง€์ •ํ•œ ์š”์•ฝ๋ฌธ ํ˜•์‹์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ Self-Refine์„ ํ†ตํ•œ ๊ฒ€ํ† 
  • ์œ ์‚ฌ ๋ฉ”์ผ ๋ฌถ๊ธฐ
    • ๋ฉ”์ผ ์ œ๋ชฉ ๋ฐ ์š”์•ฝ๋ฌธ์„ Embeddingํ•ด ์œ ์‚ฌํ•œ ๋ฉ”์ผ๋“ค์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน ์„ค์ •

๐Ÿ—ฃ๏ธ ํ”„๋กฌํ”„ํŠธ

๐Ÿท๏ธ ๋ฉ”์ผ ๋ถ„๋ฅ˜

์š”์•ฝ๋œ ๋ฉ”์ผ ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์ค‘ ๋ถ„๋ฅ˜ ์ง„ํ–‰

  • ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜
    • ํ•™์ˆ /์—ฐ๊ตฌ, ํ–‰์ • ์ฒ˜๋ฆฌ, ๊ธฐํƒ€
  • ์ฒ˜๋ฆฌ ํ•„์š” ์—ฌ๋ถ€ ๋ถ„๋ฅ˜
    • ์ฒ˜๋ฆฌ ํ•„์š”, ์ฝ๊ธฐ

๐Ÿ—ฃ๏ธ ํ”„๋กฌํ”„ํŠธ

๊ฐ ๋ถ„๋ฅ˜์˜ ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค:

๐Ÿ“œ ์ตœ์ข… ๋ฆฌํฌํŠธ ์ƒ์„ฑ

๊ฐœ๋ณ„ ์š”์•ฝ๋ฌธ๋“ค์„ ํ™œ์šฉํ•˜์—ฌ Reflexion ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ ๋œ ์ด๋ฉ”์ผ๋“ค์˜ ํ•ต์‹ฌ์„ ์ •๋ฆฌํ•˜์—ฌ ์ตœ์ข… ๋ ˆํฌํŠธ ์ƒ์„ฑ

reflexion

๐Ÿ—ฃ๏ธ ํ”„๋กฌํ”„ํŠธ

๐Ÿงฉ Chrome Extension Setup

โš™๏ธ Project Quick Setup

1. Git Clone

$ git clone [email protected]:boostcampaitech7/level4-nlp-finalproject-hackathon-nlp-06-lv3.git
$ cd level4-nlp-finalproject-hackathon-nlp-06-lv3

2. Create Virtual Environment

$ python -m venv .venv
$ source .venv/bin/activate
(.venv) $

3. Install Packages

(.venv) $ pip install -r requirements.txt
(.venv) $ sudo apt-get install build-essential

4. Setup Environment Variables

4.1. .env๋ฅผ ์ƒ์„ฑ ํ›„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

(.venv) $ cp .env.example .env
# AI Service
UPSTAGE_API_KEY=your_upstage_api_key
OPENAI_API_KEY=your_openai_api_key

# Google OAuth 2.0(with GMail)
GOOGLE_CLIENT_ID=1234567890.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=1234567890

4.2. main.py๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ client_secret_...usercontent.com.json ํŒŒ์ผ ์ด๋ฆ„์„ credentials.json์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.

5. Execute the pipeline

(.venv) $ python main.py

(Optional) Execute with DB connection

(.venv) $ docker-compose -f server/docker-compose.yml up -d
(.venv) $ python batch_main.py

๐Ÿ“– Contribution Guide

ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ๋ฒ•

ํ”„๋กœ์ ํŠธ์—์„œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ˜•์‹์„ ํ†ต์ผํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋ฐ‹ ํ…œํ”Œ๋ฆฟ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•˜์„ธ์š”:

$ git config commit.template .gitcommit_template
  • .gitcommit_template ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์žˆ๋Š” ์ปค๋ฐ‹ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • ์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ปค๋ฐ‹ ์‹œ ํ…œํ”Œ๋ฆฟ์ด ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ง‘๋‹ˆ๋‹ค.

๐Ÿ‘ฅ Collaborators

ํŒ€์› ์—ญํ• 
Self-refine ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๊ตฌํ˜„, ์š”์•ฝ ๋ฐ ๋ถ„๋ฅ˜ ํ‰๊ฐ€ ์ง„ํ–‰, ์„œ๋น„์Šค ๊ฐœ๋ฐœ
ํŽ˜๋ฅด์†Œ๋‚˜ ์„ธ๋ถ€ ์„ค์ •, ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์„ฑ ๋ฐ ์ œ์ž‘, ํ‰๊ฐ€ ์ง€ํ‘œ ์„ค๊ณ„
ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„, Reflexion ๊ตฌํ˜„, ์„œ๋น„์Šค ๊ฐœ๋ฐœ, DB ๊ด€๋ฆฌ, ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ
PM, ๊ธฐํš ๋ฐ ๋””์ž์ธ(UI/UX), ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„, ์š”์•ฝ ๋ฐ ๋ถ„๋ฅ˜ ํ‰๊ฐ€ ์ง„ํ–‰
Gmail ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ ๋ฐ Mail Class ๊ตฌํ˜„, ๋ถ„๋ฅ˜ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„
ํŽ˜๋ฅด์†Œ๋‚˜ ์„ค์ •, Reflexion ๊ตฌํ˜„ ๋ฐ ๊ณ ๋„ํ™”, ์ตœ์ข… ์š”์•ฝ G-eval ํ‰๊ฐ€ ๊ณ ๋„ํ™”

๐Ÿ”ฌ References

  • Aman Madaan, Niket Tandon, Prakhar Gupta, Skyler Hallinan, Luyu Gao, Sarah Wiegreffe, Uri Alon, Nouha Dziri, Shrimai Prabhumoye, Yiming Yang, Shashank Gupta, Bodhisattwa Prasad Majumder, Katherine Hermann, Sean Welleck, Amir Yazdanbakhsh, Peter Clark, "Self-Refine: Iterative Refinement with Self-Feedback", 25 May, 2023. https://arxiv.org/abs/2303.17651.
  • Noah Shinn, Federico Cassano, Edward Berman, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao, "Reflexion: Language Agents with Verbal Reinforcement Learning", 10 Oct, 2023. https://arxiv.org/abs/2303.11366.
  • Lianmin Zheng, Wei-Lin Chiang, Ying Sheng, Siyuan Zhuang, Zhanghao Wu, Yonghao Zhuang, Zi Lin, Zhuohan Li, Dacheng Li, Eric P. Xing, Hao Zhang, Joseph E. Gonzalez, Ion Stoica, "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena", 24 Dec, 2023. https://arxiv.org/abs/2306.05685.
  • Yang Liu, Dan Iter, Yichong Xu, Shuohang Wang, Ruochen Xu, Chenguang Zhu, "G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment", 23 May, 2023. https://arxiv.org/abs/2303.16634.
  • Yukyung Lee, Joonghoon Kim, Jaehee Kim, Hyowon Cho, Pilsung Kang, "CheckEval: Robust Evaluation Framework using Large Language Model via Checklist", 27 Mar, 2024. https://arxiv.org/abs/2403.18771.
  • Sergio Rojas-Galeano, "Zero-Shot Spam Email Classification Using Pre-trained Large Language Models", 24 May, 2024. https://arxiv.org/abs/2405.15936.

About

level4-nlp-finalproject-hackathon-nlp-06-lv3 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published