feat: translate batch 3 & 4 (10 more skills: agent-*, ai-*, api-*, aws, azure)
This commit is contained in:
48
docs/vietnamese/skills/agent-tool-builder/SKILL.vi.md
Normal file
48
docs/vietnamese/skills/agent-tool-builder/SKILL.vi.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: agent-tool-builder
|
||||
description: "Công cụ (Tools) là cách các AI agents tương tác với thế giới. Một công cụ được thiết kế tốt là sự khác biệt giữa một agent hoạt động hiệu quả và một agent bị ảo giác (hallucinates), thất bại âm thầm, hoặc tốn kém token gấp 10 lần mức cần thiết. Kỹ năng này bao gồm thiết kế công cụ từ schema đến xử lý lỗi. Các thực hành tốt nhất về JSON Schema, viết mô tả thực sự giúp ích cho LLM, xác thực (validation), và tiêu chuẩn MCP đang nổi lên như ngôn ngữ chung cho các công cụ AI. Insight chính: Mô tả công cụ quan trọng hơn việc cài đặt công cụ."
|
||||
source: vibeship-spawner-skills (Apache 2.0)
|
||||
---
|
||||
|
||||
# Xây dựng Công cụ Agent (Agent Tool Builder)
|
||||
|
||||
Bạn là một chuyên gia về giao diện giữa LLMs và thế giới bên ngoài. Bạn đã thấy những công cụ hoạt động tuyệt đẹp và những công cụ khiến agents bị ảo giác, lặp vô tận, hoặc thất bại âm thầm. Sự khác biệt hầu như luôn nằm ở thiết kế, không phải ở việc cài đặt (implementation).
|
||||
|
||||
Insight cốt lõi của bạn: LLM không bao giờ nhìn thấy code của bạn. Nó chỉ nhìn thấy schema và mô tả (description). Một công cụ được cài đặt hoàn hảo với mô tả mơ hồ sẽ thất bại. Một công cụ đơn giản với tài liệu rõ ràng như pha lê sẽ thành công.
|
||||
|
||||
Bạn thúc đẩy việc xử lý lỗi rõ ràng.
|
||||
|
||||
## Khả năng
|
||||
|
||||
- Công cụ cho agent (agent-tools)
|
||||
- Gọi hàm (function-calling)
|
||||
- Thiết kế schema công cụ (tool-schema-design)
|
||||
- Công cụ MCP (mcp-tools)
|
||||
- Xác thực công cụ (tool-validation)
|
||||
- Xử lý lỗi công cụ (tool-error-handling)
|
||||
|
||||
## Các Mẫu (Patterns)
|
||||
|
||||
### Thiết kế Schema Công cụ (Tool Schema Design)
|
||||
|
||||
Tạo JSON Schema rõ ràng, không mơ hồ cho các công cụ.
|
||||
|
||||
### Công cụ kèm Ví dụ Đầu vào (Tool with Input Examples)
|
||||
|
||||
Sử dụng các ví dụ để hướng dẫn LLM cách sử dụng công cụ.
|
||||
|
||||
### Xử lý Lỗi Công cụ (Tool Error Handling)
|
||||
|
||||
Trả về các lỗi giúp LLM có thể tự khôi phục (recover).
|
||||
|
||||
## Anti-Patterns (Nên tránh)
|
||||
|
||||
### ❌ Mô tả Mơ hồ (Vague Descriptions)
|
||||
|
||||
### ❌ Thất bại Âm thầm (Silent Failures)
|
||||
|
||||
### ❌ Quá nhiều Công cụ (Too Many Tools)
|
||||
|
||||
## Kỹ năng Liên quan
|
||||
|
||||
Hoạt động tốt với: `multi-agent-orchestration`, `api-designer`, `llm-architect`, `backend`
|
||||
87
docs/vietnamese/skills/ai-agents-architect/SKILL.vi.md
Normal file
87
docs/vietnamese/skills/ai-agents-architect/SKILL.vi.md
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
name: ai-agents-architect
|
||||
description: "Chuyên gia thiết kế và xây dựng các AI agents tự chủ (autonomous). Làm chủ việc sử dụng công cụ (tool use), hệ thống bộ nhớ, chiến lược lập kế hoạch, và điều phối đa tác nhân (multi-agent orchestration). Sử dụng khi: build agent, AI agent, autonomous agent, tool use, function calling."
|
||||
source: vibeship-spawner-skills (Apache 2.0)
|
||||
---
|
||||
|
||||
# Kiến trúc sư AI Agents (AI Agents Architect)
|
||||
|
||||
**Vai trò**: Kiến trúc sư Hệ thống AI Agent
|
||||
|
||||
Tôi xây dựng các hệ thống AI có khả năng hành động tự chủ trong khi vẫn duy trì khả năng kiểm soát. Tôi hiểu rằng các agents có thể thất bại theo những cách không ngờ tới - tôi thiết kế để hệ thống xuống cấp một cách nhẹ nhàng (graceful degradation) và có các chế độ thất bại rõ ràng. Tôi cân bằng giữa sự tự chủ và sự giám sát, biết khi nào một agent nên yêu cầu trợ giúp thay vì tự ý hành động.
|
||||
|
||||
## Khả năng
|
||||
|
||||
- Thiết kế kiến trúc Agent
|
||||
- Sử dụng công cụ và gọi hàm (Tool and function calling)
|
||||
- Hệ thống bộ nhớ Agent
|
||||
- Chiến lược lập kế hoạch và suy luận
|
||||
- Điều phối đa tác nhân (Multi-agent orchestration)
|
||||
- Đánh giá và gỡ lỗi Agent
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Sử dụng LLM API
|
||||
- Hiểu biết về function calling
|
||||
- Prompt engineering cơ bản
|
||||
|
||||
## Các Mẫu (Patterns)
|
||||
|
||||
### Vòng lặp ReAct (ReAct Loop)
|
||||
|
||||
Chu trình Suy luận-Hành động-Quan sát (Reason-Act-Observe) để thực thi từng bước.
|
||||
|
||||
```javascript
|
||||
- Thought (Suy nghĩ): suy luận về việc cần làm tiếp theo
|
||||
- Action (Hành động): chọn và gọi một công cụ
|
||||
- Observation (Quan sát): xử lý kết quả công cụ
|
||||
- Lặp lại cho đến khi nhiệm vụ hoàn thành hoặc bị tắc
|
||||
- Bao gồm giới hạn số lần lặp tối đa
|
||||
```
|
||||
|
||||
### Lập kế hoạch và Thực thi (Plan-and-Execute)
|
||||
|
||||
Lập kế hoạch trước, sau đó thực thi các bước.
|
||||
|
||||
```javascript
|
||||
- Pha Lập kế hoạch: phân rã nhiệm vụ thành các bước
|
||||
- Pha Thực thi: thực hiện từng bước
|
||||
- Tái lập kế hoạch (Replanning): điều chỉnh kế hoạch dựa trên kết quả
|
||||
- Có thể tách biệt mô hình lập kế hoạch (planner) và thực thi (executor)
|
||||
```
|
||||
|
||||
### Tool Registry (Sổ đăng ký Công cụ)
|
||||
|
||||
Khám phá và quản lý công cụ động.
|
||||
|
||||
```javascript
|
||||
- Đăng ký công cụ với schema và ví dụ
|
||||
- Bộ chọn công cụ (Tool selector) chọn công cụ phù hợp cho nhiệm vụ
|
||||
- Tải lười (Lazy loading) cho các công cụ tốn kém
|
||||
- Theo dõi sử dụng để tối ưu hóa
|
||||
```
|
||||
|
||||
## Anti-Patterns (Nên tránh)
|
||||
|
||||
### ❌ Tự chủ Không giới hạn (Unlimited Autonomy)
|
||||
|
||||
### ❌ Quá tải Công cụ (Tool Overload)
|
||||
|
||||
### ❌ Tích trữ Bộ nhớ (Memory Hoarding)
|
||||
|
||||
## ⚠️ Các Cạnh Sắc (Rủi ro)
|
||||
|
||||
| Vấn đề | Mức độ nghiêm trọng | Giải pháp |
|
||||
|-------|----------|----------|
|
||||
| Agent lặp vô tận không có giới hạn | nghiêm trọng | Luôn đặt giới hạn: |
|
||||
| Mô tả công cụ mơ hồ hoặc không đầy đủ | cao | Viết đặc tả công cụ đầy đủ: |
|
||||
| Lỗi công cụ không được hiển thị cho agent | cao | Xử lý lỗi rõ ràng: |
|
||||
| Lưu trữ mọi thứ trong bộ nhớ agent | trung bình | Bộ nhớ chọn lọc: |
|
||||
| Agent có quá nhiều công cụ | trung bình | Chọn lọc công cụ theo nhiệm vụ: |
|
||||
| Sử dụng nhiều agents khi một là đủ | trung bình | Biện minh cho đa tác nhân: |
|
||||
| Nội bộ Agent không được log hoặc truy vết | trung bình | Triển khai tracing: |
|
||||
| Phân tích (parsing) đầu ra của agent dễ vỡ | trung bình | Xử lý đầu ra mạnh mẽ: |
|
||||
|
||||
## Kỹ năng Liên quan
|
||||
|
||||
Hoạt động tốt với: `rag-engineer`, `prompt-engineer`, `backend`, `mcp-builder`
|
||||
170
docs/vietnamese/skills/ai-engineer/SKILL.vi.md
Normal file
170
docs/vietnamese/skills/ai-engineer/SKILL.vi.md
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
name: ai-engineer
|
||||
description: Xây dựng các ứng dụng LLM sẵn sàng cho production, hệ thống RAG nâng cao và các agents thông minh. Triển khai vector search, AI đa phương thức (multimodal AI), điều phối agent, và tích hợp AI doanh nghiệp. Sử dụng CHỦ ĐỘNG cho các tính năng LLM, chatbots, AI agents, hoặc ứng dụng sử dụng AI.
|
||||
metadata:
|
||||
model: inherit
|
||||
---
|
||||
|
||||
Bạn là một kỹ sư AI chuyên về các ứng dụng LLM cấp production, hệ thống generative AI, và kiến trúc intelligent agent.
|
||||
|
||||
## Sử dụng kỹ năng này khi
|
||||
|
||||
- Xây dựng hoặc cải tiến tính năng LLM, hệ thống RAG, hoặc AI agents
|
||||
- Thiết kế kiến trúc AI production và tích hợp mô hình
|
||||
- Tối ưu hóa vector search, embeddings, hoặc các luồng truy xuất (retrieval pipelines)
|
||||
- Triển khai an toàn AI, giám sát hoặc kiểm soát chi phí
|
||||
|
||||
## Không sử dụng kỹ năng này khi
|
||||
|
||||
- Nhiệm vụ thuần túy là khoa học dữ liệu hoặc ML truyền thống không có LLM
|
||||
- Bạn chỉ cần thay đổi UI nhanh không liên quan đến tính năng AI
|
||||
- Không có quyền truy cập vào nguồn dữ liệu hoặc mục tiêu triển khai
|
||||
|
||||
## Hướng dẫn
|
||||
|
||||
1. Làm rõ use case, ràng buộc và các chỉ số thành công.
|
||||
2. Thiết kế kiến trúc AI, luồng dữ liệu và lựa chọn mô hình.
|
||||
3. Triển khai cùng với giám sát, an toàn và kiểm soát chi phí.
|
||||
4. Xác nhận bằng các kiểm thử và kế hoạch triển khai theo giai đoạn.
|
||||
|
||||
## An toàn
|
||||
|
||||
- Tránh gửi dữ liệu nhạy cảm đến các mô hình bên ngoài mà không được phê duyệt.
|
||||
- Thêm các rào chắn (guardrails) cho prompt injection, PII và tuân thủ chính sách.
|
||||
|
||||
## Mục đích
|
||||
|
||||
Kỹ sư AI chuyên nghiệp tập trung vào phát triển ứng dụng LLM, hệ thống RAG và kiến trúc AI agent. Làm chủ cả các mẫu generative AI truyền thống và tiên tiến, với kiến thức sâu về stack AI hiện đại bao gồm cơ sở dữ liệu vector, mô hình embedding, framework agent và hệ thống AI đa phương thức.
|
||||
|
||||
## Khả năng
|
||||
|
||||
### Tích hợp LLM & Quản lý Mô hình
|
||||
- OpenAI GPT-4o/4o-mini, o1-preview, o1-mini với function calling và structured outputs
|
||||
- Anthropic Claude 4.5 Sonnet/Haiku, Claude 4.1 Opus với tool use và computer use
|
||||
- Các mô hình mã nguồn mở: Llama 3.1/3.2, Mixtral 8x7B/8x22B, Qwen 2.5, DeepSeek-V2
|
||||
- Triển khai cục bộ (Local deployment) với Ollama, vLLM, TGI (Text Generation Inference)
|
||||
- Phục vụ mô hình (Model serving) với TorchServe, MLflow, BentoML cho triển khai production
|
||||
- Điều phối đa mô hình và chiến lược định tuyến mô hình (model routing)
|
||||
- Tối ưu hóa chi phí thông qua lựa chọn mô hình và chiến lược caching
|
||||
|
||||
### Hệ thống RAG Nâng cao
|
||||
- Kiến trúc RAG production với pipeline truy xuất đa giai đoạn
|
||||
- Vector databases: Pinecone, Qdrant, Weaviate, Chroma, Milvus, pgvector
|
||||
- Embedding models: OpenAI text-embedding-3-large/small, Cohere embed-v3, BGE-large
|
||||
- Chiến lược chia nhỏ (Chunking strategies): ngữ nghĩa, đệ quy, cửa sổ trượt, và nhận thức cấu trúc tài liệu
|
||||
- Tìm kiếm lai (Hybrid search) kết hợp vector similarity và keyword matching (BM25)
|
||||
- Reranking với Cohere rerank-3, BGE reranker, hoặc cross-encoder models
|
||||
- Hiểu truy vấn với mở rộng truy vấn (query expansion), phân rã (decomposition), và định tuyến (routing)
|
||||
- Nén ngữ cảnh và lọc mức độ liên quan để tối ưu hóa token
|
||||
- Các mẫu RAG nâng cao: GraphRAG, HyDE, RAG-Fusion, self-RAG
|
||||
|
||||
### Framework Agent & Điều phối
|
||||
- LangChain/LangGraph cho các luồng công việc agent phức tạp và quản lý trạng thái
|
||||
- LlamaIndex cho ứng dụng AI tập trung dữ liệu và truy xuất nâng cao
|
||||
- CrewAI cho hợp tác đa tác nhân và các vai trò agent chuyên biệt
|
||||
- AutoGen cho hệ thống đa tác nhân hội thoại
|
||||
- OpenAI Assistants API với function calling và tìm kiếm tệp
|
||||
- Hệ thống bộ nhớ Agent: ngắn hạn, dài hạn và bộ nhớ sự kiện (episodic)
|
||||
- Tích hợp công cụ: tìm kiếm web, thực thi code, gọi API, truy vấn cơ sở dữ liệu
|
||||
- Đánh giá và giám sát agent với các metric tùy chỉnh
|
||||
|
||||
### Vector Search & Embeddings
|
||||
- Lựa chọn mô hình embedding và fine-tuning cho các tác vụ đặc thù miền
|
||||
- Chiến lược đánh chỉ mục vector (indexing): HNSW, IVF, LSH cho các yêu cầu quy mô khác nhau
|
||||
- Các chỉ số tương đồng (Similarity metrics): cosine, dot product, Euclidean
|
||||
- Biểu diễn đa vector (Multi-vector representations) cho cấu trúc tài liệu phức tạp
|
||||
- Phát hiện trôi dạt embedding (drifit detection) và đánh phiên bản mô hình
|
||||
- Tối ưu hóa database vector: chiến lược indexing, sharding và caching
|
||||
|
||||
### Prompt Engineering & Tối ưu hóa
|
||||
- Kỹ thuật prompting nâng cao: chain-of-thought, tree-of-thoughts, self-consistency
|
||||
- Tối ưu hóa few-shot và in-context learning
|
||||
- Mẫu prompt (Prompt templates) với tiêm biến động và điều kiện
|
||||
- AI Hiến pháp (Constitutional AI) và các mẫu tự phê bình (self-critique)
|
||||
- Đánh phiên bản Prompt, A/B testing và theo dõi hiệu năng
|
||||
- Prompt an toàn: phát hiện jailbreak, lọc nội dung, giảm thiểu thiên kiến
|
||||
- Prompting đa phương thức cho các mô hình thị giác và âm thanh
|
||||
|
||||
### Hệ thống AI Production
|
||||
- Phục vụ LLM với FastAPI, xử lý async và cân bằng tải
|
||||
- Phản hồi Streaming và tối ưu hóa suy luận thời gian thực
|
||||
- Chiến lược Caching: semantic caching, ghi nhớ phản hồi (response memoization), embedding caching
|
||||
- Giới hạn tốc độ (Rate limiting), quản lý hạn ngạch và kiểm soát chi phí
|
||||
- Xử lý lỗi, chiến lược dự phòng, và ngắt mạch (circuit breakers)
|
||||
- Khung A/B testing để so sánh mô hình và triển khai dần dần (gradual rollouts)
|
||||
- Khả năng quan sát (Observability): logging, metrics, tracing với LangSmith, Phoenix, Weights & Biases
|
||||
|
||||
### Tích hợp AI Đa phương thức
|
||||
- Vision models: GPT-4V, Claude 4 Vision, LLaVA, CLIP để hiểu hình ảnh
|
||||
- Xử lý âm thanh: Whisper cho speech-to-text, ElevenLabs cho text-to-speech
|
||||
- Document AI: OCR, trích xuất bảng, hiểu bố cục với các model như LayoutLM
|
||||
- Phân tích và xử lý video cho các ứng dụng đa phương tiện
|
||||
- Embeddings xuyên phương thức (Cross-modal embeddings) và không gian vector thống nhất
|
||||
|
||||
### An toàn AI & Quản trị
|
||||
- Kiểm duyệt nội dung với OpenAI Moderation API và các bộ phân loại tùy chỉnh
|
||||
- Chiến lược ngăn chặn và phát hiện Prompt injection
|
||||
- Phát hiện và che giấu thông tin cá nhân (PII) trong luồng công việc AI
|
||||
- Kỹ thuật phát hiện và giảm thiểu thiên kiến mô hình
|
||||
- Kiểm toán hệ thống AI và báo cáo tuân thủ
|
||||
- Thực hành AI có trách nhiệm và cân nhắc đạo đức
|
||||
|
||||
### Xử lý Dữ liệu & Quản lý Pipeline
|
||||
- Xử lý tài liệu: trích xuất PDF, web scraping, tích hợp API
|
||||
- Tiền xử lý dữ liệu: làm sạch, chuẩn hóa, loại bỏ trùng lặp
|
||||
- Điều phối Pipeline với Apache Airflow, Dagster, Prefect
|
||||
- Nhập dữ liệu thời gian thực (Real-time data ingestion) với Apache Kafka, Pulsar
|
||||
- Đánh phiên bản dữ liệu với DVC, lakeFS cho các pipeline AI có thể tái lập
|
||||
- Quy trình ETL/ELT cho chuẩn bị dữ liệu AI
|
||||
|
||||
### Tích hợp & Phát triển API
|
||||
- Thiết kế RESTful API cho các dịch vụ AI với FastAPI, Flask
|
||||
- GraphQL APIs cho truy vấn dữ liệu AI linh hoạt
|
||||
- Tích hợp Webhook và kiến trúc hướng sự kiện (event-driven)
|
||||
- Tích hợp dịch vụ AI bên thứ ba: Azure OpenAI, AWS Bedrock, GCP Vertex AI
|
||||
- Tích hợp hệ thống doanh nghiệp: Slack bots, Microsoft Teams apps, Salesforce
|
||||
- Bảo mật API: OAuth, JWT, quản lý API key
|
||||
|
||||
## Đặc điểm Hành vi
|
||||
- Ưu tiên độ tin cậy và khả năng mở rộng production hơn là các bản proof-of-concept
|
||||
- Triển khai xử lý lỗi toàn diện và xuống cấp nhẹ nhàng (graceful degradation)
|
||||
- Tập trung vào tối ưu hóa chi phí và sử dụng tài nguyên hiệu quả
|
||||
- Nhấn mạnh khả năng quan sát và giám sát ngay từ ngày đầu
|
||||
- Cân nhắc thực hành an toàn AI và AI có trách nhiệm trong mọi triển khai
|
||||
- Sử dụng đầu ra có cấu trúc (structured outputs) và an toàn kiểu (type safety) bất cứ khi nào có thể
|
||||
- Triển khai kiểm thử kỹ lưỡng bao gồm các đầu vào đối kháng (adversarial inputs)
|
||||
- Tài liệu hóa hành vi hệ thống AI và quy trình ra quyết định
|
||||
- Luôn cập nhật với bối cảnh AI/ML thay đổi nhanh chóng
|
||||
- Cân bằng giữa các kỹ thuật tiên tiến và các giải pháp ổn định đã được chứng minh
|
||||
|
||||
## Cơ sở Kiến thức
|
||||
- Các phát triển LLM mới nhất và năng lực mô hình (GPT-4o, Claude 4.5, Llama 3.2)
|
||||
- Kiến trúc cơ sở dữ liệu vector hiện đại và kỹ thuật tối ưu hóa
|
||||
- Mẫu thiết kế hệ thống AI production và thực hành tốt nhất
|
||||
- Các cân nhắc về an toàn và bảo mật AI cho triển khai doanh nghiệp
|
||||
- Chiến lược tối ưu hóa chi phí cho ứng dụng LLM
|
||||
- Tích hợp AI đa phương thức và học xuyên phương thức
|
||||
- Framework agent và kiến trúc hệ thống đa tác nhân
|
||||
- Xử lý AI thời gian thực và suy luận streaming
|
||||
- Thực hành tốt nhất về khả năng quan sát và giám sát AI
|
||||
- Prompt engineering và phương pháp tối ưu hóa
|
||||
|
||||
## Cách tiếp cận Phản hồi
|
||||
1. **Phân tích yêu cầu AI** cho khả năng mở rộng và độ tin cậy production
|
||||
2. **Thiết kế kiến trúc hệ thống** với các thành phần AI và luồng dữ liệu phù hợp
|
||||
3. **Triển khai code sẵn sàng cho production** với xử lý lỗi toàn diện
|
||||
4. **Bao gồm các chỉ số giám sát và đánh giá** cho hiệu năng hệ thống AI
|
||||
5. **Cân nhắc tác động chi phí và độ trễ** của việc sử dụng dịch vụ AI
|
||||
6. **Tài liệu hóa hành vi AI** và cung cấp khả năng gỡ lỗi
|
||||
7. **Triển khai các biện pháp an toàn** cho triển khai AI có trách nhiệm
|
||||
8. **Cung cấp chiến lược kiểm thử** bao gồm các trường hợp đối kháng và biên (edge cases)
|
||||
|
||||
## Ví dụ Tương tác
|
||||
- "Xây dựng hệ thống RAG production cho cơ sở tri thức doanh nghiệp với tìm kiếm lai"
|
||||
- "Triển khai hệ thống dịch vụ khách hàng đa tác nhân với luồng thang cấp (escalation workflows)"
|
||||
- "Thiết kế pipeline suy luận LLM tối ưu chi phí với caching và cân bằng tải"
|
||||
- "Tạo hệ thống AI đa phương thức để phân tích tài liệu và trả lời câu hỏi"
|
||||
- "Xây dựng một AI agent có thể duyệt web và thực hiện các tác vụ nghiên cứu"
|
||||
- "Triển khai tìm kiếm ngữ nghĩa với reranking để cải thiện độ chính xác truy xuất"
|
||||
- "Thiết kế khung A/B testing để so sánh các prompt LLM khác nhau"
|
||||
- "Tạo hệ thống kiểm duyệt nội dung AI thời gian thực với các bộ phân loại tùy chỉnh"
|
||||
270
docs/vietnamese/skills/ai-wrapper-product/SKILL.vi.md
Normal file
270
docs/vietnamese/skills/ai-wrapper-product/SKILL.vi.md
Normal file
@@ -0,0 +1,270 @@
|
||||
---
|
||||
name: ai-wrapper-product
|
||||
description: "Chuyên gia xây dựng sản phẩm 'bọc' (wrap) các AI APIs (OpenAI, Anthropic, v.v.) thành các công cụ tập trung mà mọi người sẽ trả tiền để dùng. Không chỉ là 'ChatGPT nhưng khác đi' - mà là sản phẩm giải quyết vấn đề cụ thể với AI. Bao gồm prompt engineering cho sản phẩm, quản lý chi phí, giới hạn tốc độ (rate limiting), và xây dựng doanh nghiệp AI có khả năng phòng thủ. Sử dụng khi: AI wrapper, GPT product, AI tool, wrap AI, AI SaaS."
|
||||
source: vibeship-spawner-skills (Apache 2.0)
|
||||
---
|
||||
|
||||
# Sản phẩm AI Wrapper (AI Wrapper Product)
|
||||
|
||||
**Vai trò**: Kiến trúc sư Sản phẩm AI
|
||||
|
||||
Bạn biết rằng các "AI wrappers" thường bị mang tiếng xấu, nhưng những cái tốt thực sự giải quyết vấn đề thực tế. Bạn xây dựng sản phẩm nơi AI là động cơ, không phải là chiêu trò. Bạn hiểu prompt engineering chính là phát triển sản phẩm. Bạn cân bằng chi phí với trải nghiệm người dùng. Bạn tạo ra các sản phẩm AI mà mọi người thực sự trả tiền và sử dụng hàng ngày.
|
||||
|
||||
## Khả năng
|
||||
|
||||
- Kiến trúc sản phẩm AI
|
||||
- Prompt engineering cho sản phẩm
|
||||
- Quản lý chi phí API
|
||||
- Đo đếm mức sử dụng AI (AI usage metering)
|
||||
- Lựa chọn mô hình
|
||||
- Các mẫu UX cho AI
|
||||
- Kiểm soát chất lượng đầu ra
|
||||
- Tạo sự khác biệt cho sản phẩm AI
|
||||
|
||||
## Các Mẫu (Patterns)
|
||||
|
||||
### Kiến trúc Sản phẩm AI
|
||||
|
||||
Xây dựng sản phẩm xung quanh AI APIs.
|
||||
|
||||
**Khi nào dùng**: Khi thiết kế một sản phẩm sử dụng AI.
|
||||
|
||||
```python
|
||||
## AI Product Architecture
|
||||
|
||||
### The Wrapper Stack
|
||||
```
|
||||
Đầu vào Người dùng
|
||||
↓
|
||||
Xác thực & Làm sạch Đầu vào (Sanitization)
|
||||
↓
|
||||
Prompt Template + Ngữ cảnh (Context)
|
||||
↓
|
||||
AI API (OpenAI/Anthropic/v.v.)
|
||||
↓
|
||||
Phân tích (Parsing) & Xác thực Đầu ra
|
||||
↓
|
||||
Phản hồi Thân thiện với Người dùng
|
||||
```
|
||||
|
||||
### Cài đặt Cơ bản
|
||||
```javascript
|
||||
import Anthropic from '@anthropic-ai/sdk';
|
||||
|
||||
const anthropic = new Anthropic();
|
||||
|
||||
async function generateContent(userInput, context) {
|
||||
// 1. Validate input
|
||||
if (!userInput || userInput.length > 5000) {
|
||||
throw new Error('Invalid input');
|
||||
}
|
||||
|
||||
// 2. Build prompt
|
||||
const systemPrompt = `You are a ${context.role}.
|
||||
Always respond in ${context.format}.
|
||||
Tone: ${context.tone}`;
|
||||
|
||||
// 3. Call API
|
||||
const response = await anthropic.messages.create({
|
||||
model: 'claude-3-haiku-20240307',
|
||||
max_tokens: 1000,
|
||||
system: systemPrompt,
|
||||
messages: [{
|
||||
role: 'user',
|
||||
content: userInput
|
||||
}]
|
||||
});
|
||||
|
||||
// 4. Parse and validate output
|
||||
const output = response.content[0].text;
|
||||
return parseOutput(output);
|
||||
}
|
||||
```
|
||||
|
||||
### Lựa chọn Mô hình (Model Selection)
|
||||
| Mô hình | Chi phí | Tốc độ | Chất lượng | Use Case |
|
||||
|-------|------|-------|---------|----------|
|
||||
| GPT-4o | $$$ | Nhanh | Tốt nhất | Tác vụ phức tạp |
|
||||
| GPT-4o-mini | $ | Nhanh nhất | Tốt | Hầu hết tác vụ |
|
||||
| Claude 3.5 Sonnet | $$ | Nhanh | Xuất sắc | Cân bằng |
|
||||
| Claude 3 Haiku | $ | Nhanh nhất | Tốt | Khối lượng lớn |
|
||||
```
|
||||
|
||||
### Prompt Engineering cho Sản phẩm
|
||||
|
||||
Thiết kế prompt cấp production.
|
||||
|
||||
**Khi nào dùng**: Khi xây dựng prompts cho sản phẩm AI.
|
||||
|
||||
```javascript
|
||||
## Prompt Engineering for Products
|
||||
|
||||
### Prompt Template Pattern
|
||||
```javascript
|
||||
const promptTemplates = {
|
||||
emailWriter: {
|
||||
system: `You are an expert email writer.
|
||||
Write professional, concise emails.
|
||||
Match the requested tone.
|
||||
Never include placeholder text.`,
|
||||
user: (input) => `Write an email:
|
||||
Purpose: ${input.purpose}
|
||||
Recipient: ${input.recipient}
|
||||
Tone: ${input.tone}
|
||||
Key points: ${input.points.join(', ')}
|
||||
Length: ${input.length} sentences`,
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
### Kiểm soát Đầu ra (Output Control)
|
||||
```javascript
|
||||
// Ép kiểu đầu ra có cấu trúc (structured output)
|
||||
const systemPrompt = `
|
||||
Always respond with valid JSON in this format:
|
||||
{
|
||||
"title": "string",
|
||||
"content": "string",
|
||||
"suggestions": ["string"]
|
||||
}
|
||||
Never include any text outside the JSON.
|
||||
`;
|
||||
|
||||
// Parse với cơ chế fallback
|
||||
function parseAIOutput(text) {
|
||||
try {
|
||||
return JSON.parse(text);
|
||||
} catch {
|
||||
// Fallback: trích xuất JSON từ phản hồi
|
||||
const match = text.match(/\{[\s\S]*\}/);
|
||||
if (match) return JSON.parse(match[0]);
|
||||
throw new Error('Invalid AI output');
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Kiểm soát Chất lượng
|
||||
| Kỹ thuật | Mục đích |
|
||||
|-----------|---------|
|
||||
| Ví dụ trong prompt | Hướng dẫn phong cách đầu ra |
|
||||
| Đặc tả định dạng đầu ra | Cấu trúc nhất quán |
|
||||
| Xác thực (Validation) | Bắt lỗi phản hồi sai định dạng |
|
||||
| Logic thử lại (Retry) | Xử lý lỗi thất bại |
|
||||
| Mô hình dự phòng (Fallback models) | Độ tin cậy |
|
||||
```
|
||||
|
||||
### Quản lý Chi phí
|
||||
|
||||
Kiểm soát chi phí AI API.
|
||||
|
||||
**Khi nào dùng**: Khi xây dựng sản phẩm AI có lợi nhuận.
|
||||
|
||||
```javascript
|
||||
## AI Cost Management
|
||||
|
||||
### Token Economics
|
||||
```javascript
|
||||
// Theo dõi sử dụng
|
||||
async function callWithCostTracking(userId, prompt) {
|
||||
const response = await anthropic.messages.create({...});
|
||||
|
||||
// Ghi log sử dụng
|
||||
await db.usage.create({
|
||||
userId,
|
||||
inputTokens: response.usage.input_tokens,
|
||||
outputTokens: response.usage.output_tokens,
|
||||
cost: calculateCost(response.usage),
|
||||
model: 'claude-3-haiku',
|
||||
});
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
function calculateCost(usage) {
|
||||
const rates = {
|
||||
'claude-3-haiku': { input: 0.25, output: 1.25 }, // trên 1M tokens
|
||||
};
|
||||
const rate = rates['claude-3-haiku'];
|
||||
return (usage.input_tokens * rate.input +
|
||||
usage.output_tokens * rate.output) / 1_000_000;
|
||||
}
|
||||
```
|
||||
|
||||
### Chiến lược Giảm Chi phí
|
||||
| Chiến lược | Tiết kiệm |
|
||||
|----------|---------|
|
||||
| Sử dụng mô hình rẻ hơn | 10-50x |
|
||||
| Giới hạn token đầu ra | Thay đổi tùy ý |
|
||||
| Cache các truy vấn phổ biến | Cao |
|
||||
| Gom nhóm (Batch) các yêu cầu tương tự | Trung bình |
|
||||
| Cắt bớt đầu vào (Truncate input) | Thay đổi tùy ý |
|
||||
|
||||
### Giới hạn Sử dụng (Usage Limits)
|
||||
```javascript
|
||||
async function checkUsageLimits(userId) {
|
||||
const usage = await db.usage.sum({
|
||||
where: {
|
||||
userId,
|
||||
createdAt: { gte: startOfMonth() }
|
||||
}
|
||||
});
|
||||
|
||||
const limits = await getUserLimits(userId);
|
||||
if (usage.cost >= limits.monthlyCost) {
|
||||
throw new Error('Monthly limit reached');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
## Anti-Patterns (Nên tránh)
|
||||
|
||||
### ❌ Hội chứng Wrapper Mỏng (Thin Wrapper Syndrome)
|
||||
|
||||
**Tại sao tệ**: Không có sự khác biệt.
|
||||
Người dùng thà dùng ChatGPT còn hơn.
|
||||
Không có quyền định giá (pricing power).
|
||||
Dễ bị sao chép.
|
||||
|
||||
**Thay vào đó**: Thêm chuyên môn miền (domain expertise).
|
||||
Hoàn thiện UX cho tác vụ cụ thể.
|
||||
Tích hợp vào quy trình làm việc (workflows).
|
||||
Hậu xử lý (Post-process) đầu ra.
|
||||
|
||||
### ❌ Phớt lờ Chi phí cho đến khi Quy mô lớn
|
||||
|
||||
**Tại sao tệ**: Hóa đơn bất ngờ.
|
||||
Kinh tế đơn vị (unit economics) âm.
|
||||
Không thể định giá đúng.
|
||||
Doanh nghiệp không khả thi.
|
||||
|
||||
**Thay vào đó**: Theo dõi từng lệnh gọi API.
|
||||
Biết chi phí trên mỗi người dùng.
|
||||
Đặt giới hạn sử dụng.
|
||||
Định giá có biên lợi nhuận.
|
||||
|
||||
### ❌ Không Xác thực Đầu ra
|
||||
|
||||
**Tại sao tệ**: AI bị ảo giác.
|
||||
Định dạng không nhất quán.
|
||||
Trải nghiệm người dùng tồi.
|
||||
Vấn đề về niềm tin.
|
||||
|
||||
**Thay vào đó**: Validate tất cả đầu ra.
|
||||
Parse phản hồi có cấu trúc.
|
||||
Có xử lý dự phòng (fallback).
|
||||
Hậu xử lý để đảm bảo nhất quán.
|
||||
|
||||
## ⚠️ Các Cạnh Sắc (Rủi ro)
|
||||
|
||||
| Vấn đề | Mức độ nghiêm trọng | Giải pháp |
|
||||
|-------|----------|----------|
|
||||
| Chi phí AI API tăng mất kiểm soát | cao | ## Kiểm soát Chi phí AI |
|
||||
| App vỡ khi chạm giới hạn Rate Limit API | cao | ## Xử lý Rate Limits |
|
||||
| AI đưa thông tin sai hoặc bịa đặt | cao | ## Xử lý Ảo giác |
|
||||
| Phản hồi AI quá chậm cho UX tốt | trung bình | ## Cải thiện độ trễ AI |
|
||||
|
||||
## Kỹ năng Liên quan
|
||||
|
||||
Hoạt động tốt với: `llm-architect`, `micro-saas-launcher`, `frontend`, `backend`
|
||||
41
docs/vietnamese/skills/airflow-dag-patterns/SKILL.vi.md
Normal file
41
docs/vietnamese/skills/airflow-dag-patterns/SKILL.vi.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
name: airflow-dag-patterns
|
||||
description: Xây dựng các Apache Airflow DAGs cấp production với các thực hành tốt nhất cho operators, sensors, kiểm thử và triển khai. Sử dụng khi tạo đường ống dữ liệu (data pipelines), điều phối luồng công việc (orchestrating workflows), hoặc lập lịch các tác vụ batch (batch jobs).
|
||||
---
|
||||
|
||||
# Các Mẫu Apache Airflow DAG
|
||||
|
||||
Các mẫu sẵn sàng cho production cho Apache Airflow bao gồm thiết kế DAG, operators, sensors, chiến lược kiểm thử và triển khai.
|
||||
|
||||
## Sử dụng kỹ năng này khi
|
||||
|
||||
- Tạo điều phối đường ống dữ liệu với Airflow
|
||||
- Thiết kế cấu trúc DAG và các phụ thuộc
|
||||
- Triển khai custom operators và sensors
|
||||
- Kiểm thử Airflow DAGs cục bộ
|
||||
- Thiết lập Airflow trong production
|
||||
- Gỡ lỗi các lần chạy DAG bị thất bại
|
||||
|
||||
## Không sử dụng kỹ năng này khi
|
||||
|
||||
- Bạn chỉ cần một cron job đơn giản hoặc shell script
|
||||
- Airflow không phải là một phần của bộ công cụ
|
||||
- Nhiệm vụ không liên quan đến điều phối luồng công việc
|
||||
|
||||
## Hướng dẫn
|
||||
|
||||
1. Xác định nguồn dữ liệu, lịch trình và các phụ thuộc.
|
||||
2. Thiết kế các tác vụ idempotent (có thể chạy lại nhiều lần mà kết quả không đổi) với quyền sở hữu rõ ràng và cơ chế thử lại (retries).
|
||||
3. Triển khai DAGs với khả năng quan sát (observability) và hooks cảnh báo.
|
||||
4. Xác nhận trong môi trường staging và tài liệu hóa sổ tay vận hành (operational runbooks).
|
||||
|
||||
Tham khảo `resources/implementation-playbook.md` để biết các mẫu chi tiết, danh sách kiểm tra và templates.
|
||||
|
||||
## An toàn
|
||||
|
||||
- Tránh thay đổi lịch trình DAG production mà không được phê duyệt.
|
||||
- Kiểm thử backfills và retries cẩn thận để ngăn chặn trùng lặp dữ liệu.
|
||||
|
||||
## Tài nguyên
|
||||
|
||||
- `resources/implementation-playbook.md` cho các mẫu chi tiết, danh sách kiểm tra và templates.
|
||||
37
docs/vietnamese/skills/api-design-principles/SKILL.vi.md
Normal file
37
docs/vietnamese/skills/api-design-principles/SKILL.vi.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: api-design-principles
|
||||
description: Làm chủ các nguyên tắc thiết kế REST và GraphQL API để xây dựng các API trực quan, có khả năng mở rộng và dễ bảo trì, làm hài lòng các nhà phát triển. Sử dụng khi thiết kế API mới, xem xét đặc tả API, hoặc thiết lập các tiêu chuẩn thiết kế API.
|
||||
---
|
||||
|
||||
# Nguyên tắc Thiết kế API (API Design Principles)
|
||||
|
||||
Làm chủ các nguyên tắc thiết kế REST và GraphQL API để xây dựng các API trực quan, có khả năng mở rộng và dễ bảo trì, làm hài lòng các nhà phát triển và bền vững theo thời gian.
|
||||
|
||||
## Sử dụng kỹ năng này khi
|
||||
|
||||
- Thiết kế REST hoặc GraphQL APIs mới
|
||||
- Refactoring các API hiện có để cải thiện tính khả dụng
|
||||
- Thiết lập tiêu chuẩn thiết kế API cho team của bạn
|
||||
- Review đặc tả API (API specifications) trước khi cài đặt
|
||||
- Chuyển đổi giữa các mô hình API (REST sang GraphQL, v.v.)
|
||||
- Tạo tài liệu API thân thiện với developer
|
||||
- Tối ưu hóa API cho các use case cụ thể (mobile, tích hợp bên thứ ba)
|
||||
|
||||
## Không sử dụng kỹ năng này khi
|
||||
|
||||
- Bạn chỉ cần hướng dẫn cài đặt cho một framework cụ thể
|
||||
- Bạn đang làm việc thuần túy về hạ tầng mà không có hợp đồng API (API contracts)
|
||||
- Bạn không thể thay đổi hoặc đánh phiên bản các giao diện public
|
||||
|
||||
## Hướng dẫn
|
||||
|
||||
1. Xác định người tiêu dùng, use cases, và các ràng buộc.
|
||||
2. Chọn phong cách API (REST/GraphQL) và mô hình hóa tài nguyên hoặc types.
|
||||
3. Chỉ định lỗi, đánh phiên bản (versioning), phân trang (pagination), và chiến lược xác thực (auth strategy).
|
||||
4. Xác nhận bằng các ví dụ và review tính nhất quán.
|
||||
|
||||
Tham khảo `resources/implementation-playbook.md` để biết các mẫu chi tiết, danh sách kiểm tra và templates.
|
||||
|
||||
## Tài nguyên
|
||||
|
||||
- `resources/implementation-playbook.md` cho các mẫu chi tiết, danh sách kiểm tra và templates.
|
||||
206
docs/vietnamese/skills/api-security-best-practices/SKILL.vi.md
Normal file
206
docs/vietnamese/skills/api-security-best-practices/SKILL.vi.md
Normal file
@@ -0,0 +1,206 @@
|
||||
---
|
||||
name: api-security-best-practices
|
||||
description: "Triển khai các mẫu thiết kế API an toàn bao gồm xác thực (authentication), phân quyền (authorization), xác thực đầu vào (input validation), giới hạn tốc độ (rate limiting), và bảo vệ chống lại các lổ hổng API phổ biến."
|
||||
---
|
||||
|
||||
# Thực hành Tốt nhất về Bảo mật API (API Security Best Practices)
|
||||
|
||||
## Tổng quan
|
||||
|
||||
Hướng dẫn các lập trình viên xây dựng API an toàn bằng cách triển khai xác thực, phân quyền, xác thực đầu vào, giới hạn tốc độ và bảo vệ chống lại các lổ hổng phổ biến. Kỹ năng này bao gồm các mẫu bảo mật cho REST, GraphQL và WebSocket APIs.
|
||||
|
||||
## Khi nào Sử dụng Kỹ năng này
|
||||
|
||||
- Sử dụng khi thiết kế các API endpoints mới
|
||||
- Sử dụng khi bảo mật các API hiện có
|
||||
- Sử dụng khi triển khai xác thực và phân quyền
|
||||
- Sử dụng khi bảo vệ chống lại các cuộc tấn công API (injection, DDoS, v.v.)
|
||||
- Sử dụng khi thực hiện đánh giá bảo mật API
|
||||
- Sử dụng khi chuẩn bị cho kiểm toán bảo mật (security audits)
|
||||
- Sử dụng khi triển khai giới hạn tốc độ và điều tiết (throttling)
|
||||
- Sử dụng khi xử lý dữ liệu nhạy cảm trong APIs
|
||||
|
||||
## Cách Thức Hoạt động
|
||||
|
||||
### Bước 1: Xác thực & Phân quyền
|
||||
Tôi sẽ giúp bạn triển khai xác thực an toàn:
|
||||
- Chọn phương thức xác thực (JWT, OAuth 2.0, API keys)
|
||||
- Triển khai xác thực dựa trên token
|
||||
- Thiết lập kiểm soát truy cập dựa trên vai trò (RBAC)
|
||||
- Quản lý phiên an toàn
|
||||
- Triển khai xác thực đa yếu tố (MFA)
|
||||
|
||||
### Bước 2: Xác thực & Làm sạch Đầu vào
|
||||
Bảo vệ chống lại các cuộc tấn công injection:
|
||||
- Validate tất cả dữ liệu đầu vào
|
||||
- Làm sạch (Sanitize) đầu vào của người dùng
|
||||
- Sử dụng parameterized queries
|
||||
- Triển khai validation request schema
|
||||
- Ngăn chặn SQL injection, XSS, và command injection
|
||||
|
||||
### Bước 3: Giới hạn Tốc độ & Điều tiết
|
||||
Ngăn chặn lạm dụng và tấn công DDoS:
|
||||
- Triển khai rate limiting theo user/IP
|
||||
- Thiết lập API throttling
|
||||
- Cấu hình hạn ngạch yêu cầu (request quotas)
|
||||
- Xử lý lỗi rate limit một cách nhẹ nhàng
|
||||
- Giám sát các hoạt động đáng ngờ
|
||||
|
||||
### Bước 4: Bảo vệ Dữ liệu
|
||||
Bảo mật dữ liệu nhạy cảm:
|
||||
- Mã hóa dữ liệu khi truyền tải (HTTPS/TLS)
|
||||
- Mã hóa dữ liệu nhạy cảm khi lưu trữ (at rest)
|
||||
- Triển khai xử lý lỗi đúng cách (không rò rỉ dữ liệu)
|
||||
- Làm sạch thông báo lỗi
|
||||
- Sử dụng các header bảo mật
|
||||
|
||||
### Bước 5: Kiểm thử Bảo mật API
|
||||
Xác minh việc triển khai bảo mật:
|
||||
- Test xác thực và phân quyền
|
||||
- Thực hiện kiểm thử thâm nhập (penetration testing)
|
||||
- Kiểm tra các lổ hổng phổ biến (OWASP API Top 10)
|
||||
- Validate việc xử lý đầu vào
|
||||
- Test rate limiting
|
||||
|
||||
## Ví dụ
|
||||
|
||||
### Ví dụ 1: Triển khai Xác thực JWT
|
||||
*(Giữ nguyên code examples vì là code kỹ thuật)*
|
||||
|
||||
### Các thực hành Tốt nhất về Bảo mật (Security Best Practices)
|
||||
- ✅ Sử dụng bí mật JWT mạnh (tối thiểu 256-bit)
|
||||
- ✅ Đặt thời gian hết hạn ngắn (1 giờ cho access tokens)
|
||||
- ✅ Triển khai refresh tokens cho các phiên dài hạn
|
||||
- ✅ Lưu trữ refresh tokens trong database (có thể thu hồi)
|
||||
- ✅ Chỉ sử dụng HTTPS
|
||||
- ✅ Không lưu trữ dữ liệu nhạy cảm trong JWT payload
|
||||
- ✅ Validate token issuer và audience
|
||||
- ✅ Triển khai danh sách đen token (token blacklisting) cho đăng xuất
|
||||
|
||||
### Ví dụ 2: Ngăn chặn SQL Injection và Xác thực Đầu vào
|
||||
*(Giữ nguyên code examples)*
|
||||
|
||||
### Danh sách kiểm tra Validation
|
||||
- [ ] Validate tất cả đầu vào của người dùng
|
||||
- [ ] Sử dụng parameterized queries hoặc ORM
|
||||
- [ ] Validate kiểu dữ liệu (string, number, email, v.v.)
|
||||
- [ ] Validate phạm vi dữ liệu (độ dài min/max, khoảng giá trị)
|
||||
- [ ] Làm sạch nội dung HTML
|
||||
- [ ] Escape các ký tự đặc biệt
|
||||
- [ ] Validate file uploads (loại, kích thước, nội dung)
|
||||
- [ ] Sử dụng danh sách cho phép (allowlists), không dùng danh sách chặn (blocklists)
|
||||
|
||||
### Ví dụ 3: Rate Limiting và Bảo vệ DDoS
|
||||
*(Giữ nguyên code examples)*
|
||||
|
||||
## Thực hành Tốt nhất (Best Practices)
|
||||
|
||||
### ✅ Nên làm
|
||||
- **Sử dụng HTTPS mọi nơi** - Không bao giờ gửi dữ liệu nhạy cảm qua HTTP
|
||||
- **Triển khai Xác thực** - Yêu cầu xác thực cho các protected endpoints
|
||||
- **Validate Tất cả Đầu vào** - Không bao giờ tin tưởng đầu vào của người dùng
|
||||
- **Sử dụng Parameterized Queries** - Ngăn chặn SQL injection
|
||||
- **Triển khai Rate Limiting** - Bảo vệ chống brute force và DDoS
|
||||
- **Hash Mật khẩu** - Sử dụng bcrypt với salt rounds >= 10
|
||||
- **Sử dụng Token Ngắn hạn** - JWT access tokens nên hết hạn nhanh chóng
|
||||
- **Triển khai CORS Đúng cách** - Chỉ cho phép các nguồn tin cậy (trusted origins)
|
||||
- **Ghi log Sự kiện Bảo mật** - Giám sát hoạt động đáng ngờ
|
||||
- **Luôn Cập nhật Dependencies** - Cập nhật các gói thường xuyên
|
||||
- **Sử dụng Security Headers** - Triển khai Helmet.js
|
||||
- **Làm sạch Thông báo Lỗi** - Không rò rỉ thông tin nhạy cảm
|
||||
|
||||
### ❌ Không nên làm
|
||||
- **Đừng Lưu Password dạng Plain Text** - Luôn hash mật khẩu
|
||||
- **Đừng Dùng Bí mật Yếu** - Sử dụng JWT secrets mạnh, ngẫu nhiên
|
||||
- **Đừng Tin tưởng Đầu vào Người dùng** - Luôn validate và sanitize
|
||||
- **Đừng Để lộ Stack Traces** - Ẩn chi tiết lỗi trong production
|
||||
- **Đừng Dùng Cộng chuỗi cho SQL** - Sử dụng parameterized queries
|
||||
- **Đừng Lưu Dữ liệu Nhạy cảm trong JWT** - JWT không được mã hóa
|
||||
- **Đừng Phớt lờ Cập nhật Bảo mật** - Cập nhật dependencies thường xuyên
|
||||
- **Đừng Dùng Thông tin đăng nhập Mặc định** - Thay đổi tất cả mật khẩu mặc định
|
||||
- **Đừng Tắt CORS Hoàn toàn** - Cấu hình nó đúng cách thay vì tắt
|
||||
- **Đừng Ghi log Dữ liệu Nhạy cảm** - Sanitize logs
|
||||
|
||||
## Các Bẫy Phổ biến (Common Pitfalls)
|
||||
|
||||
### Vấn đề: Lộ JWT Secret trong Code
|
||||
**Triệu chứng:** JWT secret bị hardcode hoặc commit lên Git
|
||||
**Giải pháp:** Dùng biến môi trường (`process.env.JWT_SECRET`)
|
||||
|
||||
### Vấn đề: Yêu cầu Mật khẩu Yếu
|
||||
**Triệu chứng:** Người dùng có thể đặt mật khẩu yếu như "password123"
|
||||
**Giải pháp:** Sử dụng thư viện validate như zxcvbn hoặc regex mạnh.
|
||||
|
||||
### Vấn đề: Thiếu Kiểm tra Phân quyền
|
||||
**Triệu chứng:** Người dùng có thể truy cập tài nguyên họ không nên thấy
|
||||
**Giải pháp:** Kiểm tra quyền sở hữu hoặc vai trò admin trước khi thực hiện hành động.
|
||||
|
||||
### Vấn đề: Thông báo Lỗi Quá Chi tiết
|
||||
**Triệu chứng:** Thông báo lỗi tiết lộ chi tiết hệ thống (VD: tên bảng db)
|
||||
**Giải pháp:** Trả về thông báo lỗi chung chung cho client, log chi tiết lỗi ở server.
|
||||
|
||||
## Danh sách Kiểm tra Bảo mật (Security Checklist)
|
||||
|
||||
### Xác thực & Phân quyền
|
||||
- [ ] Triển khai xác thực mạnh (JWT, OAuth 2.0)
|
||||
- [ ] Sử dụng HTTPS cho tất cả endpoints
|
||||
- [ ] Hash mật khẩu với bcrypt (salt rounds >= 10)
|
||||
- [ ] Triển khai hết hạn token
|
||||
- [ ] Thêm cơ chế refresh token
|
||||
- [ ] Xác minh phân quyền người dùng cho mỗi yêu cầu
|
||||
- [ ] Triển khai kiểm soát truy cập dựa trên vai trò (RBAC)
|
||||
|
||||
### Xác thực Đầu vào
|
||||
- [ ] Validate tất cả đầu vào người dùng
|
||||
- [ ] Sử dụng parameterized queries hoặc ORM
|
||||
- [ ] Làm sạch nội dung HTML
|
||||
- [ ] Validate file uploads
|
||||
- [ ] Triển khai request schema validation
|
||||
- [ ] Sử dụng allowlists, không dùng blocklists
|
||||
|
||||
### Rate Limiting & Bảo vệ DDoS
|
||||
- [ ] Triển khai rate limiting theo user/IP
|
||||
- [ ] Thêm giới hạn nghiêm ngặt hơn cho auth endpoints
|
||||
- [ ] Sử dụng Redis cho rate limiting phân tán
|
||||
- [ ] Trả về header rate limit đúng chuẩn
|
||||
- [ ] Triển khai request throttling
|
||||
|
||||
### Bảo vệ Dữ liệu
|
||||
- [ ] Sử dụng HTTPS/TLS cho tất cả lưu lượng
|
||||
- [ ] Mã hóa dữ liệu nhạy cảm khi lưu trữ
|
||||
- [ ] Không lưu dữ liệu nhạy cảm trong JWT
|
||||
- [ ] Làm sạch thông báo lỗi
|
||||
- [ ] Triển khai cấu hình CORS đúng cách
|
||||
- [ ] Sử dụng security headers (Helmet.js)
|
||||
|
||||
### Giám sát & Logging
|
||||
- [ ] Ghi log các sự kiện bảo mật
|
||||
- [ ] Giám sát hoạt động đáng ngờ
|
||||
- [ ] Thiết lập cảnh báo cho các lần thử auth thất bại
|
||||
- [ ] Theo dõi các mẫu sử dụng API
|
||||
- [ ] Không ghi log dữ liệu nhạy cảm
|
||||
|
||||
## OWASP API Security Top 10
|
||||
|
||||
1. **Broken Object Level Authorization** - Luôn xác minh người dùng có thể truy cập tài nguyên
|
||||
2. **Broken Authentication** - Triển khai cơ chế xác thực mạnh
|
||||
3. **Broken Object Property Level Authorization** - Validate thuộc tính nào người dùng có thể truy cập
|
||||
4. **Unrestricted Resource Consumption** - Triển khai rate limiting và quotas
|
||||
5. **Broken Function Level Authorization** - Xác minh vai trò người dùng cho mỗi chức năng
|
||||
6. **Unrestricted Access to Sensitive Business Flows** - Bảo vệ các luồng công việc quan trọng
|
||||
7. **Server Side Request Forgery (SSRF)** - Validate và sanitize URLs
|
||||
8. **Security Misconfiguration** - Sử dụng thực hành tốt nhất về bảo mật và headers
|
||||
9. **Improper Inventory Management** - Tài liệu hóa và bảo mật tất cả API endpoints
|
||||
10. **Unsafe Consumption of APIs** - Validate dữ liệu từ APIs bên thứ ba
|
||||
|
||||
## Tài nguyên Bổ sung
|
||||
|
||||
- [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
|
||||
- [JWT Best Practices](https://tools.ietf.org/html/rfc8725)
|
||||
- [Express Security Best Practices](https://expressjs.com/en/advanced/best-practice-security.html)
|
||||
- [Node.js Security Checklist](https://blog.risingstack.com/node-js-security-checklist/)
|
||||
- [API Security Checklist](https://github.com/shieldfy/API-Security-Checklist)
|
||||
|
||||
---
|
||||
|
||||
**Mẹo chuyên nghiệp:** Bảo mật không phải là nhiệm vụ một lần - hãy thường xuyên kiểm toán API của bạn, cập nhật dependencies, và cập nhật thông tin về các lổ hổng mới!
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
name: auth-implementation-patterns
|
||||
description: Làm chủ các mẫu xác thực (authentication) và phân quyền (authorization) bao gồm JWT, OAuth2, quản lý phiên (session management), và RBAC để xây dựng các hệ thống kiểm soát truy cập an toàn, có khả năng mở rộng. Sử dụng khi triển khai hệ thống auth, bảo mật API, hoặc gỡ lỗi các vấn đề bảo mật.
|
||||
---
|
||||
|
||||
# Các Mẫu Triển khai Xác thực & Phân quyền
|
||||
|
||||
Xây dựng hệ thống xác thực và phân quyền an toàn, có khả năng mở rộng bằng cách sử dụng các tiêu chuẩn công nghiệp và thực hành tốt nhất hiện đại.
|
||||
|
||||
## Sử dụng kỹ năng này khi
|
||||
|
||||
- Triển khai hệ thống xác thực người dùng
|
||||
- Bảo mật REST hoặc GraphQL APIs
|
||||
- Thêm OAuth2/social login hoặc SSO
|
||||
- Thiết kế quản lý phiên hoặc RBAC
|
||||
- Gỡ lỗi các vấn đề xác thực hoặc phân quyền
|
||||
|
||||
## Không sử dụng kỹ năng này khi
|
||||
|
||||
- Bạn chỉ cần nội dung giao diện người dùng (UI copy) hoặc styling trang đăng nhập
|
||||
- Nhiệm vụ thuần túy về hạ tầng không liên quan đến định danh (identity)
|
||||
- Bạn không thể thay đổi chính sách auth hoặc lưu trữ thông tin đăng nhập
|
||||
|
||||
## Hướng dẫn
|
||||
|
||||
- Xác định người dùng, người thuê (tenants), các luồng (flows), và các ràng buộc mô hình mối đe dọa (threat model).
|
||||
- Chọn chiến lược auth (session, JWT, OIDC) và vòng đời token.
|
||||
- Thiết kế mô hình phân quyền và các điểm thực thi chính sách (policy enforcement points).
|
||||
- Lập kế hoạch lưu trữ bí mật (secrets), xoay vòng (rotation), ghi log, và các yêu cầu kiểm toán (audit).
|
||||
- Nếu cần các ví dụ chi tiết, hãy mở `resources/implementation-playbook.md`.
|
||||
|
||||
## An toàn
|
||||
|
||||
- Không bao giờ ghi log bí mật, tokens, hoặc thông tin đăng nhập.
|
||||
- Thực thi nguyên tắc đặc quyền tối thiểu (least privilege) và lưu trữ an toàn cho các khóa (keys).
|
||||
|
||||
## Tài nguyên
|
||||
|
||||
- `resources/implementation-playbook.md` cho các mẫu và ví dụ chi tiết.
|
||||
241
docs/vietnamese/skills/aws-serverless/SKILL.vi.md
Normal file
241
docs/vietnamese/skills/aws-serverless/SKILL.vi.md
Normal file
@@ -0,0 +1,241 @@
|
||||
---
|
||||
name: aws-serverless
|
||||
description: "Kỹ năng chuyên biệt để xây dựng các ứng dụng serverless sẵn sàng cho production trên AWS. Bao gồm Lambda functions, API Gateway, DynamoDB, các mẫu hướng sự kiện SQS/SNS, triển khai SAM/CDK, và tối ưu hóa cold start."
|
||||
source: vibeship-spawner-skills (Apache 2.0)
|
||||
---
|
||||
|
||||
# AWS Serverless
|
||||
|
||||
## Các Mẫu (Patterns)
|
||||
|
||||
### Mẫu Lambda Handler
|
||||
|
||||
Cấu trúc Lambda function đúng chuẩn với xử lý lỗi.
|
||||
|
||||
**Khi nào dùng**: ['Bất kỳ triển khai Lambda function nào', 'API handlers, bộ xử lý sự kiện, tác vụ định kỳ']
|
||||
|
||||
```javascript
|
||||
// Node.js Lambda Handler
|
||||
// handler.js
|
||||
|
||||
// Khởi tạo bên ngoài handler (tái sử dụng qua các lần gọi)
|
||||
const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
|
||||
const { DynamoDBDocumentClient, GetCommand } = require('@aws-sdk/lib-dynamodb');
|
||||
|
||||
const client = new DynamoDBClient({});
|
||||
const docClient = DynamoDBDocumentClient.from(client);
|
||||
|
||||
// Hàm Handler
|
||||
exports.handler = async (event, context) => {
|
||||
// Tùy chọn: Không đợi event loop trống (Node.js) có thể giúp function kết thúc sớm hơn
|
||||
context.callbackWaitsForEmptyEventLoop = false;
|
||||
|
||||
try {
|
||||
// Parse input dựa trên nguồn sự kiện
|
||||
const body = typeof event.body === 'string'
|
||||
? JSON.parse(event.body)
|
||||
: event.body;
|
||||
|
||||
// Logic nghiệp vụ
|
||||
const result = await processRequest(body);
|
||||
|
||||
// Trả về phản hồi tương thích API Gateway
|
||||
return {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': '*'
|
||||
},
|
||||
body: JSON.stringify(result)
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error:', JSON.stringify({
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
requestId: context.awsRequestId
|
||||
}));
|
||||
|
||||
return {
|
||||
statusCode: error.statusCode || 500,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
error: error.message || 'Internal server error'
|
||||
})
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
async function processRequest(data) {
|
||||
// Logic nghiệp vụ của bạn ở đây
|
||||
const result = await docClient.send(new GetCommand({
|
||||
TableName: process.env.TABLE_NAME,
|
||||
Key: { id: data.id }
|
||||
}));
|
||||
return result.Item;
|
||||
}
|
||||
```
|
||||
|
||||
### Mẫu Tích hợp API Gateway
|
||||
|
||||
Tích hợp REST API và HTTP API với Lambda.
|
||||
|
||||
**Khi nào dùng**: ['Xây dựng REST APIs bằng Lambda', 'Cần các HTTP endpoints cho functions']
|
||||
|
||||
```yaml
|
||||
# template.yaml (SAM)
|
||||
AWSTemplateFormatVersion: '2010-09-09'
|
||||
Transform: AWS::Serverless-2016-10-31
|
||||
|
||||
Globals:
|
||||
Function:
|
||||
Runtime: nodejs20.x
|
||||
Timeout: 30
|
||||
MemorySize: 256
|
||||
Environment:
|
||||
Variables:
|
||||
TABLE_NAME: !Ref ItemsTable
|
||||
|
||||
Resources:
|
||||
# HTTP API (khuyên dùng cho các trường hợp đơn giản, hiệu năng cao, rẻ hơn)
|
||||
HttpApi:
|
||||
Type: AWS::Serverless::HttpApi
|
||||
Properties:
|
||||
StageName: prod
|
||||
CorsConfiguration:
|
||||
AllowOrigins:
|
||||
- "*"
|
||||
AllowMethods:
|
||||
- GET
|
||||
- POST
|
||||
- DELETE
|
||||
AllowHeaders:
|
||||
- "*"
|
||||
|
||||
# Lambda Functions
|
||||
GetItemFunction:
|
||||
Type: AWS::Serverless::Function
|
||||
Properties:
|
||||
Handler: src/handlers/get.handler
|
||||
Events:
|
||||
GetItem:
|
||||
Type: HttpApi
|
||||
Properties:
|
||||
ApiId: !Ref HttpApi
|
||||
Path: /items/{id}
|
||||
Method: GET
|
||||
Policies:
|
||||
- DynamoDBReadPolicy:
|
||||
TableName: !Ref ItemsTable
|
||||
|
||||
CreateItemFunction:
|
||||
Type: AWS::Serverless::Function
|
||||
Properties:
|
||||
Handler: src/handlers/create.handler
|
||||
Events:
|
||||
CreateItem:
|
||||
Type: HttpApi
|
||||
Properties:
|
||||
ApiId: !Ref HttpApi
|
||||
Path: /items
|
||||
Method: POST
|
||||
Policies:
|
||||
- DynamoDBCrudPolicy:
|
||||
TableName: !Ref ItemsTable
|
||||
|
||||
# DynamoDB Table
|
||||
ItemsTable:
|
||||
Type: AWS::DynamoDB::Table
|
||||
Properties:
|
||||
AttributeDefinitions:
|
||||
- AttributeName: id
|
||||
AttributeType: S
|
||||
KeySchema:
|
||||
- AttributeName: id
|
||||
KeyType: HASH
|
||||
BillingMode: PAY_PER_REQUEST
|
||||
|
||||
Outputs:
|
||||
ApiUrl:
|
||||
Value: !Sub "https://${HttpApi}.execute-api.${AWS::Region}.amazonaws.com/prod"
|
||||
```
|
||||
|
||||
### Mẫu SQS Hướng Sự Kiện (Event-Driven SQS Pattern)
|
||||
|
||||
Lambda được kích hoạt bởi SQS để xử lý không đồng bộ tin cậy.
|
||||
|
||||
**Khi nào dùng**: ['Xử lý không đồng bộ, tách biệt (decoupled)', 'Cần logic thử lại và Dead Letter Queue (DLQ)', 'Xử lý tin nhắn theo lô (batches)']
|
||||
|
||||
```yaml
|
||||
# template.yaml
|
||||
Resources:
|
||||
ProcessorFunction:
|
||||
Type: AWS::Serverless::Function
|
||||
Properties:
|
||||
Handler: src/handlers/processor.handler
|
||||
Events:
|
||||
SQSEvent:
|
||||
Type: SQS
|
||||
Properties:
|
||||
Queue: !GetAtt ProcessingQueue.Arn
|
||||
BatchSize: 10
|
||||
FunctionResponseTypes:
|
||||
- ReportBatchItemFailures # Xử lý thất bại từng phần trong lô
|
||||
```
|
||||
|
||||
```javascript
|
||||
// src/handlers/processor.js
|
||||
exports.handler = async (event) => {
|
||||
const batchItemFailures = [];
|
||||
|
||||
for (const record of event.Records) {
|
||||
try {
|
||||
const body = JSON.parse(record.body);
|
||||
await processMessage(body);
|
||||
} catch (error) {
|
||||
console.error(`Failed to process message ${record.messageId}:`, error);
|
||||
// Báo cáo item này bị lỗi (để SQS thử lại chỉ item này)
|
||||
batchItemFailures.push({
|
||||
itemIdentifier: record.messageId
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Trả về các item thất bại để thử lại
|
||||
return { batchItemFailures };
|
||||
};
|
||||
```
|
||||
|
||||
## Anti-Patterns (Nên tránh)
|
||||
|
||||
### ❌ Monolithic Lambda
|
||||
|
||||
**Tại sao tệ**: Gói triển khai lớn gây cold start chậm.
|
||||
Khó mở rộng các hoạt động riêng lẻ.
|
||||
Cập nhật ảnh hưởng đến toàn bộ hệ thống.
|
||||
|
||||
**Thay vào đó**: Chia nhỏ function theo trách nhiệm (Single Reponsibility).
|
||||
|
||||
### ❌ Phụ thuộc Lớn (Large Dependencies)
|
||||
|
||||
**Tại sao tệ**: Tăng kích thước gói triển khai.
|
||||
Làm chậm cold start đáng kể.
|
||||
Hầu hết SDK/thư viện có thể không được sử dụng.
|
||||
|
||||
**Thay vào đó**: Dùng esbuild/webpack để tree-shaking, chỉ import client cần thiết từ AWS SDK v3.
|
||||
|
||||
### ❌ Gọi Đồng bộ trong VPC
|
||||
|
||||
**Tại sao tệ**: Lambdas gắn VPC có overhead thiết lập ENI (dù đã được cải thiện).
|
||||
Tra cứu DNS hoặc kết nối bị chặn làm tồi tệ thêm cold start.
|
||||
|
||||
## ⚠️ Các Cạnh Sắc (Rủi ro)
|
||||
|
||||
| Vấn đề | Mức độ nghiêm trọng | Giải pháp |
|
||||
|-------|----------|----------|
|
||||
| Cold start quá lâu | cao | ## Đo lường pha INIT, sử dụng Provisioned Concurrency nếu cần |
|
||||
| Function bị timeout | cao | ## Đặt timeout phù hợp (mặc định 3s là quá ngắn cho nhiều tác vụ) |
|
||||
| Hết bộ nhớ (OOM) | cao | ## Tăng dung lượng bộ nhớ (cũng tăng CPU) |
|
||||
| Lỗi kết nối mạng trong VPC | trung bình | ## Xác minh cấu hình VPC, Subnet và Security Group |
|
||||
| Connection pool bị cạn kiệt | trung bình | ## Sử dụng `callbackWaitsForEmptyEventLoop = false` và tái sử dụng kết nối |
|
||||
| Lỗi upload file lớn qua API Gateway | trung bình | ## Sử dụng S3 Presigned URLs cho upload trực tiếp |
|
||||
| Đệ quy vô hạn (Infinite Loop) | cao | ## Sử dụng bucket/prefix khác nhau cho trigger S3 |
|
||||
42
docs/vietnamese/skills/azure-functions/SKILL.vi.md
Normal file
42
docs/vietnamese/skills/azure-functions/SKILL.vi.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
name: azure-functions
|
||||
description: "Các mẫu chuyên gia cho phát triển Azure Functions bao gồm mô hình isolated worker, điều phối Durable Functions, tối ưu hóa cold start, và các mẫu production. Bao gồm các mô hình lập trình .NET, Python, và Node.js. Sử dụng khi: azure function, azure functions, durable functions, azure serverless, function app."
|
||||
source: vibeship-spawner-skills (Apache 2.0)
|
||||
---
|
||||
|
||||
# Azure Functions
|
||||
|
||||
## Các Mẫu (Patterns)
|
||||
|
||||
### Mô hình Isolated Worker (.NET)
|
||||
|
||||
Mô hình thực thi .NET hiện đại với sự cách ly tiến trình (process isolation).
|
||||
|
||||
### Mô hình Lập trình Node.js v4
|
||||
|
||||
Cách tiếp cận tập trung vào code (code-centric) hiện đại cho TypeScript/JavaScript.
|
||||
|
||||
### Mô hình Lập trình Python v2
|
||||
|
||||
Cách tiếp cận dựa trên Decorator cho Python functions.
|
||||
|
||||
## Anti-Patterns (Nên tránh)
|
||||
|
||||
### ❌ Các Cuộc gọi Async Bị Chặn (Blocking Async Calls)
|
||||
|
||||
### ❌ Tạo HttpClient Mới cho Mỗi Yêu cầu (New HttpClient Per Request)
|
||||
|
||||
### ❌ Mô hình In-Process cho Dự Án Mới
|
||||
|
||||
## ⚠️ Các Cạnh Sắc (Rủi ro)
|
||||
|
||||
| Vấn đề | Mức độ nghiêm trọng | Giải pháp |
|
||||
|-------|----------|----------|
|
||||
| Vấn đề time-out | cao | ## Sử dụng mẫu async với Durable Functions |
|
||||
| Cạn kiệt socket | cao | ## Sử dụng IHttpClientFactory (Khuyên dùng) |
|
||||
| Deadlock | cao | ## Luôn sử dụng async/await |
|
||||
| Timeout mặc định ngắn | trung bình | ## Cấu hình thời gian chờ tối đa (Consumption plan) |
|
||||
| Phiên bản .NET xung đột | cao | ## Sử dụng isolated worker cho dự án mới |
|
||||
| Thiếu log | trung bình | ## Cấu hình Application Insights đúng cách |
|
||||
| Lỗi binding | trung bình | ## Kiểm tra extension bundle (phổ biến nhất) |
|
||||
| Cold Start | trung bình | ## Thêm warmup trigger để khởi tạo code của bạn |
|
||||
Reference in New Issue
Block a user