Skip to content
This repository was archived by the owner on Jun 11, 2026. It is now read-only.

2025-Standard/standard_ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Standard AI

Standard AI๋Š” ๊ฐœ์ธ ์ž์‚ฐ๊ด€๋ฆฌ์™€ ์ฒญ๋…„์ •์ฑ… ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AI ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค.
FastAPI ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ, ํˆฌ์ž ์ถ”์ฒœ, ์‹ ์šฉ๋“ฑ๊ธ‰ ๋ถ„์„, ์ž์‚ฐ๊ด€๋ฆฌ ์ฑ—๋ด‡, ์ฑ„ํŒ… ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ RAG
  • ํˆฌ์ž ์ƒํ’ˆ ์ถ”์ฒœ
  • ์‹ ์šฉ๋“ฑ๊ธ‰ ๊ณ„์‚ฐ ๋ฐ ๊ด€๋ฆฌ ํŒ ์ œ๊ณต
  • ๊ฐœ์ธ ์ž์‚ฐ๊ด€๋ฆฌ ๋ฐ ์ฒญ๋…„์ •์ฑ… ์ฑ—๋ด‡
  • ์ฑ„ํŒ… ๊ธฐ๋ก ์ €์žฅ ๋ฐ ์กฐํšŒ
  • ์ฑ„ํŒ… ๊ธฐ๋ฐ˜ ํ‚ค์›Œ๋“œ ์ถ”์ถœ
  • FastAPI ๊ธฐ๋ฐ˜ REST API ์ œ๊ณต
  • Docker ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์ง€์›

๊ธฐ์ˆ  ์Šคํƒ

  • Python 3.11
  • FastAPI
  • Uvicorn
  • OpenAI API
  • LangChain
  • FAISS
  • MongoDB
  • PyMongo
  • KeyBERT
  • SentenceTransformers
  • Pydantic
  • Docker

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

standard_ai/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ main.py                     # FastAPI ์„œ๋ฒ„ ์ง„์ž…์ 
โ”‚   โ”œโ”€โ”€ schemas.py                  # ์š”์ฒญ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ
โ”‚   โ”œโ”€โ”€ chatbot/
โ”‚   โ”‚   โ”œโ”€โ”€ chatbot_prompt.py       # ์ž์‚ฐ๊ด€๋ฆฌ/์ฒญ๋…„์ •์ฑ… ์ฑ—๋ด‡ ํ”„๋กฌํ”„ํŠธ
โ”‚   โ”‚   โ””โ”€โ”€ chatbot_keyword.py      # ์ฑ„ํŒ… ๊ธฐ๋ฐ˜ ํ‚ค์›Œ๋“œ ์ถ”์ถœ
โ”‚   โ”œโ”€โ”€ credRate/
โ”‚   โ”‚   โ”œโ”€โ”€ credRate_prompt.py      # ์‹ ์šฉ๋“ฑ๊ธ‰ ๋ถ„์„ ํ”„๋กฌํ”„ํŠธ
โ”‚   โ”‚   โ””โ”€โ”€ credRate_cal.py         # ์‹ ์šฉ๋“ฑ๊ธ‰ ๊ณ„์‚ฐ ๋กœ์ง
โ”‚   โ”œโ”€โ”€ invRecom/
โ”‚   โ”‚   โ”œโ”€โ”€ invest_recommend.py     # ํˆฌ์ž ์ถ”์ฒœ ๋กœ์ง
โ”‚   โ”‚   โ””โ”€โ”€ invRecom_rag.py         # ํˆฌ์ž ์ถ”์ฒœ RAG ๊ตฌ์„ฑ
โ”‚   โ””โ”€โ”€ prodRecom/
โ”‚       โ”œโ”€โ”€ prodrecom_rag.py        # ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ RAG ๊ตฌ์„ฑ
โ”‚       โ”œโ”€โ”€ prodrecom_fewshot.py    # ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ Few-shot ํ”„๋กฌํ”„ํŠธ
โ”‚       โ””โ”€โ”€ prodrecom_utils.py      # JSON ํŒŒ์‹ฑ ์œ ํ‹ธ
โ”œโ”€โ”€ rag/
โ”‚   โ””โ”€โ”€ ์€ํ–‰์ƒํ’ˆ_์„ค๋ช….txt            # RAG ๊ฒ€์ƒ‰์šฉ ๊ธˆ์œต์ƒํ’ˆ ๋ฌธ์„œ
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ dockerfile
โ””โ”€โ”€ README.md

์‹คํ–‰ ์ค€๋น„

1. ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/2025-Standard/standard_ai.git
cd standard_ai

2. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ

python -m venv .venv

Linux / macOS:

source .venv/bin/activate

Windows PowerShell:

.venv\Scripts\Activate.ps1

3. ํŒจํ‚ค์ง€ ์„ค์น˜

pip install -r requirements.txt

Dockerfile ๊ธฐ์ค€์œผ๋กœ ์ถ”๊ฐ€ ์„ค์น˜๋˜๋Š” ์ฃผ์š” ํŒจํ‚ค์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

pip install langchain==0.3.23
pip install langchain_openai==0.3.14
pip install langchain_community==0.3.23
pip install langchain_core==0.3.23
pip install faiss-cpu
pip install tf-keras
pip install keybert

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์•„๋ž˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

OPENAI_API_KEY=your_openai_api_key
MONGO_DB_URL=your_mongodb_connection_url
์ด๋ฆ„ ์„ค๋ช…
OPENAI_API_KEY OpenAI API ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•˜๋Š” ํ‚ค
MONGO_DB_URL ์ฑ„ํŒ… ๊ธฐ๋ก ๋ฐ ํ‚ค์›Œ๋“œ ์ €์žฅ์— ์‚ฌ์šฉํ•˜๋Š” MongoDB ์—ฐ๊ฒฐ URL

์„œ๋ฒ„ ์‹คํ–‰

uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

์„œ๋ฒ„ ์‹คํ–‰ ํ›„ API ๋ฌธ์„œ๋Š” ์•„๋ž˜ ๊ฒฝ๋กœ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

http://localhost:8000/api/docs
http://localhost:8000/api/redoc

Docker ์‹คํ–‰

์ด ํ”„๋กœ์ ํŠธ๋Š” Docker ์‹คํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

docker build -f dockerfile -t standard-ai .
docker run -p 8000:8000 \
  -e OPENAI_API_KEY=your_openai_api_key \
  -e MONGO_DB_URL=your_mongodb_connection_url \
  standard-ai

API ๋ช…์„ธ

1. ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ

์‚ฌ์šฉ์ž์˜ ๊ฐ€์ž… ๊ธฐ๊ฐ„, ์„ ํ˜ธ ์€ํ–‰, ์ง€์—ญ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธˆ์œต์ƒํ’ˆ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

POST /api/prodRecom

Request Body

{
  "value": 1000000,
  "period": "1๋…„",
  "bank": "KB๊ตญ๋ฏผ์€ํ–‰",
  "country": "๊ฒฝ๋ถ"
}
ํ•„๋“œ ํƒ€์ž… ์„ค๋ช…
value integer ์˜ˆ์น˜ ๋˜๋Š” ํˆฌ์ž ๊ธˆ์•ก
period string ๊ฐ€์ž… ๊ธฐ๊ฐ„
bank string ์„ ํ˜ธ ์€ํ–‰
country string ์ง€์—ญ

Response

{
  "product_name_1": "์ถ”์ฒœ ์ƒํ’ˆ๋ช…",
  "interest_rate_1": "๊ธˆ๋ฆฌ",
  "product_reason_1": "์ถ”์ฒœ ์ด์œ ",
  "init_term_1": "๊ฐ€์ž… ์กฐ๊ฑด",
  "period_1": "๊ฐ€์ž… ๊ธฐ๊ฐ„",
  "product_link_1": "์ƒํ’ˆ ๋งํฌ"
}

2. ํˆฌ์ž ์ถ”์ฒœ

์ˆ˜์ต๋ฅ , ํˆฌ์ž ๊ธฐ๊ฐ„, ์›๊ธˆ๋ณด์žฅ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ˆ๊ธˆ, ์ ๊ธˆ, ํŽ€๋“œ, ์ฃผ์‹ ์ƒํ’ˆ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

POST /api/invRecom

Request Body

{
  "interestRate": 3.5,
  "startDate": "2025-01-01",
  "endDate": "2025-12-31",
  "principalGuarantee": "Y"
}
ํ•„๋“œ ํƒ€์ž… ์„ค๋ช…
interestRate float ๋ชฉํ‘œ ์ˆ˜์ต๋ฅ 
startDate date ํˆฌ์ž ์‹œ์ž‘์ผ
endDate date ํˆฌ์ž ์ข…๋ฃŒ์ผ
principalGuarantee string ์›๊ธˆ๋ณด์žฅ ์—ฌ๋ถ€

Response

[
  {
    "deposit_reason": "์˜ˆ๊ธˆ ์ถ”์ฒœ ์ด์œ ",
    "deposit_keyword": "์˜ˆ๊ธˆ ๊ด€๋ จ ํ‚ค์›Œ๋“œ",
    "deposit_link": "์˜ˆ๊ธˆ ์ƒํ’ˆ ๋งํฌ",
    "savings_reason": "์ ๊ธˆ ์ถ”์ฒœ ์ด์œ ",
    "savings_keyword": "์ ๊ธˆ ๊ด€๋ จ ํ‚ค์›Œ๋“œ",
    "savings_link": "์ ๊ธˆ ์ƒํ’ˆ ๋งํฌ",
    "fund_reason": "ํŽ€๋“œ ์ถ”์ฒœ ์ด์œ ",
    "fund_keyword": "ํŽ€๋“œ ๊ด€๋ จ ํ‚ค์›Œ๋“œ",
    "fund_link": "ํŽ€๋“œ ์ƒํ’ˆ ๋งํฌ",
    "stock_reason": "์ฃผ์‹ ์ถ”์ฒœ ์ด์œ ",
    "stock_keyword": "์ฃผ์‹ ๊ด€๋ จ ํ‚ค์›Œ๋“œ",
    "stock_link": "์ฃผ์‹ ๊ด€๋ จ ๋งํฌ"
  }
]

3. ์‹ ์šฉ๋“ฑ๊ธ‰ ๋ถ„์„

์‚ฌ์šฉ์ž์˜ ๊ฒฐ์ œ์ด๋ ฅ, ๋ถ€์ฑ„์ˆ˜์ค€, ์‹ ์šฉ์ด๋ ฅ, ์‹ ์šฉ๊ฑฐ๋ž˜๋นˆ๋„, ์‹ ๊ทœ์‹ ์šฉ๊ฑฐ๋ž˜, ์‹ ์šฉ ์‚ฌ์šฉ๋ฅ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ ์šฉ๋“ฑ๊ธ‰์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

POST /api/getGrade

Request Body

{
  "PH": "12",
  "PH_1": 100,
  "DL": 300,
  "CHL": 2,
  "CAF": 5,
  "NCA": 1,
  "CUR": 30.5
}
ํ•„๋“œ ํƒ€์ž… ์„ค๋ช…
PH string ๊ฒฐ์ œ์ด๋ ฅ ๊ธฐ๊ฐ„
PH_1 integer ๊ฒฐ์ œ ๊ธˆ์•ก
DL integer ๋ถ€์ฑ„ ์ˆ˜์ค€
CHL integer ์‹ ์šฉ์ด๋ ฅ
CAF integer ์‹ ์šฉ๊ฑฐ๋ž˜๋นˆ๋„
NCA integer ์‹ ๊ทœ์‹ ์šฉ๊ฑฐ๋ž˜
CUR float ์‹ ์šฉ ์‚ฌ์šฉ๋ฅ 

Response

[
  {
    "result": "์‚ฌ์šฉ์ž๋‹˜์˜ ์‹ ์šฉ๋“ฑ๊ธ‰์€ 1๋“ฑ๊ธ‰์ž…๋‹ˆ๋‹ค.",
    "tip_1": "์‹ ์šฉ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํŒ",
    "tip_2": "์ถ”๊ฐ€ ์‹ ์šฉ ๊ด€๋ฆฌ ํŒ"
  }
]

4. ์ฑ„ํŒ… ๊ธฐ๋ก ์กฐํšŒ

MongoDB์— ์ €์žฅ๋œ ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

GET /api/chat

Response

[
  {
    "role": "user",
    "content": "์‚ฌ์šฉ์ž ์งˆ๋ฌธ"
  },
  {
    "role": "assistant",
    "content": "AI ๋‹ต๋ณ€"
  }
]

5. ์ฑ—๋ด‡ ์งˆ๋ฌธ

๊ฐœ์ธ ์ž์‚ฐ๊ด€๋ฆฌ์™€ ์ฒญ๋…„์ •์ฑ… ๊ด€๋ จ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

POST /api/ask

Request Body

{
  "question": "์ฒญ๋…„๋„์•ฝ๊ณ„์ขŒ ๊ฐ€์ž… ์กฐ๊ฑด ์•Œ๋ ค์ค˜"
}

Response

{
  "response": "AI ์ฑ—๋ด‡ ๋‹ต๋ณ€"
}

6. ํ‚ค์›Œ๋“œ ์ถ”์ถœ

์ €์žฅ๋œ ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€์‹ฌ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

GET /api/key

Response

[
  "์ผ์ž๋ฆฌ",
  "์ฃผ๊ฑฐ",
  "๊ต์œก"
]

CORS ์„ค์ •

ํ˜„์žฌ ํ—ˆ์šฉ๋œ Origin์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

http://localhost:5173
https://standard-front-jmhs.vercel.app

ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด app/main.py์˜ CORS ์„ค์ •์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RAG ๊ตฌ์„ฑ

๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ ๊ธฐ๋Šฅ์€ rag/์€ํ–‰์ƒํ’ˆ_์„ค๋ช….txt ํŒŒ์ผ์„ ์ฝ์–ด ๋ฌธ์„œ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ , OpenAI Embeddings์™€ FAISS๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธˆ์œต์ƒํ’ˆ ์„ค๋ช… ๋ฌธ์„œ ๋กœ๋“œ
โ†’ ํ…์ŠคํŠธ ์ฒญํฌ ๋ถ„ํ• 
โ†’ OpenAI Embeddings ์ƒ์„ฑ
โ†’ FAISS Vector Store ์ƒ์„ฑ
โ†’ RetrievalQA๋กœ ๊ด€๋ จ ์ƒํ’ˆ ๊ฒ€์ƒ‰
โ†’ GPT ๋ชจ๋ธ๋กœ ์ถ”์ฒœ ๊ฒฐ๊ณผ ์ƒ์„ฑ

์ฃผ์˜์‚ฌํ•ญ

  • OPENAI_API_KEY๊ฐ€ ์—†์œผ๋ฉด ์ฑ—๋ด‡, ์ถ”์ฒœ, ์‹ ์šฉ๋“ฑ๊ธ‰ ๋ถ„์„ ๊ธฐ๋Šฅ์ด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • MONGO_DB_URL์ด ์—†์œผ๋ฉด ์ฑ„ํŒ… ๊ธฐ๋ก ์ €์žฅ ๋ฐ ์กฐํšŒ ๊ธฐ๋Šฅ์ด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • rag/์€ํ–‰์ƒํ’ˆ_์„ค๋ช….txt ํŒŒ์ผ์ด ์—†์œผ๋ฉด RAG ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ์ถ”์ฒœ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • __pycache__ ํŒŒ์ผ์€ Git์— ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๊ธˆ์œต์ƒํ’ˆ, ํˆฌ์ž, ์‹ ์šฉ๋“ฑ๊ธ‰ ๊ด€๋ จ ๋‹ต๋ณ€์€ ์ฐธ๊ณ ์šฉ์ด๋ฉฐ ์‹ค์ œ ๊ธˆ์œต ์˜์‚ฌ๊ฒฐ์ • ์ „ ๊ณต์‹ ๊ธฐ๊ด€ ๋˜๋Š” ์ „๋ฌธ๊ฐ€ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Repository ์—ญํ• 

์˜์—ญ ์„ค๋ช…
app/main.py FastAPI ์—”๋“œํฌ์ธํŠธ ์ •์˜
prodRecom ๊ธˆ์œต์ƒํ’ˆ ์ถ”์ฒœ
invRecom ํˆฌ์ž ์ถ”์ฒœ
credRate ์‹ ์šฉ๋“ฑ๊ธ‰ ๋ถ„์„
chatbot ์ž์‚ฐ๊ด€๋ฆฌ/์ฒญ๋…„์ •์ฑ… ์ฑ—๋ด‡ ๋ฐ ํ‚ค์›Œ๋“œ ์ถ”์ถœ
rag ์ถ”์ฒœ์— ์‚ฌ์šฉํ•  ๊ธˆ์œต์ƒํ’ˆ ๋ฌธ์„œ

License

๋ณ„๋„ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors