№ 17
AI Agent tư vấn bán hàng xe VinFast — hỗ trợ khách hàng tra cứu catalog, so sánh xe, ước lượng TCO (chi phí sở hữu), tìm showroom / trạm sạc, và đăng ký lái thử; đồng thời cung cấp luồng quản trị cho advisor (nhân viên tư vấn) và admin.
AI Agent tư vấn bán hàng xe VinFast — hỗ trợ khách hàng tra cứu catalog, so sánh xe, ước lượng TCO (chi phí sở hữu), tìm showroom / trạm sạc, và đăng ký lái thử; đồng thời cung cấp luồng quản trị cho advisor (nhân viên tư vấn), staff (đại lý) và admin.
Backend FastAPI điều phối một LangGraph agent đa tầng (Gate A1–A10): trích xuất tiêu chí khách → truy xuất hai lớp (SQL hard-filter + ChromaDB semantic) → chấm điểm → ước lượng TCO → tổng hợp câu trả lời có guardrail chống ảo giác.
📐 Xem kiến trúc chi tiết:
docs/architecture_diagram.md·ARCHITECTURE.md
| Nhóm | Tính năng |
|---|---|
| Customer | Tư vấn xe theo ngân sách/nhu cầu, so sánh (compare), TCO, bản đồ showroom & trạm sạc, đăng ký lái thử, lịch sử chat |
| Advisor | Hàng đợi khách, đề xuất, quản lý lịch lái thử, thông báo |
| Staff / Admin | Đăng nhập staff, quản lý người dùng, quản trị catalog xe, đăng thông báo |
| Agent | Truy xuất hai lớp (A1), slot engine (A3), recommendation (A5), guardrail (A6), HITL (A7) |
| Layer | Technology |
|---|---|
| AI Agent | LangGraph + LangChain |
| Backend | FastAPI + Uvicorn |
| LLM | OpenAI GPT-4o-mini |
| Frontend | Next.js 16 / React 19 / TypeScript / Tailwind CSS 4 / Leaflet |
| Database | SQLite (dev) / PostgreSQL (prod) — Alembic (schema: auth, products, locations, document, agents) |
| Vector Store | ChromaDB |
| DevOps | Docker + docker-compose + GitHub Actions |
git clone <repo-url> vinfast-ai-sales-advisor
cd vinfast-ai-sales-advisor
# Virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Cấu hình env
cp .env.example .env
# Mở .env và điền OPENAI_API_KEY (xem mục Environment Variables)
uvicorn src.main:app --reload --port 8000
cd frontend
cp .env.example .env.local
# đặt NEXT_PUBLIC_API_URL=http://localhost:8000
npm install
npm run dev
Mở:
http://localhost:3000
docker compose up --build
File .env (backend) — copy từ .env.example. Pydantic Settings đọc không phân biệt hoa/thường, nên OPENAI_API_KEY khớp với field openai_api_key trong src/config.py.
| Biến | Mặc định | Dùng bởi | Bắt buộc |
|---|---|---|---|
OPENAI_API_KEY | sk-... | LLM (GPT-4o-mini) | ✅ |
MODEL_NAME | gpt-4o-mini | LLM | ⬜ |
LLM_TEMPERATURE | 0.7 | LLM | ⬜ |
DATABASE_URL | sqlite:///./data/app.db | DB (Postgres prod) | ✅ |
CHROMA_PERSIST_DIR | ./data/chroma | Vector Store | ⬜ |
APP_ENV | development | App | ⬜ |
APP_PORT | 8000 | App | ⬜ |
APP_HOST | 0.0.0.0 | App | ⬜ |
LOG_LEVEL | INFO | Logging | ⬜ |
CORS_ORIGINS | http://localhost:3000 | CORS | ⬜ |
LANGCHAIN_API_KEY | — | LangSmith trace | ⬜ |
LANGCHAIN_PROJECT | ai20k-agent | LangSmith project | ⬜ |
LANGCHAIN_TRACING_V2 | true | LangSmith toggle | ⬜ |
AI_LOG_SERVER | https://ai-logs.note.transformerlabs.ai/api/ingest | AI usage logging | ⬜ |
AI_LOG_API_KEY | — | AI usage logging | ⬜ |
AI_LOG_DIR | .ai-log | AI usage logging | ⬜ |
.env.local)| Biến | Giá trị | Dùng bởi |
|---|---|---|
NEXT_PUBLIC_API_URL | http://localhost:8000 | Gọi backend REST |
Các biến
ANTHROPIC_API_KEY,GOOGLE_API_KEY,PINECONE_*trong.env.examplelà tùy chọn (template), chưa dùng bởiconfig.py.
curl http://localhost:8000/health
Response:
{
"status": "ok",
"env": "development"
}
curl -X POST http://localhost:8000/api/v1/chat \
-H "Content-Type: application/json" \
-d '{"message": "Tư vấn giúp tôi xe VinFast tầm 700 triệu, 5 chỗ, chủ yếu đi trong phố"}'
Response:
{
"response": "Với ngân sách ~700 triệu và nhu cầu 5 chỗ đi trong phố, VinFast VF5 là ứng viên phù hợp nhất...",
"analysis": "Phân tích: ngân sách 700tr, 5 chỗ, city-use"
}
curl http://localhost:8000/api/v1/status
Response:
{
"status": "ready",
"agent": "LangGraph Agent v1.0"
}
http://localhost:3000/consultation/compare để so sánh 2 xe./tco để xem chi phí sở hữu./locations để tìm showroom và trạm sạc.src/
main.py # FastAPI entry
config.py # Pydantic Settings
api/routes.py # /api/v1/chat, /status
agents/ # LangGraph agent (A1–A10)
graph.py # state machine (A4-2)
legacy_graph.py # graph ví dụ cũ (sẽ thay ở A4-4)
nodes/ # extract_slots, layer1/2, score, tco, synthesize, guardrail...
services/ # retrieval, recommendation, tco_estimation, synthesis...
adapters/ # catalog_reader, feature_retriever, unit_of_work
tools/ # tco
agent_stages/ # tài liệu A1–A10
models/schemas.py # ChatRequest / ChatResponse
services/llm.py # ChatOpenAI
frontend/
# Next.js 16 UI
# Customer / Advisor / Staff / Admin
migrations/
# Alembic:
# auth, products, locations, document, agents
eval/
# Evaluation results
docs/
# architecture_diagram.md, PRD, UI spec
presentation/
# Demo Day slides / video
Template tích hợp sẵn auto-logging hooks (Claude/Cursor/Codex/Gemini/Copilot/Antigravity).
Prompt được ghi vào .ai-log/ và submit lên grading server mỗi git push:
bash scripts/setup_hooks.sh
Luồng: main ← develop ← feature/*.
Đã merge ≥ 10 PR — thực tế 12 PR qua gh pr list --state merged.
Các nhóm tính năng đã merge gồm:
Source of truth tính năng: nhánh develop.
Các tài nguyên phục vụ Demo Day, Presentation và giới thiệu dự án:
| Tài nguyên | Mô tả |
|---|---|
| 🖼️ Logo | Logo chính thức của VinFast AI Sales Advisor |
| 📊 Slide | Slide thuyết trình và Demo Day |
| 🎬 Video Demo | Tổng hợp các video demo tính năng của hệ thống |
MIT — mục đích giáo dục (AI20K Build Phase).