AIGateway Test Console

v1 advanced
⚪ Anonymous (service tenant)
Common:

⚙️ Config Assistant

Sinh JSON cấu hình từ mô tả nghiệp vụ. Pipeline: config-gen — structured output với JSON Schema.

Hỗ trợ: streaming · tool calls · file/ảnh đính kèm · ghi âm (STT)

🎨 SmartLayout Assistant

Đề xuất bố cục giao diện form/list dựa trên schema. Pipeline: layout-gen.

Hỗ trợ: streaming · tool calls · file/ảnh đính kèm · ghi âm (STT)

📐 Schema Definition Assistant

Tạo / tối ưu schema metadata từ mô tả nghiệp vụ. Pipeline: schema-gen.

Hỗ trợ: streaming · tool calls · đính kèm schema hiện có · ghi âm (STT)

📊 Data Assistant (Business Analyst)

Trợ lý phân tích dữ liệu qua MCP tools. Pipeline: default — đại diện đúng nhất cho frontend chatbox enduser.

Hỗ trợ: streaming · tool calls · file/ảnh đính kèm · ghi âm (STT)

💻 Coding Assistant

Sinh code, refactor, giải thích. Pipeline: default — streaming SSE real-time.

Hỗ trợ: streaming · tool calls · file/ảnh đính kèm · ghi âm (STT)

💬 Chat (Generic Completion)

Hoàn thành thuần (không tool, không session). Dùng để smoke test pipeline cơ bản.

Preset prompts

VIChào hỏi tiếng Việt TaskTóm tắt đoạn văn dài TranslateDịch EN → VI TechGiải thích thuật ngữ kỹ thuật LogicBài toán reasoning từng bước

Phản hồi

Chưa có kết quả.

👁️ Vision OCR / Image Understanding

Tải ảnh (hóa đơn, biểu đồ, screenshot UI...) → AI đọc text + mô tả nội dung.

Preset instructions

OCRTrích xuất thông tin hóa đơn (số, tổng tiền, mã thuế) OCRĐọc thông tin CMND/CCCD AnalysisMô tả biểu đồ và xu hướng UIMô tả mockup UI và đề xuất layout OCRĐọc chữ viết tay tiếng Việt

Kết quả

Chưa có kết quả.

🎤 Speech to Text

Tải file âm thanh → transcribe ra text. Hỗ trợ tiếng Việt qua Whisper.

Tips

🇻🇳 Set language=vi để tăng độ chính xác tiếng Việt 🇬🇧 Set language=en cho audio tiếng Anh 🌐 Để trống cho auto-detect

Transcription

Chưa có kết quả.

🔊 Text to Speech

Văn bản → giọng nói tự nhiên. Chọn voice + format + tốc độ.

Preset texts

VIChào mừng hệ thống VIThông báo lịch họp VIĐoạn văn dài (test cadence) ENEnglish short text

Audio output

🧠 Memory (Ingest + Semantic Search)

RAG end-to-end: ingest tài liệu vào vector store → search bằng câu hỏi tự nhiên.

Preset corpus

HRQuy định nghỉ phép công ty ProductĐặc tả sản phẩm SupportFAQ khách hàng

Ingest

(chưa ingest)

Search

(chưa search)

🔐 Auth Diagnostics

Probe AIGateway → /mcp với user JWT của bạn. Dùng khi assistant trả lỗi HTTP 5xx ... 401/403 from /mcp. AIGateway giờ là thin MCP proxy: forward bearer header của user verbatim — không có service-account hop, không có impersonation header. Login PKCE ở header bar trước khi probe.

/mcp tools/list probe

POST /api/diag/mcp/tools-list → backend forward Authorization của bạn sang Application /mcp. Trả về raw HTTP status + tool count + body preview. Hint giúp phân biệt 401 (JWT bị từ chối / hết hạn) vs 403 (thiếu scope mcp:invoke — re-login để mint token mới).

(chưa chạy)

4. AssistantToolPolicy resolution

Xem mỗi assistant kind đang được gắn internal plugins nào + có load MCP tools không.

(chưa chạy)

🧩 Skill Manager

Quản lý các Skill (assistant DB-driven). Mỗi Skill có instructions + tool bindings + provider/model override, publish thành POST /api/skills/{name}/run. 5 skill base + 1 skill-creator seed sẵn. Click "🪄 Create with AI" để mô tả nhu cầu bằng ngôn ngữ tự nhiên — Skill Creator sẽ tự draft và save.

Name Title Pipeline MCP Enabled System Actions
(chưa refresh)

💭 Conversation Console

Test multi-turn cho 4 assistant chính (BA / Schema / Layout / Config). Mỗi turn ghi lại history vào ai_conversations Mongo (TTL 7 ngày). Tool calls được hiển thị chi tiết để verify Layer 2 (MCP) hoạt động đúng tenant.

Cài đặt phiên

Schema mode: truyền JSON schema hiện tại vào ô bên dưới để chạy Refactor mode. Layout mode: SchemaId trong ô bên dưới. Config mode: JSON Schema constraint (optional).

Chat history

Chưa có turn nào. Gõ prompt và bấm "Send".

Gửi turn mới

📎 Widget Guide — nhúng chat vào trang bất kỳ

Widget cho phép tenant nhúng 1 đoạn <script> vào bất kỳ trang nào để có chat bubble (Intercom-style) gọi tới aig.qltn.demego.vn. Trang này có sẵn nút Mount widget bên dưới — bấm để chat thử ngay tại đây.

1. Cấu hình

Mặc định Gateway base = origin của trang này. App base = Application (OpenIddict issuer). Có thể paste sẵn token để skip PKCE.

2. Snippet — copy vào trang tenant

Snippet auto-update theo cấu hình ở phần 1.


        

3. Mount widget vào trang này

Bấm Mount để widget thực sự xuất hiện ở góc dưới-phải (hoặc theo Position đã chọn). Widget chạy trong Shadow DOM nên không xung đột CSS với UI test này. Chỉ mount được 1 lần / page (reload nếu muốn đổi config).

Public API (sau khi mount, mở DevTools console): AIGWidget.open(), .close(), .toggle(), .reset(), .contextId(), .version.

4. Bảng các thuộc tính data-*

Thuộc tínhBắt buộcDefaultMô tả
srcURL bundle: {gateway}/widget/v1/embed.js
data-app-basehttps://api.qltn.sandbox.demego.vnApplication URL (OAuth issuer + regcode source)
data-client-iddemego.userOAuth client_id, public PKCE-enabled
data-tokenPre-acquired JWT (skip PKCE). Chỉ dùng khi host page đã có session.
data-context-idauto-genConversation context. Set cố định để chat liên session.
data-languageviNgôn ngữ phản hồi. Persist theo conversation.
data-positionbrVị trí bubble: br | bl | tr | tl
data-themeautolight | dark | auto (auto = follow OS)
data-greeting(VN)Câu chào assistant gửi đầu tiên
data-history-window8Số turn cũ inject vào prompt (1..100)
data-titleTrợ lý AITiêu đề header panel
asyncKhuyến nghị bật để không chặn page render

5. Token resolution (theo thứ tự ưu tiên)

  1. data-token trên thẻ script → dùng trực tiếp, skip OIDC.
  2. localStorage aig-widget-token-{client_id} còn hạn → dùng (decode exp claim).
  3. PKCE flow: widget mở popup tới {app-base}/identity/connect/authorize → user login → callback.html postMessage code về parent → widget POST /connect/token exchange → token lưu vào localStorage cho lần sau.

⚠️ Popup blocker có thể chặn step 3. Widget detect được và sẽ fallback hiển thị thông báo. Trang host nên cho phép popup từ Application domain.

6. Backend endpoints (mọi widget call qua đây)

MethodPathAuthMục đích
POST/api/v1/chat/sendJWTUnary chat (full response JSON)
POST/api/v1/chat/streamJWTSSE typewriter
GET/api/v1/chat/historyJWTLoad conversation từ Mongo TTL 7d
DELETE/api/v1/chat/historyJWTReset conversation

Tenant context auto-resolve từ JWT claims (regcode, username, subjectSchema, subjectId, activeRole) — widget không gửi tenantId trong body (defense-in-depth).