Xây dựng tác tử AI đầu tiên bằng Python với OpenAI Agents SDK
Xây dựng tác tử AI đầu tiên bằng Python với OpenAI Agents SDK, tích hợp tính năng tìm kiếm web, các công cụ Python, bộ nhớ hội thoại và khả năng truy vết (tracing) trong một quy trình hoàn chỉnh, đơn giản.
-->
Xây dựng tác tử AI đầu tiên bằng Python với OpenAI Agents SDK - KDnuggets
-->
Blog
Bài viết nổi bật
Giới thiệu
Chủ đề
AI
Tư vấn nghề nghiệp
Thị giác máy tính
Kỹ thuật dữ liệu
Khoa học dữ liệu
Mô hình ngôn ngữ
Học máy
MLOps
Xử lý ngôn ngữ tự nhiên
Lập trình
Python
SQL
Bộ dữ liệu
Sự kiện
Tài nguyên
Tài liệu tóm tắt
Đề xuất
Bản tin công nghệ
Quảng cáo
Đăng ký nhận bản tin
Xây dựng tác tử AI đầu tiên bằng Python với OpenAI Agents SDK
Xây dựng tác tử AI đầu tiên bằng Python với OpenAI Agents SDK, tích hợp tính năng tìm kiếm web, các công cụ Python, bộ nhớ hội thoại và truy vết trong một quy trình hoàn chỉnh, tinh gọn.
Tác giả: Abid Ali Awan, Trợ lý Biên tập KDnuggets, ngày 26/10/2026, chuyên mục Python
-->
Việc xây dựng một tác tử AI (AI agent) bằng ngôn ngữ Python hiện nay đã trở nên đơn giản hơn đáng kể. Với bộ công cụ phát triển OpenAI Agents SDK, lập trình viên có thể tạo các tác tử, kết nối công cụ, duy trì trạng thái hội thoại và vận hành các quy trình đa bước mà không cần tự thiết lập vòng lặp gọi công cụ từ đầu.
Bài hướng dẫn này sẽ triển khai một tác tử nghiên cứu thực tế có khả năng tìm kiếm web, kích hoạt hàm Python tùy chỉnh, ghi nhớ các thông điệp trước đó và chủ động xác định thời điểm sử dụng từng tính năng.
Tác tử AI là gì?
Một ứng dụng mô hình ngôn ngữ lớn (LLM) thông thường thường hoạt động theo quy trình đơn giản:
Câu lệnh nhắc (Prompt) — Mô hình — Phản hồi
Mô hình tiếp nhận câu lệnh nhắc, tạo câu trả lời và kết thúc tiến trình.
Một tác tử AI sẽ bổ sung thêm các công cụ và một vòng lặp thực thi:
Người dùng — Tác tử — Công cụ (khi cần) — Tác tử — Phản hồi cuối cùng
Thay vì chỉ tạo văn bản, tác tử có thể xác định xem có cần thực hiện hành động trước hay không, chẳng hạn như tìm kiếm trên web, gọi hàm Python hoặc truy xuất thông tin từ bộ nhớ.
Với OpenAI Agents SDK, thành phần Runner sẽ tự động điều phối quy trình này. Runner gửi yêu cầu đến mô hình, thực thi các công cụ được chỉ định, chuyển kết quả lại cho tác tử và tiếp tục chu trình cho đến khi tác tử đưa ra phản hồi cuối cùng.
Khả năng lập luận, sử dụng công cụ và duy trì hoạt động qua nhiều bước xử lý chính là điểm khác biệt cốt lõi giữa một tác tử và một ứng dụng LLM cơ bản.
Thiết lập dự án
Trước khi tiến hành xây dựng tác tử, cần thiết lập môi trường Python độc lập và cài đặt các gói phụ thuộc cần thiết.
Khởi tạo dự án Python bằng công cụ uv:
mkdir first-ai-agent
cd first-ai-agent
uv init
uv add openai-agents
Hoặc cài đặt gói thông qua pip:
pip install openai-agents
Thiết lập khóa API OpenAI:
export OPENAI_API_KEY="your-api-key"
Trên hệ điều hành Windows, lệnh export được hỗ trợ trong môi trường Git Bash. Đối với Command Prompt hoặc PowerShell, sử dụng lệnh sau:
setx OPENAI_API_KEY "your-api-key"
Xây dựng tác tử đầu tiên
Chỉ với một số dòng lệnh Python, hệ thống đã có thể vận hành một tác tử có khả năng tự đánh giá thời điểm cần cập nhật thông tin mới từ web.
Tạo tệp main.py:
from agents import Agent, Runner, WebSearchTool
agent = Agent(
name="Research Assistant",
instructions=(
"You are a concise research assistant. "
"Use web search when current information is required."
),
tools=[WebSearchTool()],
)
result = Runner.run_sync(
agent,
"What are the latest developments in Python?"
)
print(result.final_output)
Thực thi mã nguồn:
uv run main.py
Kết quả đầu ra:
Tính đến **ngày 14/9/2026**, các diễn biến chính của Python bao gồm:
- **Python 3.14 là dòng phiên bản tính năng ổn định mới nhất**; bản phát hành bảo trì mới nhất là **3.14.7**. Phiên bản này chính thức hỗ trợ các bản dựng đa luồng tự do (free-threaded builds), cơ chế trì hoãn đánh giá chú thích (deferred annotation evaluation), chuỗi ký tự mẫu (`t""`), ...
- **Python 3.15 chuẩn bị ra mắt**: bản phát hành chính thức dự kiến vào **ngày 1/10/2026**. ...
Đối với các dự án mới, **Python 3.14.7** hiện là lựa chọn mặc định an toàn nhất.
WebSearchTool() là công cụ được lưu trữ trên hệ thống của OpenAI, cho phép mô hình tự quyết định thời điểm cần cập nhật thông tin thay vì người dùng phải gọi API tìm kiếm theo phương thức thủ công.
Ví dụ, quá trình thực thi đã xác định chính xác Python 3.14.7 là bản phát hành ổn định hiện tại.
Bổ sung công cụ Python tự định nghĩa
Tính năng tìm kiếm web mang lại hiệu quả cao, song các tác tử (agent) sẽ phát huy tối đa năng lực khi có thể tương tác trực tiếp với mã nguồn Python của người dùng.
Thêm công cụ tính toán:
from agents.decorators import tool
@tool
def calculate_total(
price: float,
quantity: int
) -> float:
"""Calculate the total cost of an order."""
return price * quantity
Sau đó tích hợp vào tác tử:
agent = Agent(
name="Assistant",
instructions="Help with research and calculations.",
tools=[
WebSearchTool(),
calculate_total,
],
)
Kiểm tra hoạt động:
result = Runner.run_sync(
agent,
"I need 14 GPUs costing $2.49 each per hour. "
"What will they cost per hour?"
)
print(result.final_output)
Kết quả:
14 GPU x 2,49 USD/giờ = **34,86 USD/giờ**.
SDK tự động sử dụng tên hàm, đối số, gợi ý kiểu dữ liệu (type hints) và chuỗi tài liệu (docstring) để tạo lược đồ công cụ (tool schema) cho mô hình nhận diện. Người dùng không cần định nghĩa thủ công các lược đồ JSON hoặc tự thiết lập vòng lặp gọi công cụ.
Lưu ý: Việc viết chuỗi tài liệu (docstring) rõ ràng sẽ giúp mô hình xác định chính xác chức năng của công cụ và thời điểm cần kích hoạt.
Bổ sung bộ nhớ hội thoại
Một tác tử tiêu chuẩn không thể bị gián đoạn mạch thông tin giữa các lượt tin nhắn, do đó cần thiết lập thêm bộ nhớ hội thoại.
Để tác tử có khả năng đàm thoại liên tục, cần khởi tạo một phiên làm việc (session):
from agents import SQLiteSession
session = SQLiteSession(
"user_1",
"conversations.db"
)
Sau đó truyền phiên này vào mỗi lượt chạy:
while True:
message = input("You: ")
if message.lower() in {"exit", "quit"}:
break
result = Runner.run_sync(
agent,
message,
session=session,
)
print("Agent:", result.final_output)
Thực hiện kiểm tra:
Yêu cầu thứ hai sẽ tự động tiếp nhận ngữ cảnh từ cuộc hội thoại trước, giúp tác tử hiểu rõ đối tượng được đề cập khi nhắc đến "phiên bản mới nhất".
Do hệ thống sử dụng cơ sở dữ liệu SQLite lưu trữ trên tệp, lịch sử trao đổi vẫn được duy trì ngay cả sau khi khởi động lại chương trình.
Đối với các ứng dụng quy mô lớn, SDK cung cấp thêm các nền tảng quản lý phiên làm việc tương thích với Redis, SQLAlchemy và MongoDB.
Cơ chế vận hành của tác tử hoàn chỉnh
Tại giai đoạn này, các thành phần kỹ thuật đã được kết hợp đồng bộ
Nguồn tin: KDnuggets — Tác giả: Abid Ali Awan. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.