Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Bộ toys AI của tôi - part 1


Do mắc bệnh OCD nên khi chơi món gì là tôi hay setup full đồ, full tool toys để làm. Từ chăm hoa , nuôi rau đến âm nhạc nghệ thuật. Tuy nhiên nghề chính là IT thì vẫn phải tập trung cho món này

Trước đây thì vẫn gõ code bằng cơm nhưng giờ thời đại AI agent nên cũng phải đú trend cho kịp thời đại
Giờ thì người người AI, nhà nhà AI nhiều chị HR, tuyển dụng non tech-background nhưng code bằng tiếng Anh như rồng, app sản xuất như quân Nguyên từ Claude, Copilot, Kiro đến Replit, tools nhiều như cỏ dại. Tuy nhiên, ae không nên cài cắm, sử dụng quá nhiều tool, plugins tốn tiền, nặng máy mà nên tập trung theo chiều sâu. Bài viết này chia sẻ bộ tool AI tôi hay xài

Claude Code

Em này đứng đầu bảng luôn, do được công ty cấp account nên tranh thủ húp em nó cho cạn nước thì thôi. Vấn đề khi làm việc với Claude hay tool nào khác thì việc xài không cẩn thận thì đốt token như đốt rác cho nên việc đầu tiên là tôi build Dashboard bằng Grafan để track user usage token
Cơ chế hoạt động cũng đơn giản

A local observability stack for monitoring Claude Code usage, costs, and productivity metrics using OpenTelemetry, Prometheus, Loki, and Grafana.

Claude Code → OpenTelemetry Collector (4317) → Prometheus (metrics) → Grafana (8000)
→ Loki (logs) ↗

Trong team có thanh niên nào đốt token quá budget là bắn alert liền,



Ngoài ra, tool này có đo luôn độ hiệu quả của việc sử dụng AI agent từ Vibe coding, repos, số lượng prompt... Tóm lại là đủ thứ tá lả, tuỳ theo yêu cầu của sếp mà tôi config collect tính toán thông tin 


Thời buổi này Token nó cũng giống như điện nước, thiếu gì thì thiếu chứ thiếu token là căng, cho nên xài hao là banh xác

Có 1 vài chiêu tôi đang dùng để tiết kiệm token

AI agent có khái niệm Context Window, là giới hạn về lượng dữ liệu mà một mô hình ngôn ngữ lớn (LLM) như Claude hay GPT có thể "ghi nhớ" và xử lý trong một phiên làm việc tại một thời điểm nhất định.

Context windows càng lớn thì đòi hỏi tài nguyên tính toán (RAM/GPU) rất khủng khiếp và càng đốt token. Nguyên nhân của Windows context dài là prompt không clear, chat back and forth một vấn đề quá dài có 1 vài chiêu để giảm context windows là sử dụng /compact/clear để nén các phần thảo luận cũ hoặc /clear Để reset hoàn toàn ngữ cảnh khi chuyển sang một task mới. Nên viết sẵn 1 Claude.md để tóm tắt source code và các bộ prompt chi tiết chỉ định luôn cho em nói cách output để tiết kiệm. 

Làm AI agent thì khái niệm MCP để access tool nghe nhiều rồi, nhưng mà Agent mà càng tích hợp nhiều tool → càng tốn token → càng chậm → càng đắt. Vì cách tiếp cận MCP truyền trống nó như thế này

Toàn bộ tên tool, mô tả, schema JSON, tham số… từ tất cả MCP servers, đều bị nhét vào context.

Thói quen add nhiều tools, agent, nhiều MCP quá mức cần thiết sẽ đốt token rất nhanh, nên tốt nhất chỉ dùng những thứ thật sự cần, còn lại xóa hết. Đừng thấy trên Facebook giới thiệu plugin này repos kia mà đem về xài luôn

Đây là kiểu chơi some, nhét tất cả toys vào 1 lỗ thì đương nhiên là context windows tăng vọt, token đốt như cháy rừng Cali, gọi là Token bloat, overload context

ví dụ 1 Claude nó load từng này tool agents 


Dynamic MCP

Thế nên mới đẻ ra khái niệm Dynamic MCP và Code Mode

Hiểu đơn giản thế này

Bạn đưa ra yêu cầu: Kiểm tra danh sách các em hàng ở khu vực Trần Duy Hưng, recommend 1 em có những skill sau ..., nếu AI chưa có quyền truy cập, nó có thể tự động khởi tạo hoặc yêu cầu kết nối với một MCP Server thiendia location Trần Duy Hưng Hà Nội để tìm kiếm thông tin thay vì load 1 loạt các MCP không cần thiết lên, cái này gọi là Dynamic MCP

Vậy còn Code Mode thì thế nào

Ví dụ thế này

Prompt trên có 2 steps, step 1 load MCP thiendia để get list danh sách em hàng, đổ output vào Model, rồi gọi tool recommendation. Nếu list danh sách có hàng trăm nghìn thì lại quá tải context window. Cho nên Code Mode sẽ làm theo cách

LLM viết code gọi MCP thiendia lẫn recommendation chạy trong sandbox rồi trả về kết quả. Như vậy, không phải đổ dữ liệu 2 lần vào Model giảm được token cost. Script chạy 1 lần duy nhất rồi đổ vào model để phân tích

Thật ra tiết kiệm token search Google hỏi ChatGPT cũng đc suggest cả đống tuy nhiên đây là cách practical mà tôi đang áp dụng

Model Auto-routing

Thay vì gửi mọi câu hỏi đến một mô hình đắt tiền và mạnh nhất (như Claude 3.5 Opus hay GPT-4o), hệ thống sẽ tự động phân tích câu hỏi đó và chọn mô hình phù hợp nhất để xử lý.

Anh em có thói quen chọn model xịn như Sonet Opus, version latest dùng cho oách, nhưng thực tế có nhiều tình huống gọi là dao mổ trâu giết gà. Có những task có thể dùng model thấp hơn nhiều để tiết kiệm chi phí. Copilot hay Kiro có mode Auto để tự động lựa chọn model hợp lý giảm chi phí. Tuy nhiên, xài built-in cũng tạm tạm, còn tôi thì chọn cách tự build riêng. Claude nó chỉ hỗ trợ 1 vài models có sẵn, trong khi còn cả mớ model free trên mạng thì lại ko có

Giải pháp tôi sử dụng là xây dựng LiteLLM


Nó biến Claude Code từ một công cụ chỉ dùng cho Anthropic trở thành một "Universal AI Agent" có khả năng điều khiển mọi model (GPT-4o, Gemini 1.5 Pro, Llama 3) thông qua một cổng duy nhất.

claude config set --global env \

\ '{"ANTHROPIC_BASE_URL": "https://litellm.*.com",

\ "ANTHROPIC_AUTH_TOKEN": "sk-..."}'

claude config set --global model "model-name"

Các prompt trong Claude Code sẽ được chuyển tới LiteLLM để sử dụng các model mà tôi config trong LiteLLM. Nó giúp tôi giải quyết dc chi phí token cho các tác vụ đơn giản

Sau khi có thể sử dụng thêm các model free để tối ưu chi phí, bước sau là xây dựng Auto routing model, cơ chế hoạt động như sau

  1. Entry Point: Tiếp nhận prompt từ người dùng.

  2. The Router (Phân loại): Đánh giá độ khó, mục đích và dự đoán model phù hợp.

  3. Model Pool: Danh sách các LLM API (GPT-4o, Claude 3.5, Gemini, Llama 3).

  4. Fallback & Aggregator: Xử lý lỗi và trả kết quả.

Có nhiều cách, nhưng cách tầu nhanh, và tiện là xài chính LiteLLM đã setup ở trên

LiteLLM có file config để routing các model LiteLLM proxy, kiểu thế này

model_list: - model_name: smart-model # Tên định danh chung cho ứng dụng litellm_params: model: anthropic/claude-3-5-sonnet-20240620 api_key: os.environ/ANTHROPIC_API_KEY rpm: 5 # Giới hạn request/phút để demo fallback - model_name: smart-model # Cùng tên định danh để làm fallback litellm_params: model: openai/gpt-4o-mini api_key: os.environ/OPENAI_API_KEY router_settings: routing_strategy: simple-shuffle # Hoặc 'latency-based-routing' enable_fallbacks: True

Bài sau sẽ nói chi tiết hơn về cách implement routing model này

Đăng nhận xét

0 Nhận xét