์๋ ํ์ธ์! ์์ด๋ธ ์ค์ฟจ ๊ธฐ์๋จ์ ๋๋ค!
์ง๋ 3์ฐจ ๋ฏธํ ์๊ฐ์๋ ๊น๋๋ฆฌ๋ฅผ ์ํ ๊ฐ์ธ ๋น์ ์ฑ๋ด์ ๊ตฌ์ถํ๋ ์๊ฐ์ ๊ฐ์ก๋๋ฐ์, ๋ณด์ ์ ์์ฑํ ์ ์๋ ๋ถ๋ถ๋ค์ ์ ์ธํ๊ณ ํ๋ฒ ๋ธ๋ก๊ทธ์ ํ๊ณ ํ๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค.
1. ํ๋ก์ ํธ ๊ฐ์
์ด๋ฒ ๋ฏธ๋ํ๋ก์ ํธ 3์ฐจ์์๋ ํ์ ๋ด์ฉ์ ๋ถ์ํ๊ณ , ์
๋ฌด ์ง์์ฌํญ์ ์ ๋ฆฌํด์ฃผ๋ AI ๊ฐ์ธ๋น์ ์๋น์ค๋ฅผ ๊ตฌํํ๋ค.
์๋น์ค ์ด๋ฆ์ ‘์์ด๋ธ(AIBLE)’๋ก, ํ์๋ก์ ๋จ์ํ ์์ฝํ๋ ์์ค์ ๋์ด ์ฌ์ฉ์์ ์
๋ฌด ํ๋ฆ์ ๋์์ฃผ๋ ํ์ ๋ถ์ ์ด์์คํดํธ๋ฅผ ๋ชฉํ๋ก ํ๋ค. ํ๋ก์ ํธ ์ฃผ์ ๋ ์์ธํ๋ ๋งํ์ง ๋ชปํ์ง๋ง ๊ฐ๋จํ๊ฒ๋ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์๋ก๊ณผ ํ์ ๋ด์ฉ์ ๋ถ์ํ๊ณ , ์ต์ ์๊ตฌ ๊ธฐ๋ฅ+ํ์ด ์ํ๋ ๊ธฐ๋ฅ์ ์ง์ํ๋ AI ๊ฐ์ธ๋น์ ๊ตฌ์ถ
์ค์ ์ ๋ฌด ํ๊ฒฝ์์๋ ํ์ ๋ด์ฉ์ด ๊ธธ์ด์ง์๋ก ์ค์ํ ๊ฒฐ์ ์ฌํญ์ด๋ ๋ด๋น ์ ๋ฌด๋ฅผ ๋์น๊ธฐ ์ฝ๋ค. ํนํ ํ์์ ์ฐธ์ํ์ง ๋ชปํ ์ฌ๋์ด ๋์ค์ ๋ด์ฉ์ ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ ์ฒด ํ์๋ก์ ์ฝ๊ณ ํต์ฌ ์ ๋ฌด๋ฅผ ํ์ ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ํ์ํ๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์๋ก ๋ถ์, ์ ๋ฌด ์ง์์ฌํญ ์ถ์ถ, ๋ฏผ๊ฐ์ ๋ณด ๊ฐ์ง, ํ์ ๊ธฐ๋ฐ ์ง์์๋ต, ์ด๋ฉ์ผ ๋ฐ์ก, ๊ฒฐ๊ณผ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ ํ๋์ Streamlit ์๋น์ค๋ก ๊ตฌํํ๋ค.
2. ๋ฌธ์ ์ธ์
ํ์ ์
๋ฌด์์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ ๋ณด๊ฐ ๋ง๋ค๋ ์ ์ด๋ค.
ํ์๋ก์๋ ์ฌ๋ฌ ์ฌ๋์ ๋ฐ์ธ, ๊ฒฐ์ ์ฌํญ, ๋
ผ์ ๋ฐฐ๊ฒฝ, ์ผ์ , ๋ด๋น ์
๋ฌด๊ฐ ์์ฌ ์๋ค. ์ด ์ค ์ค์ ๋ก ์ฌ์ฉ์๊ฐ ํ์ธํด์ผ ํ๋ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฒซ์งธ, ํ์์์ ๋ฌด์์ด ๊ฒฐ์ ๋์๋์ง
๋์งธ, ๋๊ฐ ์ด๋ค ์
๋ฌด๋ฅผ ๋งก์๋์ง
์
์งธ, ์
๋ฌด ๊ธฐํ๊ณผ ์ฐ์ ์์๋ ๋ฌด์์ธ์ง
๋ท์งธ, ๊ณต์ ์ ์ ๋ฏผ๊ฐ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ง๋ ์์์ง
๋ค์ฏ์งธ, ํ์์ ์ฐธ์ํ์ง ๋ชปํ ์ฌ๋์ด ๋น ๋ฅด๊ฒ ๋ด์ฉ์ ์ดํดํ ์ ์๋์ง
๋ฐ๋ผ์ ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋จ์ ์์ฝ์ด ์๋๋ผ ์ ๋ฌด ์คํ์ผ๋ก ์ด์ด์ง ์ ์๋ ํ์ ๋ถ์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
3. ์๋น์ค ๋ชฉํ
์ด๋ฒ ํ๋ก์ ํธ์ ํต์ฌ ๋ชฉํ๋ AI๊ฐ ํ์ ๋ด์ฉ์ ์ดํดํ๊ณ , ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์ ๋ฌด์ ํ์ฉํ ์ ์๋ ํํ๋ก ์ ๋ฆฌํด์ฃผ๋ ๊ฒ์ด์๋ค.
๊ตฌํ ๋ชฉํ๋ ํฌ๊ฒ ๋ค ๊ฐ์ง์๋ค.
- ํ์๋ก ๋ถ์ ๋ฐ ์์ฝ
ํ์ ์ ๋ชฉ, ๋ชฉ์ , ์ฃผ์ ์๊ฑด, ๊ฒฐ์ ์ฌํญ, ์ ์ฒด ์์ฝ์ ์๋์ผ๋ก ์ ๋ฆฌํ๋ค. - ๋ด๋น ์
๋ฌด ๋ฐ ์ฐ์ ์์ ์ถ์ถ
ํ์ ๋ด์ฉ์์ ๋ด๋น์๋ณ ์ ๋ฌด๋ฅผ ์ถ์ถํ๊ณ , ์ ๋ฌด์ ์ฐ์ ์์๋ฅผ ๋์·๋ณดํต·๋ฎ์์ผ๋ก ๋ถ๋ฅํ๋ค. - ๋ฏผ๊ฐ์ ๋ณด ๊ฐ์ง ๋ฐ ๋ณด์ ๊ฒฝ๊ณ
๊ฐ์ธ์ ๋ณด, ์ ํ๋ฒํธ, ์ฃผ๋ฏผ๋ฒํธ, ๊ธ์ฌ·์ธ์ฌ ์ ๋ณด, ๋์ธ๋น ํํ ๋ฑ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ค. - ์
๋ฌด ํ์ ์ฒ๋ฆฌ ์ง์
ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ฆฌ๋ง์ธ๋ ๋ฉ์ผ์ ์์ฑํ๊ณ , ํ์ ์์ฝ ๊ฒฐ๊ณผ๋ฅผ TXT ํ์ผ๋ก ๋ค์ด๋ก๋ํ ์ ์๋๋ก ํ๋ค.
4. ๊ตฌํํ ์๋น์ค: Meeting AI ํ์ ๋ถ์ ์ด์์คํดํธ
์ต์ข
์๋น์ค๋ Streamlit ๊ธฐ๋ฐ ์น ์ธํฐํ์ด์ค๋ก ๊ตฌํํ๋ค.
์ฌ์ฉ์๋ ํ์๋ก ํ
์คํธ ํ์ผ์ ์
๋ก๋ํ๊ฑฐ๋, ์์ฑ ํ์ผ์ ์
๋ก๋ํ๊ฑฐ๋, ์ง์ ํ
์คํธ๋ฅผ ์
๋ ฅํ ์ ์๋ค.
์๋น์ค ํ๋ฉด์ KT Enterprise์ ์
๋ฌด์ฉ ์๋น์ค ๋๋์ ์ด๋ฆฌ๊ธฐ ์ํด KT ๋ก๊ณ ์ปฌ๋ฌ์ ๋น์ฆ๋์ค์ฉ UI ์คํ์ผ์ ์ ์ฉํ๋ค.
๋ํ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฒฐ๊ณผ ํ๋ฉด์ ํญ ๊ตฌ์กฐ๋ก ๋๋์๋ค.
์ต์ข ์ ์ผ๋ก ๊ตฌ์ฑํ ํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
| ํ์ ์์ฝ | ํ์ ์ ๋ชฉ, ๋ชฉ์ , ๊ฒฐ์ ์ฌํญ, ์ฃผ์ ์๊ฑด, ์ ์ฒด ์์ฝ ์ถ๋ ฅ |
| ํ ์ผ & ์ฐ์ ์์ | ๋ด๋น์๋ณ ์ ๋ฌด, ๊ธฐํ, ์ฐ์ ์์ ์ ๋ฆฌ |
| ์๋ฌธ ๋ณด๊ธฐ | ํต์ฌ ํค์๋์ ํ์ ์๋ฌธ ํ์ธ |
| ๋ฉ์ผ ๋ฐ์ก | ํ์ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ ๋ฆฌ๋ง์ธ๋ ๋ฉ์ผ ์ด์ ์์ฑ ๋ฐ ๋ฐ์ก |
| ์ง์์๋ต | ํ์ ์๋ฌธ์ ๋ฐํ์ผ๋ก GPT์ ๋ฉํฐํด ๋ํ |
| ๋ค์ด๋ก๋ | ํ์ ์์ฝ, ํ ์ผ, ์๋ฌธ์ TXT ํ์ผ๋ก ์ ์ฅ |
5. ์ฃผ์ ๊ธฐ๋ฅ ์ ๋ฆฌ
5-1. ํ์ ๋ด์ฉ ๋ถ์
ํ์๋ก์ ์
๋ ฅํ๋ฉด GPT ๋ชจ๋ธ์ด ํ์ ๋ด์ฉ์ JSON ํ์์ผ๋ก ๋ถ์ํ๋ค.
๋ถ์ ๊ฒฐ๊ณผ์๋ ํ์ ์ ๋ชฉ, ๋ชฉ์ , ๊ฒฐ์ ์ฌํญ, ๋ด๋น ์
๋ฌด, ์ฃผ์ ์๊ฑด, ์ ์ฒด ์์ฝ, ํค์๋๊ฐ ํฌํจ๋๋ค.
์ฝ๋์์๋ analyze_meeting() ํจ์๋ฅผ ํตํด ํ์ ๋ด์ฉ์ ๋ถ์ํ๋ค.
def analyze_meeting(text):
today = datetime.now().strftime("%Y๋
%m์ %d์ผ")
prompt = f"""
๋ค์์ ์ค๋({today}) ์งํ๋ ํ์ ๋ด์ฉ์
๋๋ค. ์๋ JSON ํ์์ผ๋ก ๋ถ์ํ์ธ์. ๋ฐ๋์ JSON๋ง ์ถ๋ ฅํ์ธ์.
ํ์ ๋ด์ฉ:
{text}
{{
"meeting_title": "ํ์ ์ ๋ชฉ",
"purpose": "ํ์ ๋ชฉ์ ",
"decisions": ["๊ฒฐ์ ์ฌํญ ๋ฆฌ์คํธ"],
"tasks": [
{{"person":"๋ด๋น์","task":"์
๋ฌด ๋ด์ฉ","deadline":"๊ธฐํ","priority":"high|medium|low"}}
],
"agenda_items": ["์๊ฑด ๋ฆฌ์คํธ"],
"summary": "์ ์ฒด ์์ฝ",
"keywords": ["ํค์๋1", "ํค์๋2"]
}}
"""
์ด ๋ถ๋ถ์์ ์ค์ํ ์ ์ ๋ชจ๋ธ์ด ์์ ๋กญ๊ฒ ๋ฌธ์ฅ์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ์๋น์ค์์ ๋ฐ๋ก ํ์ฉํ ์ ์๋๋ก ์ ํด์ง JSON ๊ตฌ์กฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ์ค๊ณํ๋ค๋ ์ ์ด๋ค.
์ด๋ฅผ ํตํด ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ ์์ฝ ํญ, ํ ์ผ ํญ, ์ด๋ฉ์ผ ์์ฑ, ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉํ ์ ์์๋ค.
5-2. ๋ด๋น ์ ๋ฌด ๋ฐ ์ฐ์ ์์ ์ถ์ถ
ํ์๋ก์์ ๋ด๋น์๋ณ ์
๋ฌด๋ฅผ ์ถ์ถํ๊ณ , ์
๋ฌด์ ์ค์๋๋ฅผ high, medium, low๋ก ๋ถ๋ฅํ๋ค.
์ฌ์ฉ์ ํ๋ฉด์์๋ ์ด๋ฅผ ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํ์ํ๋ค.
PRIORITY_LABEL = {
"high": "๐ด ๋์",
"medium": "๐ก ๋ณดํต",
"low": "๐ข ๋ฎ์"
}
์ด ๊ธฐ๋ฅ์ ํตํด ์ฌ์ฉ์๋ ํ์๋ก ์ ์ฒด๋ฅผ ๋ค์ ์ฝ์ง ์์๋ ๋๊ฐ ์ด๋ค ์ ๋ฌด๋ฅผ ํด์ผ ํ๋์ง, ์ด๋ค ์ผ์ ๋จผ์ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์๋ค.
ํนํ ํ์์ ์ฐธ์ํ์ง ๋ชปํ ์ฌ๋๋ ํ์ ์ดํ ์์ ์ ์ ๋ฌด๋ฅผ ๋ฐ๋ก ํ์ ํ ์ ์๋ค๋ ์ ์์ ์ค๋ฌด ํ์ฉ์ฑ์ด ๋๋ค๊ณ ๋๊ผ๋ค.
5-3. ํ์ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ ์ด๋ฉ์ผ ์์ฑ ๋ฐ ๋ฐ์ก
ํ์๊ฐ ๋๋ ํ์๋ ํ์ ๋ด์ฉ์ ์ฐธ์์๋ ๋ถ์ฐธ์์๊ฒ ๊ณต์ ํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ํ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ฆฌ๋ง์ธ๋ ์ด๋ฉ์ผ ์ด์ ์์ฑ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
์ด๋ฉ์ผ ์์ฑ์๋ gpt-4o-mini๋ฅผ ์ฌ์ฉํ๊ณ , ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ํ๋กฌํํธ์ ํฌํจํ๋ค.
- ์ ์คํ๊ณ ์ ๋ฌธ์ ์ธ ์ด์กฐ๋ก ์์ฑ
- ์ฒซ ๋ฌธ์ฅ์ “KT Enterprise IT๊ธฐ์ ํ์ ํ DX Consulting AI ๋น์ AIBLE์ ๋๋ค.”๋ก ์์
- ๋ง์ง๋ง ์๋ช ์ “AIBLE ๋๋ฆผ”์ผ๋ก ์ข ๋ฃ
- ์ง์ ๊ฐ์ธ ์๋ช ์ ํฌํจํ์ง ์์
๋ํ SendGrid API๋ฅผ ํ์ฉํด ์ค์ ์ด๋ฉ์ผ ๋ฐ์ก ๊ธฐ๋ฅ๋ ์ฐ๊ฒฐํ๋ค.
def send_email(to, subject, body):
api_key = os.getenv("SENDGRID_API_KEY", "")
sender = os.getenv("EMAIL_ADDRESS", "")
resp = requests.post(
"https://api.sendgrid.com/v3/mail/send",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"personalizations": [
{
"to": [{"email": to}],
"subject": subject
}
],
"from": {"email": sender},
"content": [
{
"type": "text/plain",
"value": body
}
],
},
)
return resp.status_code == 202
์ด ๊ธฐ๋ฅ์ ํตํด ํ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๋จ์ํ ํ๋ฉด์ ์ถ๋ ฅ๋๋ ๊ฒ์์ ๋๋์ง ์๊ณ , ์ค์ ์ ๋ฌด ์ปค๋ฎค๋์ผ์ด์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์๋๋ก ํ๋ค.
5-4. ํ์ ๋ด์ฉ ๊ธฐ๋ฐ ์ง์์๋ต
ํ์๋ก์ ๋ถ์ํ ์ดํ์๋ ์ฌ์ฉ์๋ ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด ์๊ธธ ์ ์๋ค.
์๋ฅผ ๋ค์ด “๊น๋๋ฆฌ์ ์ฃผ์ ์
๋ฌด๊ฐ ๋ญ์ผ?”, “๊ฐ์ฅ ๊ธํ ์ผ์ ์ด ๋ญ์ผ?”, “ํ์์์ ๊ฒฐ์ ๋ ์ฌํญ๋ง ๋ค์ ์๋ ค์ค”์ ๊ฐ์ ์ง๋ฌธ์ ํ ์ ์๋ค.
์ด๋ฅผ ์ํด ํ์ ์๋ฌธ์ ์์คํ ํ๋กฌํํธ์ ํฌํจํ๊ณ , ์ฌ์ฉ์๊ฐ ์ง๋ฌธํ๋ฉด ํ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๋ต๋ณํ๋ ์ฑ๋ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
full_messages = [
{
"role": "system",
"content": f"{sys_role_chat}\n\n[ํ์ ์๋ฌธ]\n{st.session_state.transcript}"
}
]
full_messages.extend(st.session_state.messages)
๋ํ st.session_state.messages๋ฅผ ํ์ฉํด ๋ํ ๊ธฐ๋ก์ ์ ์ฅํ๊ณ , ์ต๊ทผ 10๊ฐ์ ๋ํ๋ฅผ ๊ธฐ์ตํ๋๋ก ๊ตฌ์ฑํ๋ค.
์ด ๋ถ๋ถ์ ํตํด ๋จ๋ฐ์ฑ ์ง์์๋ต์ด ์๋๋ผ ํ์ ๊ธฐ๋ฐ ๋ฉํฐํด ๋ํ๊ฐ ๊ฐ๋ฅํด์ก๋ค.
5-5. TXT ๋ค์ด๋ก๋ ๊ธฐ๋ฅ
ํ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์๊ฐ ๋ค์ ๋ณด๊ดํ๊ฑฐ๋ ๊ณต์ ํ ์ ์๋๋ก TXT ๋ค์ด๋ก๋ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ๋ค.
๋ค์ด๋ก๋ ํ์ผ์๋ ๋ค์ ๋ด์ฉ์ด ํฌํจ๋๋ค.
- ํ์ ์ ๋ชฉ
- ํ์ ๋ชฉ์
- ๊ฒฐ์ ์ฌํญ
- ์ฃผ์ ์๊ฑด
- ์ ์ฒด ์์ฝ
- ๋ด๋น ์ ๋ฌด ๋ฐ ์ฐ์ ์์
- ํต์ฌ ํค์๋
- ํ์ ์๋ฌธ
์ฒ์์๋ ํ๋ฉด์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ๋ง ๊ณ ๋ คํ์ง๋ง, ์ค์ ์
๋ฌด์์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ๋ฌํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จํ๋ค.
๊ทธ๋์ st.download_button()์ ํ์ฉํด ํ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ์ ์ฅํ ์ ์๋๋ก ๊ฐ์ ํ๋ค.
6. ์ฌ์ฉํ ๊ธฐ์ ์คํ
์ด๋ฒ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ฃผ์ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
| UI ๊ตฌํ | Streamlit |
| LLM | GPT-4o, GPT-4o-mini |
| ์์ฑ ์ธ์ | Whisper-1 |
| ์ด๋ฉ์ผ ๋ฐ์ก | SendGrid API |
| ๋ฐฐํฌ | Hugging Face Spaces |
| ์คํ์ผ๋ง | Custom CSS |
| ์ํ ๊ด๋ฆฌ | Streamlit session_state |
| ๋ฐ์ดํฐ ์ฒ๋ฆฌ | JSON, ์ ๊ทํํ์, Python |
์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋จ์ํ LLM์ ํธ์ถํ๋ ๊ฒ๋ณด๋ค, LLM ๊ฒฐ๊ณผ๋ฅผ ์๋น์ค ๊ธฐ๋ฅ๊ณผ ์ฐ๊ฒฐํ๋ ํ๋ฆ์ด ์ค์ํ๋ค.
ํนํ JSON ๊ตฌ์กฐํ, ์ธ์
์ํ ๊ด๋ฆฌ, ํญ ๊ธฐ๋ฐ UI ๊ตฌ์ฑ, ๋ฉ์ผ ๋ฐ์ก API ์ฐ๋ ๋ฑ์ด ํต์ฌ ๊ตฌํ ํฌ์ธํธ์๋ค.
7. ํ๋ก์ ํธ ์๋๋ฆฌ์ค
๋ฐํ์์๋ AB์นด๋ DX ์ ๋ต ์๋ฆฝ ๋ฏธํ ์ ์์ ์๋๋ฆฌ์ค๋ก ์ฌ์ฉํ๋ค. (ํฉ์ฑ ์๋๋ฆฌ์ค ๋ง๋ค๋ ์ธํด ๊ฒฝ๋ ฅ์ด ์ฌ๊ธฐ์....)
ํ์ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- ํ์๋ช : AB์นด๋ DX ์ ๋ต ์๋ฆฝ ๋ฏธํ
- ์ผ์: 2026๋ 4์ 30์ผ ์ค์ 10์
- ์ฅ์: ์ 2ํ์์ค
- ์ฐธ์์: ํ์ฅ, ์ฅ๊ณผ์ฅ, ๋ฐ์ฌ์
- ๊น๋๋ฆฌ: WIS ํ์ฅ ์ง์์ผ๋ก ํ์ ๋ถ์ฐธ
- ์์ด๋ธ: ๊น๋๋ฆฌ๋ฅผ ๋์ ํด ํ์ ๋ด์ฉ์ ๊ธฐ๋กํ๊ณ ์์ฝ
ํ์ ์ฃผ์ ๋ AB์นด๋์ ๋์งํธ ์ ํ ์ ๋ต ์๋ฆฝ์ด์๋ค.
๋ง์ผํ
๋ฐ์ดํฐ, ๊ณ ๊ฐ๊ด๋ฆฌ ๋ฐ์ดํฐ, ๊ฒฐ์ ์น์ธ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋์ด ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ฐ์ดํฐ ๋ ์ดํฌ์ ์จ์ดํ์ฐ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก AI ๋ถ์ ํ๊ฒฝ์ ๊ณ ๋ํํ๋ ๋ฐฉํฅ์ ๋
ผ์ํ๋ค.
์ด ์๋๋ฆฌ์ค๋ฅผ ํตํด ์์ด๋ธ์ด ๋จ์ ์์ฝ ๋๊ตฌ๊ฐ ์๋๋ผ, ํ์์ ์ฐธ์ํ์ง ๋ชปํ ์ฌ๋์ ๋์ ํด ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ํ์ ์ ๋ฌด๊น์ง ๋์์ฃผ๋ AI ๊ฐ์ธ๋น์๋ผ๋ ์ ์ ๋ณด์ฌ์ฃผ๊ณ ์ ํ๋ค.
8. ์ฐ๋ฆฌ ์กฐ๋ง์ ์ฐจ๋ณ์
๋ถ์ ๊ฒฐ๊ณผ๋ฅผ TXT ํ์ผ๋ก ๋ค์ด๋ก๋ํ ์ ์๋ค.
ํ์ ์์ฝ, ๋ด๋น ์
๋ฌด, ์๋ฌธ์ ํ์ผ๋ก ์ ์ฅํ ์ ์์ด ํ์ ๊ฒฐ๊ณผ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํ๋ค. ๋จ์ํ ํ๋ฉด์์ ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์ํ์ ๊ณต์ ๊น์ง ๊ณ ๋ คํ๋ค.
๋ด๋น ์
๋ฌด์ ์ฐ์ ์์๋ฅผ ์๋์ผ๋ก ์ถ์ถํ๋ค.
ํ์ ๋ด์ฉ์ ์ฌ๋์ด ์ง์ ์ ๋ฆฌํ์ง ์์๋ ๋ด๋น์๋ณ ์
๋ฌด์ ์ค์๋๋ฅผ ์๋์ผ๋ก ๋ถ๋ฅํด์ค๋ค. ์ด๋ฅผ ํตํด ์
๋ฌด ๋๋ฝ์ ์ค์ด๊ณ , ํ์ ์กฐ์น์ ์๋๋ฅผ ๋์ผ ์ ์๋ค.
9. ๊ตฌํํ๋ฉด์ ์ด๋ ค์ ๋ ์
์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ์ ๊ฒฝ ์ด ๋ถ๋ถ์ LLM ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์๋น์ค์์ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ด์๋ค.
LLM์ ์์ฐ์ด ๋ต๋ณ์๋ ๊ฐํ์ง๋ง, ์๋น์ค ๋ด๋ถ์์๋ ์ ํด์ง ํ์์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค.
๋ฐ๋ผ์ ํ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋์ JSON์ผ๋ก ์ถ๋ ฅํ๋๋ก ํ๋กฌํํธ๋ฅผ ์ค๊ณํ๊ณ , ์ดํ json.loads()๋ฅผ ํตํด Python ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
๋ ํ๋์ ์ด๋ ค์์ Streamlit์ session_state ๊ด๋ฆฌ์๋ค.
ํ์ ๋ถ์ ๊ฒฐ๊ณผ, ์๋ฌธ, ์ฑํ
๊ธฐ๋ก, ๋ฉ์ผ ์ด์์ด ๊ฐ๊ฐ ๋ค๋ฅธ ํญ์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ํ๋ฅผ ์ ๊ด๋ฆฌํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ์๋ก์ด ํ์๋ก์ ๋ถ์ํ๋ฉด ์ด์ ์ฑํ
๊ธฐ๋ก๊ณผ ๋ฉ์ผ ๋ณธ๋ฌธ์ด ๋จ์ ์์ผ๋ฉด ์ ๋๋ค.
๊ทธ๋์ ์๋ก์ด ๋ถ์์ด ์์๋ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฅผ ์ด๊ธฐํํ๋ค.
st.session_state.messages = []
st.session_state.mail_body = ""
์ด ๊ณผ์ ์ ํตํด ์ฌ์ฉ์๊ฐ ์๋ก์ด ํ์๋ก์ ์ ๋ก๋ํ์ ๋ ์ด์ ๊ฒฐ๊ณผ์ ์์ด์ง ์๋๋ก ๊ฐ์ ํ๋ค.
10. ๊ฐ์ ํ๊ณ ์ถ์ ์
๋ฐํ์์๋ ์ธ๊ธํ์ง๋ง ํ์ฌ ์๋น์ค์๋ ๋ช ๊ฐ์ง ํ๊ณ๊ฐ ์๋ค.
์ฒซ์งธ, ์ผ์ ์ ๋ณด๋ฅผ ํ
์คํธ๋ก๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ค์ ์บ๋ฆฐ๋์ ์ฐ๊ฒฐ๋์ง๋ ์๋๋ค.
ํฅํ์๋ Google Calendar API๋ฅผ ์ฐ๋ํด ํ์๋ก์์ ์ถ์ถํ ์ผ์ ์ ์๋์ผ๋ก ์บ๋ฆฐ๋์ ๋ฑ๋กํ ์ ์๋๋ก ๊ฐ์ ํ ์ ์๋ค.
๋์งธ, ํ์ฌ๋ ํ๊ตญ์ด ์ค์ฌ์ผ๋ก ๋์ํ๋ค. (๊น๋๋ฆฌ๊ฐ ํ๊ตญ์ธ์ด๊ธด ํด์...)
๊ธ๋ก๋ฒ ์
๋ฌด ํ๊ฒฝ์ ๊ณ ๋ คํ๋ฉด ์์ด, ์ผ๋ณธ์ด, ์ค๊ตญ์ด ๋ฑ ๋ค๊ตญ์ด ํ์๋ก ๋ถ์๊ณผ ์ด๋ฉ์ผ ์์ฑ ๊ธฐ๋ฅ์ผ๋ก ํ์ฅํ ์ ์๋ค.
์
์งธ, ์์ฑ ๋ช
๋ น์ ์ฃผ๋ณ ์์์ ์ํฅ์ ๋ฐ์ ์ ์๋ค.
์ด ๋ถ๋ถ์ ํ์์ ์์ด๋์ด์๋ค. ๋๋ ์ ํ ๊ณ ๋ คํ์ง ๋ชปํ ๋ถ๋ถ์ด์๋๋ฐ ๊ฝค๋ ์ข์ ์์ด๋์ด๋ผ ์๊ฐํด์ ์์ฑํ๋ค. ์ค์ ํ์์ค ํ๊ฒฝ์์๋ ์ฌ๋ฌ ์ฌ๋์ด ๋์์ ๋งํ๊ฑฐ๋ ๋ฐฐ๊ฒฝ ์์์ด ์์ผ ์ ์์ผ๋ฏ๋ก, ๋
ธ์ด์ฆ ์บ์ฌ๋ง์ด๋ ํ์ ๋ถ๋ฆฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ์ ํ๋๋ฅผ ๋์ผ ์ ์๋ค.
11. 3์ฐจ ๋ฏธํ๋ฅผ ํตํด ๋ฐฐ์ด ์ & ๋ง๋ฌด๋ฆฌ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ๊ฐ์ฅ ํฌ๊ฒ ๋ฐฐ์ด ์ ์ AI ๊ธฐ๋ฅ์ ์ค์ ์ ๋ฌด ํ๋ฆ๊ณผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด์๋ค.
์ด์ ๊น์ง๋ LLM์ ํ์ฉํด ๋ต๋ณ์ ์์ฑํ๊ฑฐ๋ ์์ฝํ๋ ๊ธฐ๋ฅ์ ์ง์คํ๋ค๋ฉด, ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์์ฝ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ด๋ฉ์ผ, ๋ค์ด๋ก๋, ์ง์์๋ต ๊ธฐ๋ฅ๊ณผ ์ฐ๊ฒฐํ๋ค. ๋จ์ํ “AI๊ฐ ๋ต๋ณ์ ์ํ๋๊ฐ”๊ฐ ์๋๋ผ, AI๊ฐ ์์ฑํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์๊ฐ ์ค์ ์ ๋ฌด์์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋๊ฐ๋ฅผ ๊ณ ๋ฏผํ ํ๋ก์ ํธ์๋ค. ์๋ง DX๋ก ์ผํ๊ฒ ๋๋ฉด ์ด๋ฐ ๋ถ๋ถ์ ๊ฐ์ฅ ์ค์ ์ ์ผ๋ก ์๊ฐํด์ผํ์ง ์์๊น?
๋ฏธํ์์ Streamlit์ ํ์ฉํด ์ฌ์ฉ์๊ฐ ์ง์ ์ฌ์ฉํ ์ ์๋ ํํ์ UI๋ฅผ ๋ง๋ค๋ฉด์, AI ์๋น์ค์์ ์ธํฐํ์ด์ค์ ๊ฐ๊ฒฐํจ์ ํ๊ต ๋ค๋๋๋ณด๋ค ๋ ํฌ๊ฒ ๋๋ผ๊ณ ์๋ค. ํ๊ต์์ ํ๋ก์ ํธํ ๋ ์ปด๊ณต๊ณผ๋ค ๋ณด๋๊น ๋ ์์ฑ๋ ์๊ณ ํํํ ๊ธฐ๋ณธ ์น/์ฑ ๊ตฌ์ถํ๋๋ฐ ์๊ฐ์ ๋ง์ด ๋ค๋ ธ๋ค๋ฉด ์ด์ ๊ทธ๋ฅ Streamlit์ ์กฐ๊ธ ๋๋๋ฆฌ๋ฉด ๋ฐ๋ก ์น์ฌ์ดํธ๊ฐ ๋ง๋ค์ด์ง๋ ์ ๊ธฐํ๊ธฐ๋ ํ๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๊ฒ ๋๋ค๋ฉด Streamlit์ ์ ๊ทน ํ์ฉํด์ ํ ์คํธ ๊ตฌ์ถ์ ์ํ ์๊ฐ์ ์ค์ด๊ณ ๋ฌธ์ ์ ์์ ๋ ์๊ฐ์ ๋ง์ด ๋ค์ฌ์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค. ๋ฏธํ๋ ์์ด๋ฐ์ด์ ์๊ฐ์ ๊ฐ์ง์๋ก ์ค์ํ๊ฑด ๋ฌธ์ ์ ์์ ๋๋ฉ์ธ์ ๋ํ ์ธ์+์๋ฐ์ ์ธ ๊ณต๋ถ๋ผ๋ ์๊ฐ์ด ๋ ๋ค.