№ 44
LinguaFlow xóa bỏ rào cản ngôn ngữ trong giao tiếp đa quốc gia, đa ngôn ngữ nhờ agent dịch theo thời gian thực tích hợp ngay trong chat
Tên đề tài: AI Agent Dịch tin nhắn đa ngôn ngữ Real-time & Trợ lý Hội thoại Thông minh
Nhóm thực hiện: 4U · Chương trình: VinUni AI20K Build Phase
Phiên bản: 3.0 — cập nhật 01/09/2026
Bổ sung so với 2.0: tin nhắn thoại & phiên âm, phạm vi đọc của trợ lý, đề xuất lịch fan-out cho cả nhóm, giao diện 14 ngôn ngữ, và định hướng thương mại hoá
Link demo: https://c3-lingua-flow-217.dquangminh2003.id.vn/
Đội ngũ triển khai — nhóm 4U
| Thành viên | Vai trò chính | Vai trò phụ |
|---|---|---|
| Nguyễn Thị Trà My | Trưởng nhóm / AI | Backend |
| Nguyễn Ngọc Thuận | Frontend | Tester |
| Đinh Quang Minh | Backend | Knowledge Base |
Trong các phòng chat làm việc đa ngôn ngữ (Đặc biệt là phòng chat ba bên: Quản lý dự án (PM) ↔ Lập trình viên/Designer ↔ Khách hàng quốc tế), rào cản ngôn ngữ gây giảm hiệu suất nghiêm trọng:
| Pain Point | Tác động thực tế |
|---|---|
| Hiểu sai ngữ cảnh & Thuật ngữ | Các từ viết tắt kỹ thuật (API, DB, BE, FE, PR, deploy, hotfix) nếu dịch rời rạc theo nghĩa đen sẽ bị sai lệch specification và gây hỏng sản phẩm. |
| Trải nghiệm dịch đứt đoạn | Dùng Google Translate/DeepL/ChatGPT buộc người dùng phải copy-paste ra ngoài app chat, gây mất tập trung và đứt luồng thảo luận. |
| Bỏ sót Action Items & Deadline | Trong các luồng chat dài, các cam kết, mốc deadline và lịch hẹn dễ bị trôi mất mà không có công cụ tự động trích xuất và nhắc nhở. |
| Rủi ro Bảo mật & Quyền riêng tư (PII) | Khi tích hợp AI vào chat nhóm, nguy cơ lộ thông tin cá nhân (email, SĐT, số tài khoản, mật khẩu) hoặc lộ nội dung thảo luận nội bộ cho bên thứ ba. |
graph LR
subgraph Competitors["Công cụ hiện tại"]
GT["Google Translate<br/>dịch nhanh, không nhớ ngữ cảnh"]
DL["DeepL<br/>văn phong tốt, glossary tĩnh"]
GPT["ChatGPT / Claude<br/>hiểu ngữ cảnh, không tối ưu chat real-time"]
end
GT --> Gap
DL --> Gap
GPT --> Gap
Gap["Khoảng trống Thị trường (Market Gap)"]
Gap --> P1["Tích hợp Real-time WebSocket<br/>ngay trong app chat"]
Gap --> P2["Glossary thích ứng theo đối tượng đọc<br/>(Internal vs Client)"]
Gap --> P3["Tự học thuật ngữ từ feedback<br/>(Human-in-the-loop Mining)"]
Gap --> P4["Song Agent: Dịch real-time<br/>+ Trợ lý trích xuất Task/Lịch hẹn"]
LinguaFlow xây dựng kiến trúc Agent chạy song song trên cùng một hạ tầng (Auth, PostgreSQL + pgvector, WebSocket Gateway, Observability Tracing):
graph TB
User([Người dùng Chat]) -->|WebSocket / REST| Gateway["FastAPI API Gateway & WS Manager"]
subgraph DualAgent["Kiến trúc Song Agent (LangGraph)"]
TA["Translation Agent<br/>(Dịch thuật Real-time, Streaming)"]
AA["Assistant Agent<br/>(Trợ lý Thông minh, RAG & Tool Execution)"]
end
Gateway -->|"Mọi tin nhắn"| TA
Gateway -->|"@assistant hoặc chat riêng"| AA
TA --> DB[("PostgreSQL + pgvector")]
AA --> DB
AA --> Tools["External Tools<br/>(Google Calendar, Reminders, Memory RAG)"]
Obs["Braintrust / Langfuse Observability"] -.-> DualAgent
langdetect) ~2ms.internal vs client).deep-translator ➔ Nếu vẫn lỗi ➔ Trả về bản gốc an toàn với flag is_fallback = true.Đặc điểm: Kích hoạt theo yêu cầu (Chat riêng với Assistant hoặc gõ @assistant trong chat nhóm). Trả lời riêng tư (visibility = 'private').
Quy trình xử lý Autonomous Planner:
pgvector.Phạm vi đọc do nơi hỏi quyết định, không do câu hỏi:
| Hỏi ở đâu | Trợ lý đọc được gì |
|---|---|
| Chat riêng với trợ lý | Mọi hội thoại tài khoản là thành viên, kèm danh sách thành viên từng nhóm |
@assistant trong một hội thoại | Đúng hội thoại đó, không gì khác |
Trong quá trình phát triển, nhóm đã áp dụng các kỹ thuật chuyên sâu để giải quyết 5 nhóm bài toán khó (Edge Cases):
langdetect cục bộ (~2ms, 0đ chi phí). Nguồn và đích trùng nhau ➔ Trả về ngay không gọi LLM.langdetect mâu thuẫn với thông tin người gửi mới gọi LLM phân xử.deploy, nhưng gửi cho Khách hàng nên dịch thành triển khai.honorific_profile (senior, peer, junior, client).customize trong LangGraph tra cứu bảng glossary_entries dựa theo cặp (source_lang, target_lang, audience).correction_log (khi người dùng bật consent).GlossaryProposal khi thỏa mãn đồng thời: occurrence_count >= 3 VÀ distinct_user_count >= 2 (phải có ít nhất 2 người khác nhau cùng sửa giống nhau)./admin GlossaryPanel) trước khi thành GlossaryEntry chính thức.deep-translator).is_fallback = true và ghi log telemetry tại điểm thoát. Chat vẫy chạy liên tục, không bao giờ vỡ UI.Dự án LinguaFlow áp dụng hệ thống đánh giá đa chiều kết hợp giữa Tự động hóa (Automated Benchmarking), LLM-as-a-Judge và Phản hồi Người dùng thật (Human Feedback):
graph TD
subgraph EvalInputs["Nguồn Đánh giá"]
GS["Golden Set Test Suite<br/>(62 tình huống chuẩn)"]
TF["User Feedback<br/>(Upvote / Downvote / Correction)"]
TL["Telemetry Logs<br/>(translation_attempts 5 exit points)"]
end
subgraph MetricsEngine["Bộ chỉ số Đánh giá (eval/run_eval.py)"]
M1["BLEU / ChrF Score<br/>(Đo độ chính xác từ vựng)"]
M2["LLM-as-a-Judge<br/>(Đo Fidelity & Completeness)"]
M3["Latency & Cost Metrics<br/>(P50/P90/P99 Response Time)"]
M4["User Upvote Rate<br/>(% Hài lòng thực tế)"]
end
GS --> M1 & M2
TF --> M4
TL --> M3
MetricsEngine --> Dashboard["Admin Analytics Dashboard & QA Report"]
eval/golden_set.jsonl)FE, BE, PR, LGTM).senior, client).POST /api/v1/translations/{id}/feedback và GET /api/v1/admin/feedback để đo tỷ lệ hài lòng thực tế của người dùng.| Mã | Tính năng | Trạng thái | Nơi kiểm chứng |
|---|---|---|---|
| F-01 | Xác thực JWT, OTP đăng ký, đặt ngôn ngữ dịch & ngôn ngữ giao diện | ✓ | src/api/routes.py, tests/test_api/test_auth.py (23 test) |
| F-02 | Chat real-time 1-1 và nhóm qua WebSocket | ✓ | src/api/websocket.py, src/services/connection_manager.py |
| F-03 | Dịch có ngữ cảnh, phát hiện ngôn ngữ hai tầng, fallback 2 mức | ✓ | src/agents/graph.py, src/agents/nodes/translation.py |
| F-04 | Bật/tắt bản gốc — bản dịch trên từng tin nhắn | ✓ | frontend/src/features/chat/components/MessageBubble.tsx |
| F-05 | Human-in-the-loop: upvote/downvote và sửa bản dịch | ✓ | src/services/correction_log.py |
| F-06 | Guardrail đầu vào/đầu ra, giới hạn độ dài, chống giả mạo thẻ ngữ cảnh | ✓ | src/agents/guardrails.py, docs/GUARDRAILS.md |
| F-07 | Khai phá thuật ngữ tự động + bảng duyệt của quản trị | ✓ | src/services/glossary_mining.py |
| F-08 | Assistant Agent: RAG riêng, trích việc, lịch cá nhân, đồng bộ Google Calendar | ✓ | src/agents/assistant/, src/services/calendar.py |
| F-09 | Tin nhắn thoại: ghi âm → phiên âm (Gemini STT) → dịch → trích việc | ✓ | src/services/voice_transcription.py, src/services/audio_conversion.py |
| F-10 | Gọi thoại/video 1-1 qua WebRTC | ✓ | src/services/rtc.py |
| F-11 | Giao diện 14 ngôn ngữ theo cài đặt tài khoản | ✓ | frontend/src/features/chat/i18n.ts (576 khóa), scripts/check_ui_keys.py |
| Bộ | Số lượng | Kết quả |
|---|---|---|
Backend (pytest tests/) | 1236 | toàn bộ đạt, ~22 phút |
Frontend (vitest) | 53 | toàn bộ đạt |
Kiểu tĩnh (tsc --noEmit) | — | 0 lỗi |
Lint (ruff, eslint) | — | 0 lỗi |
| Migration | 38 revision | một head duy nhất |
Chạy trên eval/golden_set.jsonl (62 mẫu), chấm bằng LLM-as-judge (mistral-medium chấm gemini-3.7-flash):
| Chỉ số | Mục tiêu | Thực tế | |
|---|---|---|---|
| Tỷ lệ đạt (≥ 0.7) | > 80% | 100% | đạt |
| Điểm trung bình | > 0.80 | 0.912 | đạt |
| chrF++ / BLEU / TER | — | 65.6 / 52.2 / 56.9 | đạt |
| Tuân thủ glossary | 100% | 100% | đạt |
| Số lần fallback | 0 | 0 | đạt |
| Độ trễ trung bình | < 2000ms | 2324ms | chưa đạt |
| Độ trễ p95 | < 5000ms | 4608ms | đạt |
| Đúng ngôn ngữ đích | 100% | 96,6% | chưa đạt |
Mục này đánh giá khả năng tồn tại của sản phẩm trên bốn trục: khác biệt chức năng so với giải pháp sẵn có, cơ sở kỹ thuật của khác biệt đó, khả năng duy trì, và tính khả thi kinh tế. Mỗi số liệu được dẫn nguồn tại chỗ.
Các giải pháp hiện có xử lý ở mức câu: nhận một đoạn văn bản, trả về bản dịch, kết thúc. Phạm vi xử lý của LinguaFlow mở rộng thêm một bước — từ nội dung hội thoại tới hành động được ghi nhận.
| Bước xử lý | Google Translate / DeepL | Zoom AI Companion / Teams | LinguaFlow |
|---|---|---|---|
| Dịch một câu | có | có | có |
| Giữ ngữ cảnh 3–5 lượt trước | không | trong phiên họp | có |
| Bề mặt hoạt động | ứng dụng rời | phòng họp, kết thúc khi họp tan | luồng chat, liên tục |
| Trích cam kết thành mục lịch | không | không | có |
| Cá thể hoá theo từng người nhận | không | không | một hàng đề xuất / thành viên |
| Bước xác nhận của người dùng | không áp dụng | không áp dụng | bắt buộc trước khi ghi |
Khác biệt trọng yếu nằm ở ba dòng cuối. Trong quy trình outsourcing và xuất nhập khẩu, cam kết công việc ("gửi báo giá trước thứ Sáu") phát sinh chủ yếu trong chat giữa các cuộc họp, không phải trong cuộc họp. Giải pháp gắn với phòng họp không quan sát được bề mặt này.
Chất lượng dịch ở mức câu của DeepL và các mô hình ngôn ngữ lớn là tốt; dự án không có số liệu nào chứng minh điều ngược lại, do bộ đánh giá tại §5.3 chấm trên golden set nội bộ và không so sánh chéo với sản phẩm khác. Khác biệt chức năng vì vậy không dựa trên giả định chất lượng dịch cao hơn, mà dựa trên ba đặc điểm ngôn ngữ khiến đơn vị "một câu" không đủ:
| Hiện tượng ngôn ngữ | Hệ quả khi dịch rời từng câu | Cơ chế xử lý trong hệ thống |
|---|---|---|
| Tiếng Việt lược chủ ngữ, không đánh dấu thì | "Gửi rồi nhé" mất chủ thể, thời điểm và tân ngữ; bộ dịch buộc phải suy đoán | Nạp 3–5 lượt gần nhất vào ngữ cảnh trước khi dịch (build_context) |
| Đại từ xưng hô mã hoá vai vế; tiếng Anh quy về "you" | Dịch chiều ngược lại chọn xưng hô ngẫu nhiên, sai vai vế trong hội thoại với khách hàng | Suy luận hồ sơ hội thoại, giữ trục xưng hô nhất quán (profile_inference) |
| Một thuật ngữ cần hai cách diễn đạt tuỳ người đọc | Glossary tĩnh chỉ có một ánh xạ cho mỗi thuật ngữ | Glossary tra theo đối tượng đọc (nội bộ / khách hàng), bổ sung tự động từ log chỉnh sửa của người dùng |
Về mặt kỹ thuật, các nền tảng lớn có đủ năng lực triển khai chức năng tương đương. Khác biệt hiện tại đến từ việc chưa nền tảng nào triển khai, không đến từ rào cản kỹ thuật. Ba yếu tố làm chậm quá trình thu hẹp khoảng cách:
| Chỉ tiêu | Giá trị | Nguồn |
|---|---|---|
| Giá bán đề xuất | $1,50 / cuộc họp hoàn tất | mô hình định giá theo kết quả |
| Chi phí biến đổi thực tế | $0,4102 / cuộc họp hoàn tất | bóc tách LLM + STT + hạ tầng + retry + HITL |
| Biên lợi nhuận gộp | 72,65% | suy ra từ hai dòng trên |
| Ngưỡng hoà vốn (biên 60%) | tỷ lệ tự xử lý ≥ 71,63% | giải phương trình breakeven |
| Tỷ lệ tự xử lý đo được | 82,0% | bộ đánh giá Day 21–22 |
Biên độ an toàn hiện tại là 10,37 điểm phần trăm trên ngưỡng hoà vốn. Mức giá này nằm trong khả năng chi trả của phân khúc doanh nghiệp 20–200 nhân sự, không phụ thuộc vào định giá enterprise.
| Rủi ro | Mức độ | Trạng thái hiện tại |
|---|---|---|
| Tỷ lệ đúng ngôn ngữ đích 96,6% (§5.3) — sai khoảng 1/30 tin nhắn, ảnh hưởng trực tiếp cam kết cốt lõi | Cao | Nút validate_output đã phát hiện và ghi nhận wrong_language; chưa chốt hành vi khi phát hiện — thử lại hay trả nguyên văn |
| Hệ thống chỉ chạy được một bản sao — vừa là trần công suất, vừa là điểm chết đơn lẻ | Cao | Cần backplane dùng chung trước khi mở rộng |
| Tỷ lệ tự xử lý 82% đo trên bộ eval, chưa đo trên người dùng thật | Trung bình | Là chỉ số phải đo lại đầu tiên khi có lưu lượng thật |
| Nền tảng lớn bổ sung chức năng trích cam kết theo từng người | Trung bình | Phụ thuộc dữ liệu tích luỹ (5.4.3) để giữ khác biệt |
| Luồng phát hiện cam kết timeout ở 10 giây, thất bại không phát tín hiệu | Trung bình | Quan sát được khi chạy thử 01/09; chưa có retry hoặc chỉ báo |
| Thành phần | Nơi chạy |
|---|---|
| Backend + Agent | Ubuntu VPS, container GHCR dựng sẵn, đúng một bản sao |
| Cơ sở dữ liệu | pgvector/pgvector:pg16 trên cùng VPS, volume bền vững |
| Frontend | Ubuntu VPS, container GHCR sau Caddy |
| Quan sát | Braintrust (mặc định) hoặc Langfuse, đổi bằng biến môi trường |
| Khung A — Phần mềm | Khung B — Thay thế công việc (đã chọn) | |
|---|---|---|
| Cách nói | "Phần mềm trợ lý AI dịch họp và ghi biên bản" | "Đảm bảo 100% cuộc họp đa quốc gia được dịch chuẩn, biên bản & task giao đúng hạn" |
| Người quyết chi | IT Director | COO / Head of Operations |
| Lấy từ ngân sách | SaaS | Nhân sự / Vận hành |
| Bị so với | Zoom AI Companion ($0), Teams Premium ($10/user) | Thuê phiên dịch part-time ($600–1.000/tháng) |
| Phản đối lớn nhất | "Đã có Zoom/Teams miễn phí rồi" | "AI dịch sai gây thiệt hại hợp đồng thì ai chịu?" |
Lý do chọn B: ngân sách vận hành lớn và linh hoạt hơn ngân sách SaaS, vốn bị đọ giá trực tiếp với một sản phẩm giá $0 tích hợp sẵn.
Mô hình đề xuất là Outcome-based (Attribution 8/10 × Autonomy cao), giá $1,50/completed meeting, với ngưỡng hòa vốn:
| Containment | Cost/Completed Job | Gross Margin | |
|---|---|---|---|
| 60,0% | $0,6240 | 58,4% | cảnh báo |
| 71,63% | $0,6000 | 60,0% | ngưỡng hòa vốn |
| 82,0% (đo thực) | $0,4102 | 72,65% | an toàn |
con số 82% đó đến từ eval, chưa phải từ người dùng thật. Việc đầu tiên khi có người dùng là đo lại containment thật và đối chiếu với ngưỡng 71,63% — dưới ngưỡng đó thì mô hình giá không còn lãi lành mạnh.
Kênh chốt là Partner-Led qua liên minh tư vấn chuyển đổi số & IT Outsourcing (FPT Digital, Rikkei Soft, VNITO Alliance), chia sẻ 25% doanh thu. Bề mặt tích hợp mục tiêu: Google Meet Chrome Extension và Zoom App Bot, xuất biên bản & action item thẳng vào Slack/Notion của doanh nghiệp.
Khoảng cách kỹ thuật giữa bản hiện tại và bề mặt đó là rõ ràng: LinguaFlow hôm nay là một ứng dụng chat độc lập; để vào được cuộc họp Meet/Zoom cần một lớp bot tham gia phòng họp và nhận luồng audio — hạ tầng phiên âm và trích việc thì đã sẵn sàng, phần thiếu là đường vào.
message_visibility.public_only() đã là nền cho việc này.