
Xây dựng quy trình cắt tỉa ngữ cảnh cho các tác nhân hoạt động dài hạn
Các tác nhân AI hiện đại, được xây dựng trên nền tảng các mô hình ngôn ngữ lớn (LLM), được thiết kế để hoạt động liên tục.
Xây dựng quy trình cắt tỉa ngữ cảnh cho các tác nhân AI hoạt động dài hạn
Bởi Iván Palomares Carrascosa vào ngày 28/5/2026 trong lĩnh vực Trí tuệ nhân tạo 0
Chia sẻ
Bài đăng
Chia sẻ
Trong bài viết này, độc giả sẽ tìm hiểu cách triển khai quy trình cắt tỉa ngữ cảnh cho các tác nhân AI hoạt động dài hạn, cho phép chúng quản lý bộ nhớ hội thoại một cách hiệu quả thông qua sự tương đồng ngữ nghĩa.
Các chủ đề sẽ được đề cập bao gồm:
Lý do lịch sử hội thoại không giới hạn là một vấn đề đối với các tác nhân được xây dựng trên các mô hình ngôn ngữ lớn và chiến lược cắt tỉa ngữ cảnh trông như thế nào.
Cách sử dụng các mô hình nhúng (embedding models) chuyển đổi câu để tính toán sự tương đồng ngữ nghĩa giữa một lời nhắc hiện tại và các lượt hội thoại đã lưu trữ.
Cách tập hợp một cửa sổ ngữ cảnh đã được cắt tỉa từ lượt gần đây nhất, K lượt quá khứ có liên quan ngữ nghĩa hàng đầu và lời nhắc hiện tại.
Xây dựng quy trình cắt tỉa ngữ cảnh cho các tác nhân AI hoạt động dài hạn
Giới thiệu
Các tác nhân AI hiện đại được xây dựng trên các mô hình ngôn ngữ lớn (LLM) được thiết kế để chạy liên tục. Do đó, lịch sử hội thoại của chúng tiếp tục tăng lên vô thời hạn. Việc truyền toàn bộ lịch sử như vậy làm cửa sổ ngữ cảnh của LLM là công thức hoàn hảo cho chi phí token cấm kỵ, tắc nghẽn độ trễ và suy giảm khả năng suy luận cuối cùng.
Xây dựng một quy trình cắt tỉa ngữ cảnh có thể giải quyết vấn đề này bằng cách quản lý bộ nhớ hội thoại gần đây một cách linh hoạt. Bài viết này phác thảo các nguyên tắc cơ bản để triển khai quy trình cắt tỉa ngữ cảnh cho các tác nhân hoạt động dài hạn.
Chúng tôi sử dụng một giải pháp cục bộ hoàn toàn dễ tiếp cận và miễn phí dựa trên các mô hình nhúng mã nguồn mở thay vì các API trả phí, nhưng độc giả có thể thay thế chúng bằng các API trả phí nếu muốn có một giải pháp hiệu quả hơn.
Chiến lược bộ nhớ được đề xuất
Các chiến lược bộ nhớ cổ điển trong các tác nhân dựa vào một cửa sổ trượt (sliding window) quên đi thông tin cũ khi nó bị bỏ lại phía sau, bao gồm cả các chi tiết có khả năng quan trọng. Vượt ra ngoài cách tiếp cận đó, có thể xây dựng một quy trình chọn lọc, thông minh hơn, cung cấp chính xác những gì LLM cần làm ngữ cảnh.
Về bản chất, ngữ cảnh có thể được cắt tỉa thành các yếu tố cơ bản sau:
Lời nhắc hiện tại, chứa yêu cầu hoặc câu hỏi của người dùng.
Lượt gần đây nhất, tức là trao đổi đầu vào-phản hồi ngay trước đó, rất quan trọng để duy trì tính liên tục của cuộc hội thoại.
K kết quả phù hợp ngữ nghĩa hàng đầu, được tính toán dựa trên điểm tương đồng. Đây là những lượt quá khứ liên quan chặt chẽ đến lời nhắc hiện tại, được truy xuất thông qua các nhúng vector (vector embeddings).
Mọi thứ trong lịch sử hội thoại nằm ngoài phạm vi của ba yếu tố này đều bị loại bỏ khỏi ngữ cảnh của lời nhắc đang hoạt động, tiết kiệm tính toán và bộ nhớ.
Triển khai dựa trên mô phỏng
Việc triển khai ví dụ của chúng tôi mô phỏng việc áp dụng chiến lược đã nói ở trên, xây dựng cửa sổ cắt tỉa ngữ cảnh từng bước. Các mô hình chuyển đổi câu được sử dụng để mô phỏng một quy trình hoạt động dài hạn cùng với lịch sử hội thoại giả lập.
Chúng ta bắt đầu bằng cách thực hiện các thao tác nhập cần thiết:
```
import numpy as np
from sentence_transformers import SentenceTransformer
from scipy.spatial.distance import cosine
```
Tiếp theo, chúng ta tải và khởi tạo một mô hình nhúng (embedding model) đã được huấn luyện trước – cụ thể là all-MiniLM-L6-v2 từ thư viện sentence_transformers. Mô hình này đã được huấn luyện để chuyển đổi văn bản thô thành các vectơ nhúng (embedding vectors) nhằm nắm bắt các đặc điểm ngữ nghĩa. Chúng ta cũng tạo một lịch sử tác nhân (agent history) mô phỏng đơn giản chứa các tương tác giữa người dùng và tác nhân (trong thực tế, dữ liệu này sẽ được lấy từ cơ sở dữ liệu):
```python
# Initialize a lightweight open-source embedding model
model = SentenceTransformer('all-MiniLM-L6-v2')
# 1. Simulated Agent History (Usually fetched from a database)
chat_history = [
{"role": "user", "content": "My name is Alice and I work in logistics."},
{"role": "agent", "content": "Nice to meet you, Alice. How can I help with logistics?"},
{"role": "user", "content": "What's the weather like today?"},
{"role": "agent", "content": "It's sunny and 75 degrees."},
{"role": "user", "content": "I need help calculating route efficiency for my fleet."},
{"role": "agent", "content": "Route efficiency involves analyzing distance, traffic, and load weight."},
{"role": "user", "content": "Thanks, that makes sense."},
{"role": "agent", "content": "You're welcome! Let me know if you need anything else."}
]
```
Logic cốt lõi của quy trình cắt tỉa ngữ cảnh (context pruning pipeline) được trình bày tiếp theo. Nó được đóng gói trong một hàm `prune_context()` nhận đầu vào là lời nhắc hiện tại (current prompt), toàn bộ lịch sử tương tác và số lượng lượt tương tác trong quá khứ có liên quan về mặt ngữ nghĩa cần truy xuất, `k`:
```python
def prune_context(current_prompt, history, top_k=2):
# If the conversation history is too short, we simply return it
if len(history) <= 2:
return history + [{"role": "user", "content": current_prompt}]
# Extracting the most recent turn (last user/agent pair)
recent_turn = history[-2:]
# The rest of the history will be eligible for semantic pruning
archived_turns = history[:-2]
# 2. Embedd
```




Nguồn tin: Machine Learning Mastery — Tác giả: Iván Palomares Carrascosa. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.