AgentScope – Nền Tảng AI Agent Nội Bộ Của Ecomobi

Từ “paste data lên ChatGPT” đến AI agent bảo mật, kết nối dữ liệu nội bộ, không cần IT — được xây dựng và vận hành hoàn toàn bởi Ecomobi.


Tổng Quan

AgentScope là GPTs / Gems — nhưng chạy bên trong Ecomobi, kết nối thẳng vào hệ thống nội bộ.

Vấn Đề Trước ĐâyAgentScope Giải Quyết Như Thế Nào
Data rò rỉ — nhân viên tự paste data lên ChatGPT publicToàn bộ chat đi qua hệ thống Ecomobi kiểm soát, data nội bộ không bao giờ bị đẩy raw ra ngoài
Phụ thuộc IT — muốn AI đọc database phải chờ dev viết codeAdmin gắn sẵn MCP data source, user chọn tool khi tạo agent — không cần code
Không scale — mỗi phòng ban dùng tool AI riêng, không đo đượcAgent library dùng chung, evaluation system đo chất lượng bằng metric thực

Quy trình sử dụng cơ bản: Đăng nhập → Chọn / Tạo Agent → Chat → Xuất Report


Bước 1: Đăng Nhập & Khám Phá Agent Library

Đăng Nhập

Truy cập URL nội bộ AgentScope → bấm Sign in with Google → chọn tài khoản @ecomobi.com.

Email ngoài domain công ty sẽ bị từ chối ngay tại bước xác thực — không cần nhớ mật khẩu riêng, không cần tạo tài khoản mới.

Khám Phá Agent Library

Vào menu Agents để xem danh sách agent mà các team khác đã chia sẻ. Mỗi agent có description rõ ràng — đọc để hiểu agent làm được gì, thử chat vài câu để cảm nhận trước khi dùng thật.

Visibility của AgentAi Nhìn Thấy
privateChỉ mình bạn
roleNhững người cùng role được admin cấp
sharedToàn bộ nhân viên Ecomobi

💡 Tip: Đừng vội tạo agent mới nếu chưa browse library — rất có thể đồng nghiệp đã build sẵn một agent phù hợp với đặc thù công việc của bạn.


Bước 2: Hiểu Cách Agent Suy Luận — ReAct Loop

Đây là phần quan trọng nhất để dùng AgentScope hiệu quả. Agent không “đọc câu hỏi rồi trả lời ngay” như một chatbot thông thường — nó chạy vòng lặp Reason → Act → Observe cho đến khi có đủ thông tin.

Vòng Lặp ReAct Trong Thực Tế

User: "Doanh thu affiliate tuần này theo kênh là bao nhiêu?"

Iteration 1:
  REASON → "Câu hỏi này cần data từ hệ thống. Tôi sẽ gọi
            tool affiliate_stats với date range của tuần này."

  ACT    → affiliate_stats(date_from="2026-04-07",
                           date_to="2026-04-13",
                           group_by="channel")

  OBSERVE → {Google: 45M, Facebook: 30M, TikTok: 12M, ...}

  REASON → "Đã có đủ data. Tôi sẽ format thành bảng và trả lời."

FINAL ANSWER → stream về frontend

Mỗi bước được hiển thị real-time qua ThinkingCard (icon 🧠) trong chat UI — bạn thấy agent đang nghĩ gì, gọi tool nào, nhận kết quả gì, trước khi câu trả lời cuối xuất hiện. Thay vì “tin mù quáng”, bạn có thể kiểm tra từng bước logic của AI.

5 Thành Phần Cấu Hình Một Agent

Khi tạo agent, bạn đang quyết định 5 thứ sau:

Thành PhầnVai TròVí Dụ
System PromptNhân cách, phạm vi, hành vi“Bạn là trợ lý phân tích doanh thu Ecomobi…”
ModelLLM nào xử lý reasoningClaude Sonnet, GPT-4o, Gemini 2.5 Flash
MCP ToolsKết nối data nội bộaffiliate_stats, query_database, REST APIs
Sub-AgentsAgent con chuyên biệt, gọi như toolAgent tóm tắt, Agent dịch thuật
SkillsHướng dẫn quy trình dạng text (SKILL.md)“Khi user hỏi doanh thu, làm theo các bước…”

💡 Tip: Bật Enable reasoning khi tạo agent để thấy toàn bộ vòng lặp ReAct trong ThinkingCard. Với tác vụ phân tích quan trọng, đây là cách kiểm tra logic AI trước khi tin vào kết quả.


Bước 3: Viết System Prompt Hiệu Quả

System prompt là “bộ não” của agent — model đọc nó trước mỗi lượt suy luận, nên nó ảnh hưởng trực tiếp đến chất lượng output.

Cấu Trúc Khuyến Nghị

# [Tên vai trò]
Mô tả một câu: agent này là ai, làm gì, phục vụ ai.

## Phạm vi
- Những gì agent NÊN làm (bullet points)
- Những gì agent KHÔNG làm (boundary rõ ràng)

## Quy trình xử lý
Các bước cụ thể cho task chính của agent.

## Định dạng output
- Trả lời bằng tiếng Việt, trừ technical terms.
- Số liệu luôn kèm đơn vị (VND, %, ...).
- Dùng markdown table khi có dữ liệu dạng bảng.

Các Lỗi Thường Gặp

LỗiTriệu ChứngCách Sửa
Quá mơ hồAgent trả lời chung chung, không đúng phạm viThêm ví dụ cụ thể và boundary rõ ràng
Quá dài, nhồi nhétAgent bỏ qua một số instructionƯu tiên rule quan trọng nhất, dùng bullet points
Không khai báo output formatMỗi lần format khác nhauKhai báo rõ: table, bullet, markdown, ngôn ngữ
Thiếu boundaryAgent “giúp” những việc không liên quanThêm mục “Khi nào không xử lý”
Thiếu context về toolAgent không biết khi nào gọi tool nàoMô tả ngắn mỗi tool và trigger condition

Ví Dụ Thực Tế — Agent Phân Tích Affiliate

❌ Vague:
"Bạn là trợ lý thông minh, hãy giúp tôi phân tích data."

✅ Cụ thể:
# Affiliate Analytics Assistant
Bạn là trợ lý phân tích hiệu suất affiliate cho team
Performance Marketing và Finance của Ecomobi.

## Phạm vi
- Truy vấn: clicks, conversions, doanh thu, ROI
- So sánh theo kênh, chiến dịch, publisher, khoảng thời gian
- Nhận xét ngắn về trend (tăng/giảm so với kỳ trước)

## Ngoài phạm vi
- Không thực hiện thay đổi dữ liệu (chỉ đọc)
- Không xử lý câu hỏi HR, IT, vận hành không liên quan affiliate

## Output format
- Ngôn ngữ: tiếng Việt
- Số tiền: VND, format có dấu phẩy (1,234,567 VND)
- Luôn ghi rõ khoảng thời gian trong tiêu đề bảng

💡 Tip: Viết system prompt ngắn để định nghĩa nhân cách + boundary tổng quát. Đẩy quy trình nghiệp vụ chi tiết vào Skill riêng — khi quy trình thay đổi, chỉ cần cập nhật SKILL.md mà không phải sửa từng agent.

Link tham khảo: Anthropic Prompting Guide


Bước 4: Gắn Tool & Kết Nối Data Nội Bộ (MCP)

MCP (Model Context Protocol) là cách agent kết nối ra ngoài context window — gọi database, đọc REST API, lấy dữ liệu real-time. Thay vì copy-paste số liệu vào chat, agent tự gọi tool để lấy data mới nhất.

Cách MCP Hoạt Động Trong AgentScope

Agent reasoning: "Tôi cần gọi tool affiliate_stats"
         │
         ▼
engine/MCPManager ──► MCP Server (nội bộ Ecomobi)
         │                    │
         │              Query database / API
         │                    │
         ◄── Tool Result ──────┘
         │
         ▼ (sanitized, tối đa 2000 chars)
Inject vào context của ReAct → iteration tiếp theo

Lưu ý bảo mật: Chỉ có engine Python mới kết nối MCP — frontend không bao giờ chạm vào MCP server trực tiếp. Tool result được sanitize và truncate trước khi đưa vào context model, đảm bảo raw data nội bộ không bao giờ leak ra ngoài.

RBAC — Tại Sao Tôi Không Thấy Tool X?

Không phải mọi người thấy cùng một danh sách tool. RBAC giới hạn theo role:

Finance role   → Được gọi tool đọc báo cáo doanh thu
Agency role    → Được gọi tool đọc data campaign TikTok
Admin          → Bypass tự động, thấy toàn bộ tool

Nếu cần tool mà không thấy trong selector → liên hệ admin để được cấp quyền thêm.

Workflow Admin Thêm MCP Tool Mới

  1. Vào Admin → MCP Servers → thêm server với URL và auth token
  2. Enable server → engine tự discover danh sách tool
  3. Vào Admin → Tool Permissions → cấp tool cho role phù hợp
  4. User thấy tool trong selector khi tạo/sửa agent

💡 Tip: Chỉ gắn tool thực sự cần thiết cho nhiệm vụ của agent. Agent ít tool nhưng đúng mục đích sẽ hoạt động chính xác hơn agent gắn quá nhiều tool không liên quan.


Bước 5: Sub-Agents & Skills — Nâng Cao

Sub-Agents — Uỷ Quyền Cho Chuyên Gia

Sub-agent là một agent độc lập được bọc thành tool, để orchestrator agent gọi như gọi bất kỳ tool nào. Dùng khi một task quá phức tạp để xử lý trong một agent, hoặc cần tư duy chuyên biệt theo từng domain.

Ví dụ kiến trúc multi-agent:

Orchestrator Agent (GPT-4o)
  system_prompt: "Nhận yêu cầu báo cáo tổng hợp, điều phối các agent con"
  tools:
    - ask_data_analyst  → Sub-agent: truy vấn số liệu từ MCP tools
    - ask_writer        → Sub-agent: viết narrative từ số liệu
    - ask_translator    → Sub-agent: dịch output sang ngôn ngữ yêu cầu

Khi orchestrator gọi sub-agent, UI hiển thị SubAgentCard (icon 🤖) — khác với ToolCallCard (icon 🔧) của MCP tools — để bạn phân biệt được “agent đang gọi tool data” hay “agent đang nhờ agent con xử lý”.

Khi nào dùng sub-agent thay vì MCP tool:

Dùng MCP ToolDùng Sub-Agent
Query database, gọi REST APITask cần LLM reasoning phức tạp
Lấy dữ liệu có cấu trúc cố địnhCần system prompt và model riêng
Kết quả trả về nhanh, deterministicTask có thể song song, dispatch cho nhiều agent

Skills — Hướng Dẫn Quy Trình Dạng Text

Skill là file SKILL.md chứa hướng dẫn step-by-step mà agent đọc tại runtime. Khác với system prompt viết một lần trong agent config, skill có thể tái sử dụng giữa nhiều agentcập nhật tập trung mà không cần sửa từng agent.

Cách skill hoạt động:

Agent nhận task → REASON:
  "Task này liên quan đến affiliate report.
   Tôi sẽ đọc SKILL.md trước."
         │
         ▼
view_text_file("ecomobi-affiliate-report/SKILL.md")
         │
         ▼
Agent đọc quy trình → thực hiện đúng từng bước

So sánh System Prompt vs Skill:

System PromptSkill (SKILL.md)
ScopeToàn bộ agent, mọi taskMột loại task cụ thể
Thay đổiPhải sửa từng agentCập nhật một file, áp dụng cho tất cả agent dùng skill đó
Tái sử dụngKhông (gắn liền với agent)Có — nhiều agent share cùng skill
Khi nào dùngNhân cách, giọng điệu, boundary tổng quátQuy trình nghiệp vụ chi tiết theo loại request

💡 Tip: Khi một quy trình nghiệp vụ được nhiều agent cần dùng (ví dụ: cách lấy báo cáo affiliate), hãy đưa vào SKILL.md. Khi quy trình thay đổi, chỉ cần update một file — không đụng đến agent config nào cả.


Bước 6: Chat, Xuất Report & Clone Agent

Chat Với Agent

Bấm vào agent → gõ câu hỏi → kết quả hiển thị real-time token-by-token qua SSE streaming. Trong chat, bạn sẽ thấy 3 loại card:

CardIconHiển Thị Gì
ThinkingCard🧠 BrainTừng bước reasoning của AI (collapsible)
ToolCallCard🔧 WrenchTool đang được gọi, status, result
SubAgentCard🤖 BotKhi agent chính gọi thêm sub-agent

Agent cũng có long-term memory theo từng cặp (agent, user) — nhớ ngữ cảnh từ các cuộc hội thoại trước, không cần giải thích lại bối cảnh mỗi lần chat mới.

Xuất Report PDF

AgentScope tự detect khi agent trả về dữ liệu dạng bảng. Nút Create Report xuất hiện dưới message — bấm vào để mở trang report với DataTable (filter + sort) và biểu đồ tự động (Recharts). Bấm Export PDF để tải về dùng ngay cho meeting hoặc email.

💡 Tip: Để report có đủ biểu đồ, yêu cầu agent trả về bảng với cột số liệu rõ ràng. Ví dụ: “Trả về bảng gồm các cột: SKU, GMV, GPM, AOV, số đơn.”

Clone Agent Của Người Khác

Tình HuốngNên Làm Gì
Muốn dùng agent của đồng nghiệp, không cần chỉnhChat trực tiếp, không cần clone
Muốn chỉnh system prompt / model / tool listClone → sửa trong workspace riêng
Muốn lấy làm starting point cho teamClone → cập nhật → đổi visibility thành shared

Dành Cho Admin — Quản Lý & Đánh Giá Chất Lượng

Công Cụ Admin

Tính NăngMô Tả
MCP Server CRUDThêm / sửa / xoá data source kết nối vào engine
Role & Tool PermissionsCấp tool nào cho role nào
Menu Permissions GridTick chọn menu nào role nào nhìn thấy
Evaluation SystemĐo chất lượng agent bằng ACEBench

Evaluation System — Ra Quyết Định Bằng Metric Thực

Khi cần chọn giữa 2 cấu hình agent (khác model hoặc khác system prompt), đừng đoán mò:

Admin tạo evaluation run
         │
Chọn agent + bộ test case chuẩn (ACEBench)
         │
Hệ thống trả về:
  • Accuracy        → Kết quả cuối đúng không?
  • Process Accuracy → Agent đi đúng luồng không?
         │
So sánh metric giữa các agent/model → Ra quyết định

Best Practices Summary

DO ✓

  1. Browse Agent Library trước khi tạo mới — tránh làm lại việc đã có
  2. Viết system prompt có cấu trúc rõ ràng — vai trò, phạm vi, output format, boundary
  3. Bật reasoning với tác vụ phân tích quan trọng — kiểm tra logic AI qua ThinkingCard
  4. Đẩy quy trình nghiệp vụ vào SKILL.md — tái sử dụng và cập nhật tập trung
  5. Clone và chia sẻ agent đã được cải thiện — đổi visibility sang shared để cả team hưởng lợi

DON’T ✗

  1. Paste data nội bộ nhạy cảm lên ChatGPT public khi đã có AgentScope
  2. Gắn quá nhiều tool không liên quan vào một agent
  3. Dùng system prompt vague kiểu “hãy giúp tôi làm việc hiệu quả hơn”
  4. Nhồi nhét toàn bộ quy trình nghiệp vụ vào system prompt thay vì dùng Skill
  5. Giữ agent hay ở visibility private — chia sẻ để cả team được lợi

FAQ Nhanh

Dữ liệu có bị gửi ra ngoài không? Prompt chat sẽ đến LLM provider (Anthropic / OpenAI / Google) để sinh response — điều này không tránh được khi dùng API LLM. Nhưng dữ liệu nội bộ từ MCP tool không bao giờ bị đẩy raw lên LLM — engine sanitize result trước khi inject vào context.

Tại sao không thấy tool X? RBAC giới hạn tool theo role. Liên hệ admin để được cấp quyền thêm.

Agent có nhớ conversation trước không? Có — long-term memory lưu theo từng cặp (agent, user). User mới thì memory rỗng, agent vẫn chạy bình thường.

Khi nào dùng sub-agent thay vì MCP tool? Khi task cần LLM reasoning phức tạp, hoặc cần agent con có system prompt và model riêng biệt.

Khi nào nên clone thay vì dùng trực tiếp? Khi muốn chỉnh system prompt, model, hoặc tool list mà không ảnh hưởng bản gốc của người khác.

Làm sao biết agent nào hoạt động tốt hơn? Dùng Evaluation System (admin): tạo evaluation run với ACEBench, so sánh metric AccuracyProcess Accuracy giữa các cấu hình.


Checklist Bắt Đầu

□ Đăng nhập bằng tài khoản @ecomobi.com
□ Browse Agent Library trước khi tạo mới
□ Hiểu vòng lặp ReAct — bật reasoning để xem ThinkingCard
□ Viết system prompt có cấu trúc: vai trò + phạm vi + output format
□ Chỉ gắn tool thực sự cần thiết, không gắn thừa
□ Đẩy quy trình nghiệp vụ phức tạp vào SKILL.md
□ Clone agent hay → chỉnh → đổi visibility thành shared
□ Export PDF khi cần gửi report cho meeting / email

Core Value: Nhân viên Ecomobi tự tạo và sử dụng AI agent kết nối vào dữ liệu nội bộ — không cần IT can thiệp, không rò rỉ dữ liệu ra ngoài.

Related Posts