Tạo code interpreter bằng AI Agent thực thi trong workflow
- Vì sao AI Agent cần khả năng thực thi code
- Rủi ro khi để AI Agent tự chạy code
- Kiến trúc an toàn cho Code Interpreter trong AI Agent
- Demo: Xây dựng Code Interpreter an toàn bằng Python
- Mở rộng qua việc thực thi trong Docker sandbox
- Kiểm soát an toàn và tối ưu khi triển khai thực tế
- Ứng dụng thực tế trong hệ thống AI doanh nghiệp
- Hướng phát triển nâng cao
- Kết luận
AI Agent hiện đại không chỉ dừng lại ở việc trả lời câu hỏi mà còn có thể tự động thực thi code trong workflow. Tuy nhiên, việc để mô hình LLM chạy mã trực tiếp luôn tiềm ẩn rủi ro bảo mật. Bài viết này Bizfly sẽ hướng dẫn bạn xây dựng một code interpreter tool bằng AI Agent an toàn, cho phép Agent chạy Python trong môi trường sandbox, quản lý lỗi và luồng xử lý mà không ảnh hưởng đến hệ thống chính.
Vì sao AI Agent cần khả năng thực thi code
Nếu bạn đang phát triển một hệ thống AI tự động hóa quy trình (workflow automation), khả năng chạy code thực tế là điều không thể thiếu. Bởi vì Agent không chỉ “nói”, nó còn phải tự kiểm chứng, tính toán và sinh hành động. Một vài ví dụ phổ biến:
- Phân tích dữ liệu động: Agent có thể đọc file CSV, xử lý dữ liệu bằng pandas hoặc numpy, rồi tự sinh biểu đồ bằng matplotlib.
- Sinh báo cáo định kỳ: Mỗi sáng, Agent tự lấy dữ liệu từ API Google Analytics, tính conversion rate và sinh báo cáo PDF gửi qua email.
- Kiểm thử code/pipeline: Khi người dùng yêu cầu “chạy thử đoạn script này”, Agent có thể tự tạo file, thực thi và trả lại kết quả log.
- Mô phỏng logic phức tạp: Các mô hình lập kế hoạch hoặc tối ưu chuỗi hành động có thể cần thử chạy mã giả định để tìm phương án tốt nhất.
Tất cả đều đòi hỏi Agent phải có khả năng chạy được code, không chỉ “hiểu code”.
Rủi ro khi để AI Agent tự chạy code
Cho phép AI thực thi code đồng nghĩa bạn đang mở một cánh cửa vào hệ thống backend. Nếu không có biện pháp bảo vệ, đây là “con dao hai lưỡi”. Các rủi ro chính bao gồm:
- Rủi ro bảo mật: LLM có thể vô tình hoặc cố ý sinh ra đoạn mã truy cập file hệ thống (os.remove, open('/etc/passwd')...), hoặc gửi request HTTP ra ngoài.
- Rò rỉ dữ liệu: Nếu Agent có quyền đọc ghi vào thư mục chung, nó có thể truy xuất thông tin nhạy cảm của server.
- Loop hoặc crash: Một đoạn code while True: không kiểm soát có thể khiến CPU “cháy” hoặc khiến workflow treo vô hạn.
- Chiếm tài nguyên: Các lệnh tính toán lớn (matrix multiplication, recursion sâu) có thể tiêu tốn RAM vượt giới hạn container.
=> Giải pháp: cần xây dựng sandbox thực thi code cô lập, giới hạn thời gian, tài nguyên và truy cập file/network.
Kiến trúc an toàn cho Code Interpreter trong AI Agent
Trước khi đi vào demo code, hãy hình dung kiến trúc tổng thể của một Agent có thể “chạy code”:
![]()
Sandbox chính là phần lõi, nó đóng vai trò như là bức tường lửa giữa Agent và hệ thống thật, đảm bảo mọi đoạn code chỉ được thực thi trong phạm vi cho phép.
Demo: Xây dựng Code Interpreter an toàn bằng Python
Bước 1: Tạo công cụ (tool) thực thi code
Dưới đây là ví dụ về một tool Python có thể gắn vào LangChain hoặc bất kỳ Agent framework nào:
from langchain.tools import tool
import subprocess, tempfile, os@tool("safe_code_interpreter", return_direct=True)
def safe_code_interpreter(code: str) -> str:
"""
Thực thi code Python trong môi trường an toàn (sandbox cơ bản)
"""
with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as tmp:
tmp.write(code)
tmp_path = tmp.name
try:
result = subprocess.run(
["python3", tmp_path],
capture_output=True,
text=True,
timeout=5 # giới hạn thời gian chạy 5 giây
)
return result.stdout or result.stderr
except subprocess.TimeoutExpired:
return "⏰ Code vượt quá thời gian cho phép (timeout)."
finally:
os.remove(tmp_path)
![]()
Phân tích:
- tempfile → tạo file tạm riêng biệt, tránh truy cập file hệ thống.
- subprocess.run → chạy code trong process tách biệt, không ảnh hưởng main process.
- timeout = 5 → dừng code nếu vượt quá thời gian.
- capture_output = True → lấy log stdout/stderr làm kết quả trả về.
Bước 2: Gắn tool vào Agent
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAIllm = OpenAI(temperature=0)
agent = initialize_agent(
tools=[safe_code_interpreter],
llm=llm,
agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)agent.run("Viết một đoạn code Python in ra 5 số Fibonacci đầu tiên và chạy thử.")
![]()
Kết quả:
AI Agent sẽ tự sinh đoạn code như sau:
def fibonacci(n):
seq = [0, 1]
for i in range(2, n):
seq.append(seq[-1] + seq[-2])
return seqprint(fibonacci(5))
![]()
Và sau đó safe_code_interpreter sẽ chạy đoạn code này, trả về: [0, 1, 1, 2, 3]
Mở rộng qua việc thực thi trong Docker sandbox
Sandbox bằng subprocess vẫn chưa thật sự tuyệt đối an toàn. Để nâng cấp, bạn có thể dùng Docker để cô lập hoàn toàn môi trường:
docker run --rm \
-m 256m --cpus="1.0" \
--network=none \
-v $(pwd)/sandbox:/app \
python:3.11 \
python /app/tmp_code.py
![]()
- --network=none: chặn mọi kết nối mạng ra ngoài.
- -m 256m: giới hạn bộ nhớ 256MB.
- --cpus=1.0: chỉ cho dùng 1 CPU core.
- --rm: tự xóa container sau khi chạy xong.
Bạn có thể tạo API nội bộ gọi tới container này khi Agent yêu cầu chạy code. Điều này giúp giữ Agent sạch, không chạm vào host system.
Kiểm soát an toàn và tối ưu khi triển khai thực tế
Để Agent vận hành ổn định, cần bổ sung thêm một lớp kiểm soát và ghi log:
| Mục tiêu | Giải pháp đề xuất |
| Ngăn code độc hại | Regex lọc từ khóa (import os, subprocess, socket, open() |
| Giới hạn tài nguyên | Docker resource limit / ulimit / timeout |
| Ghi log & trace | Lưu input code, thời gian chạy, output |
| Khôi phục khi lỗi | Nếu code fail, Agent phải nhận diện và tự sửa |
| Tách dữ liệu người dùng | Không lưu file hoặc output tạm trên ổ đĩa chung |
| Tích hợp pipeline | Gắn tool vào n8n, LangGraph hoặc custom orchestrator |
Ví dụ, khi tích hợp vào workflow automation như n8n hoặc Airflow, Agent có thể:
- Sinh code Python từ yêu cầu người dùng.
- Gửi code sang module sandbox thực thi.
- Nhận kết quả, phân tích và sinh bước tiếp theo (như gửi báo cáo).
Ứng dụng thực tế trong hệ thống AI doanh nghiệp
- Data Analyst Agent: Tự sinh code để xử lý dữ liệu, tính KPI, vẽ biểu đồ và xuất báo cáo PDF.
- AI Learning Platform: Chạy ví dụ lập trình trực tiếp khi học viên nhập yêu cầu (giống ChatGPT Code Interpreter).
- BizChatAI Agent Workflow: Khi tích hợp trong hệ sinh thái Bizfly, sandbox có thể được triển khai trên môi trường Bizfly Cloud vừa an toàn, vừa dễ mở rộng.
Hướng phát triển nâng cao
Nếu bạn muốn xây dựng phiên bản “Code Interpreter 2.0”, có thể mở rộng thêm:
- Sandbox container pool: tạo nhiều container song song để thực thi nhanh hơn.
- Logging service: gửi log tới ELK hoặc Supabase để kiểm tra an toàn.
- Dynamic prompt guard: lọc prompt trước khi sinh code.
- Role-based restriction: chỉ cho phép một số agent role (như “DevOpsBot”) được quyền chạy code.
- Secure API gateway: chạy sandbox như một microservice riêng biệt, có token xác thực.
Kết luận
Khả năng thực thi code trong workflow giúp AI Agent trở nên thực dụng hơn bao giờ hết nó không chỉ hiểu yêu cầu mà còn có thể tự giải quyết bằng hành động cụ thể. Tuy nhiên, sức mạnh càng lớn thì trách nhiệm càng cao: bạn phải thiết kế sandbox an toàn, giới hạn tài nguyên và log chi tiết, để đảm bảo hệ thống không bị khai thác.
Về trang chủ Bizfly
Đăng nhập
Tài liệu kỹ thuật AI Chat
Loading ...