Thanks to visit codestin.com
Credit goes to github.com

Skip to content

wanteddev/onboarding-chatbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ€– Wanted μ˜¨λ³΄λ”© 챗봇

μ›ν‹°λ“œλž© μ‹ κ·œ μž…μ‚¬μžμ˜ 3κ°œμ›” μ˜¨λ³΄λ”© κ²½ν—˜μ„ AI μ±—λ΄‡κ³Όμ˜ λŒ€ν™”λ₯Ό 톡해 μˆ˜μ§‘ν•˜κ³  λΆ„μ„ν•˜λŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. μžμ—°μŠ€λŸ¬μš΄ λŒ€ν™”ν˜• μΈν„°νŽ˜μ΄μŠ€λ‘œ ν”Όλ“œλ°±μ„ λ°›μ•„ 뢄석 리포트λ₯Ό μžλ™ μƒμ„±ν•˜κ³  μ΄λ©”μΌλ‘œ λ°œμ†‘ν•©λ‹ˆλ‹€. ν”Όν”ŒνŒ€μ΄ μ‹ μž… μ‚¬μ›μ˜ μ˜¨λ³΄λ”© κ²½ν—˜μ„ μ²΄κ³„μ μœΌλ‘œ νŒŒμ•…ν•˜κ³  κ°œμ„ μ μ„ λ„μΆœν•˜λŠ” 데 ν™œμš©λ©λ‹ˆλ‹€.


πŸ“‹ λͺ©μ°¨


πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

chatbot-onboarding/
β”œβ”€β”€ main.py                          # Streamlit μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ§„μž…μ 
β”œβ”€β”€ pyproject.toml                   # Python ν”„λ‘œμ νŠΈ μ˜μ‘΄μ„± 관리
β”œβ”€β”€ Makefile                         # ν”„λ‘œμ νŠΈ μ‹€ν–‰ λͺ…λ Ήμ–΄ λͺ¨μŒ
β”œβ”€β”€ .env                             # ν™˜κ²½λ³€μˆ˜ (API ν‚€, 이메일 μ„€μ •)
β”œβ”€β”€ .env.example                     # ν™˜κ²½λ³€μˆ˜ μ˜ˆμ‹œ 파일
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app.py                       # 챗봇 핡심 둜직 (OnboardingChatbot 클래슀)
β”‚   β”œβ”€β”€ config.py                    # μ„€μ • 파일 λ‘œλ”
β”‚   β”œβ”€β”€ report_generator.py          # 뢄석 리포트 HTML 생성
β”‚   β”œβ”€β”€ conversation_exporter.py     # λŒ€ν™” λ‚΄μ—­ HTML 생성
β”‚   β”œβ”€β”€ email_sender.py              # 리포트 생성 및 이메일 λ°œμ†‘ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
β”‚   β”‚
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”œβ”€β”€ intro_page.py            # μ‹œμž‘ νŽ˜μ΄μ§€ (이름/이메일 μž…λ ₯)
β”‚   β”‚   └── chat_page.py             # μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€ νŽ˜μ΄μ§€
β”‚   β”‚
β”‚   └── utils/
β”‚       β”œβ”€β”€ email_service.py         # SMTP 이메일 λ°œμ†‘ μ„œλΉ„μŠ€
β”‚       β”œβ”€β”€ emotion.py               # 감정 뢄석 (GPT-4 기반)
β”‚       └── logger.py                # λ‘œκΉ… μ„€μ •
β”‚
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ questions.json               # μ„€λ¬Έ 질문 μ •μ˜ (11개 질문)
β”‚   β”œβ”€β”€ llm_config.json              # LLM λͺ¨λΈ μ„€μ • (GPT-4o)
β”‚   β”œβ”€β”€ system_prompt.md             # 챗봇 페λ₯΄μ†Œλ‚˜ 및 λŒ€ν™” κ·œμΉ™
β”‚   └── report_analysis_prompt.md    # 리포트 뢄석 ν”„λ‘¬ν”„νŠΈ
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ reports/                     # μƒμ„±λœ HTML 리포트 μ €μž₯μ†Œ
β”‚   └── responses/                   # μ‚¬μš©μž 응닡 JSON μ €μž₯μ†Œ
β”‚
└── assets/
    └── images/                      # Wanted 둜고 및 이미지

μ£Όμš” 파일 μ„€λͺ…

파일 μ—­ν• 
src/app.py 챗봇 λŒ€ν™” 흐름 관리, 질문 μˆœμ„œ μ œμ–΄, 응닡 검증
src/report_generator.py GPT-4둜 λŒ€ν™” 뢄석 ν›„ HTML 리포트 생성
src/email_sender.py 리포트/λŒ€ν™” HTML 생성 β†’ 이메일 λ°œμ†‘ 톡합 관리
src/utils/email_service.py Gmail SMTPλ₯Ό ν†΅ν•œ 이메일 전솑
config/system_prompt.md μ±—λ΄‡μ˜ 성격, λŒ€ν™” μŠ€νƒ€μΌ, 질문 방식 μ •μ˜
config/report_analysis_prompt.md 리포트 뢄석 κΈ°μ€€ 및 ν˜•μ‹ μ •μ˜

πŸ›  μ£Όμš” 라이브러리

핡심 μ˜μ‘΄μ„±

라이브러리 버전 μš©λ„
langchain >=0.1.0 LLM μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ ν”„λ ˆμž„μ›Œν¬
langchain-openai >=0.1.0 OpenAI GPT-4 톡합 (ChatOpenAI 클래슀)
streamlit >=1.28.0 μ›Ή 기반 λŒ€ν™”ν˜• UI ν”„λ ˆμž„μ›Œν¬
python-dotenv >=1.0.0 ν™˜κ²½λ³€μˆ˜ 관리 (.env 파일)
pydantic >=2.0.0 LangChain λ‚΄λΆ€ 데이터 κ²€μ¦μš© (μ˜μ‘΄μ„±)
markdown >=3.5.0 λ§ˆν¬λ‹€μš΄ ν…μŠ€νŠΈ 처리

개발 도ꡬ

도ꡬ μš©λ„
black μ½”λ“œ μžλ™ ν¬λ§·νŒ…
ruff λ¦°νŒ… 및 μ½”λ“œ μŠ€νƒ€μΌ 검사

βš™οΈ ν™˜κ²½ μ„€μ •

1. ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

  • Python 3.11 이상
  • UV νŒ¨ν‚€μ§€ λ§€λ‹ˆμ € (ꢌμž₯)
  • OpenAI API ν‚€ (GPT-4o μ ‘κ·Ό κΆŒν•œ)
  • Gmail 계정 (이메일 λ°œμ†‘μš©)

2. UV μ„€μΉ˜ (macOS/Linux)

curl -LsSf https://astral.sh/uv/install.sh | sh

3. ν”„λ‘œμ νŠΈ 클둠 및 μ˜μ‘΄μ„± μ„€μΉ˜

# ν”„λ‘œμ νŠΈ 클둠
git clone <repository-url>
cd chatbot-onboarding

# μ˜μ‘΄μ„± μ„€μΉ˜
make install
# λ˜λŠ”
uv sync

4. ν™˜κ²½λ³€μˆ˜ μ„€μ •

# .env.example을 λ³΅μ‚¬ν•˜μ—¬ .env 파일 생성
cp .env.example .env

.env 파일 μ˜ˆμ‹œ:

# OpenAI API Configuration
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxx    # μ‹€μ œ OpenAI API ν‚€ μž…λ ₯
OPENAI_MODEL=gpt-4o

# Application Settings
DEBUG=false
LOG_LEVEL=INFO

# Email Configuration
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=true
EMAIL_SENDER=[email protected]     # λ°œμ†‘μž Gmail μ£Όμ†Œ
EMAIL_PASSWORD=abcd1234efgh5678         # Gmail μ•± λΉ„λ°€λ²ˆν˜Έ (16자리)
EMAIL_RECIPIENTS=[email protected],[email protected]  # μˆ˜μ‹ μž (μ‰Όν‘œ ꡬ뢄)

πŸš€ μ‹€ν–‰ 방법

κΈ°λ³Έ μ‹€ν–‰

make run
# λ˜λŠ”
uv run streamlit run main.py

개발 λͺ¨λ“œ μ‹€ν–‰ (디버그 둜그 포함)

make dev
# λ˜λŠ”
uv run streamlit run main.py --logger.level=debug

기타 λͺ…λ Ήμ–΄

make help       # μ‚¬μš© κ°€λŠ₯ν•œ λͺ…λ Ήμ–΄ 확인
make clean      # μΊμ‹œ 및 μž„μ‹œ 파일 정리
make lint       # μ½”λ“œ μŠ€νƒ€μΌ 검사
make format     # μ½”λ“œ μžλ™ ν¬λ§·νŒ…

πŸ”§ μ‚¬μš©μž μ„€μ • κ°€μ΄λ“œ

1. OpenAI API ν‚€ μ„€μ •

API ν‚€ λ°œκΈ‰:

  1. OpenAI Platform 접속
  2. API Keys λ©”λ‰΄μ—μ„œ μƒˆ ν‚€ 생성
  3. μƒμ„±λœ ν‚€λ₯Ό .env 파일의 OPENAI_API_KEY에 μž…λ ₯

μ£Όμ˜μ‚¬ν•­:

  • API ν‚€λŠ” μ ˆλŒ€ μ½”λ“œμ— ν•˜λ“œμ½”λ”©ν•˜μ§€ μ•ŠκΈ°
  • .env νŒŒμΌμ€ .gitignore에 ν¬ν•¨λ˜μ–΄ μžˆμ–΄ Git에 μ—…λ‘œλ“œλ˜μ§€ μ•ŠμŒ
  • GPT-4o λͺ¨λΈ μ ‘κ·Ό κΆŒν•œ ν•„μš”

2. 챗봇 μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ μˆ˜μ •

파일 μœ„μΉ˜: config/system_prompt.md

μ±—λ΄‡μ˜ 성격, λŒ€ν™” μŠ€νƒ€μΌ, 질문 방식을 μ •μ˜ν•©λ‹ˆλ‹€.

μˆ˜μ • κ°€λŠ₯ν•œ ν•­λͺ©:

  • 챗봇 페λ₯΄μ†Œλ‚˜ (μΉœκ·Όν•¨, μ „λ¬Έμ„± μˆ˜μ€€)
  • κΈˆμ§€ 행동 (κ°œμΈμ •λ³΄ μˆ˜μ§‘, λΆ€μ μ ˆν•œ 주제)
  • λŒ€ν™” κ·œμΉ™ (질문 μˆœμ„œ, 재질문 쑰건)
  • 마무리 멘트

μ˜ˆμ‹œ:

## μ—­ν•  (Role)
당신은 μ›ν‹°λ“œλž© ν”Όν”ŒνŒ€ μ†Œμ†μ˜ μΉœκ·Όν•˜κ³  λ”°λœ»ν•œ AI μ±—λ΄‡μž…λ‹ˆλ‹€.
μ‹ κ·œ μž…μ‚¬μžμ˜ 3κ°œμ›” μ˜¨λ³΄λ”© κ²½ν—˜μ— λŒ€ν•΄ μžμ—°μŠ€λŸ½κ²Œ λŒ€ν™”ν•˜λ©° ν”Όλ“œλ°±μ„ μˆ˜μ§‘ν•©λ‹ˆλ‹€.
...

3. 리포트 뢄석 ν”„λ‘¬ν”„νŠΈ μˆ˜μ •

파일 μœ„μΉ˜: config/report_analysis_prompt.md

GPT-4κ°€ λŒ€ν™” λ‚΄μš©μ„ λΆ„μ„ν•˜μ—¬ 리포트λ₯Ό 생성할 λ•Œ μ‚¬μš©ν•˜λŠ” μ§€μΉ¨μž…λ‹ˆλ‹€.

μˆ˜μ • κ°€λŠ₯ν•œ ν•­λͺ©:

  • 뢄석 κΈ°μ€€ (점수 λΆ€μ—¬ 둜직)
  • 리포트 μ„Ήμ…˜ ꡬ성
  • 평가 ν•­λͺ© (업무 적합도, 쑰직문화 적응도 λ“±)
  • λ§ˆν¬λ‹€μš΄ ν˜•μ‹ κ·œμΉ™

μ˜ˆμ‹œ:

## μ€‘μš” 원칙
1. **의미 μ—†λŠ” λ‹΅λ³€**이 λ§Žμ€ 경우 β†’ 각 ν•­λͺ© **20-40점 λ²”μœ„**
2. **ꡬ체적 사둀 없이 일반적 ν‘œν˜„**만 μ‚¬μš©ν•œ 경우 β†’ **40-55점 λ²”μœ„**
3. **ꡬ체적 사둀 1-2개 + 긍정적 νƒœλ„** β†’ **55-70점 λ²”μœ„**
...

4. μ„€λ¬Έ 질문 μˆ˜μ •

파일 μœ„μΉ˜: config/questions.json

챗봇이 μˆœμ„œλŒ€λ‘œ μ§ˆλ¬Έν•  λ‚΄μš©μ„ μ •μ˜ν•©λ‹ˆλ‹€.

JSON ꡬ쑰:

{
  "survey_questions": [
    {
      "id": 1,
      "question": "μ§€λ‚œ 3κ°œμ›” κ°„μ˜ μ›ν‹°λ“œ μƒν™œμ„ λŒμ•„λ΄€μ„ λ•Œ, κ°€μž₯ λ¨Όμ € λ– μ˜€λ₯΄λŠ” λ‹¨μ–΄λ‚˜ ν‘œν˜„μ„ 자유둭게 말해 μ£Όμ„Έμš”."
    },
    {
      "id": 2,
      "question": "μž…μ‚¬ ν›„ 3κ°œμ›”μ˜ μ˜¨λ³΄λ”© κΈ°κ°„λ™μ•ˆ κ°€μž₯ 기얡에 λ‚¨λŠ” κ²½ν—˜μ΄λ‚˜ μ—ν”Όμ†Œλ“œλ₯Ό λ“€λ €μ£Όμ„Έμš”."
    },
    {
      "id": 11,
      "question": "μ „μ²΄μ μœΌλ‘œ ν”Όν”ŒνŒ€ μ£Όκ΄€ μ˜¨λ³΄λ”© ν”„λ‘œκ·Έλž¨μ˜ λ§Œμ‘±λ„λ₯Ό μ•Œλ €μ£Όμ„Έμš”. (1~10점)",
      "scale": {
        "min": 1,
        "max": 10,
        "labels": ["맀우 뢈만쑱", "뢈만쑱", "보톡", "만쑱", "맀우 만쑱"]
      }
    }
  ]
}

μ£Όμ˜μ‚¬ν•­:

  • idλŠ” 1λΆ€ν„° 순차적으둜 증가
  • 점수 기반 μ§ˆλ¬Έμ—λŠ” scale 객체 μΆ”κ°€ κ°€λŠ₯ (min, max, labels)
  • 질문 개수 λ³€κ²½ μ‹œ src/app.py의 meaningful_answers_count λ‘œμ§λ„ 확인 ν•„μš”

문의: [email protected]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published