> ## Documentation Index
> Fetch the complete documentation index at: https://docs-agents.fpt.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Lịch sử và Luồng xử lý hội thoại

> Xem lại từng cuộc hội thoại, Nhân sự số đã làm gì ở mỗi lượt, mất bao lâu và tốn bao nhiêu token

Mỗi lần người dùng trò chuyện với Nhân sự số, FPT AI EOS Console tự ghi lại toàn bộ cuộc hội thoại. Tab **Phân tích** cho bạn hai mức xem:

* **Lịch sử**: Danh sách các cuộc hội thoại, đọc lại nội dung như người dùng đã thấy.
* **Luồng xử lý**: Mổ xẻ từng lượt hỏi đáp - Nhân sự số đã gọi công cụ nào, Guardrail có chặn gì không, mỗi bước mất bao lâu và tốn bao nhiêu token.

> [!NOTE]
>
> Dùng Luồng xử lý khi cần trả lời những câu như: Vì sao câu trả lời này sai? Vì sao người dùng phải chờ lâu? Hội thoại này tốn bao nhiêu token? Guardrail có chặn đúng chỗ không?

## Mở Lịch sử hội thoại

**1. Mở Nhân sự số**

Trong Console, chọn **Nhân sự số** ở menu trái rồi bấm vào Nhân sự số cần xem, ví dụ **Hỏi đáp NQ\_57**.

**2. Vào tab Phân tích**

Bấm tab **Phân tích** trên thanh trên cùng, rồi chọn **Lịch sử** ở cột trái.

**3. Chọn một cuộc hội thoại**

Bấm vào một dòng trong bảng. Panel **Chi tiết hội thoại** mở ra bên phải, hiển thị toàn bộ tin nhắn theo đúng thứ tự người dùng đã thấy.

![Lịch sử hội thoại](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_history.jpg?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=e7052e71f708faffb255d4984f8ea8e7)

### Các cột trong bảng Lịch sử

| Cột | Ý nghĩa |
| - | - |
| **Thời gian kết thúc** | Thời điểm tin nhắn cuối cùng của cuộc hội thoại |
| **ID cuộc trò chuyện** | Mã định danh duy nhất, dùng để tìm kiếm hoặc gửi cho đội hỗ trợ |
| **Kênh** | Nơi diễn ra hội thoại: Workspace, Live Chat, API, Zalo... |
| **Tên người dùng** | Tên và email của người trò chuyện |
| **Kích hoạt bởi** | Hội thoại bắt đầu từ đâu, ví dụ người dùng chat trực tiếp |
| **Số lượng tin nhắn** | Tổng số tin nhắn trong cuộc hội thoại |

### Tìm và lọc hội thoại

* **Ô tìm kiếm**: Tìm theo nội dung, tên người gửi, ID cuộc trò chuyện hoặc ID tin nhắn.
* **Tất cả kênh**: Chỉ xem hội thoại của một kênh.
* **Toàn bộ thời gian**: Giới hạn theo khoảng thời gian.

### Thao tác trong panel Chi tiết hội thoại

| Nút | Tác dụng |
| - | - |
| Biểu tượng liên kết | **Sao chép liên kết cuộc trò chuyện** để gửi cho đồng nghiệp mở đúng hội thoại này |
| **Xem luồng xử lý** | Mở trang Luồng xử lý của hội thoại |
| Biểu tượng sao chép cạnh ID | Sao chép ID cuộc trò chuyện |
| **X** | Đóng panel |

## Mở Luồng xử lý

Trong panel **Chi tiết hội thoại**, bấm **Xem luồng xử lý**. Trang Luồng xử lý chia làm ba cột:

| Cột | Nội dung |
| - | - |
| **Lượt** (trái) | Danh sách các lượt hỏi đáp, mỗi lượt kèm độ trễ và số token |
| **Chi tiết lượt** (giữa) | Đầu vào của người dùng và mọi bước Nhân sự số đã làm để trả lời |
| **Số liệu cuộc trò chuyện** (phải) | Tổng hợp thời gian, độ trễ và token của cả cuộc hội thoại |

![Trang Luồng xử lý](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_overview.jpg?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=bbd5bf9d77888d3e2b3f9518d5393c34)

Bấm **Quay lại Lịch sử** ở góc trên để trở về danh sách hội thoại. Biểu tượng sao chép cạnh ID trên tiêu đề giúp lấy nhanh ID cuộc trò chuyện.

## Danh sách lượt

Mỗi **lượt** là một câu người dùng gửi cùng toàn bộ phần Nhân sự số xử lý để trả lời câu đó. Bấm vào một lượt để cuộn tới chi tiết của lượt đó ở cột giữa.

Trên mỗi thẻ lượt có:

* **Số thứ tự** và đoạn đầu câu hỏi của người dùng.
* **Độ trễ**: Thời gian từ lúc nhận câu hỏi đến lúc trả lời xong, ví dụ `27.4s`.
* **Số token** đã dùng trong lượt, ví dụ `109,8 N` (N = nghìn, Tr = triệu).
* **Biểu tượng cờ lê**: Lượt có gọi công cụ.
* **Biểu tượng khiên**: Guardrail đã chặn trong lượt này.
* **Chấm cam** và nhãn đỏ (ví dụ "Guardrail đầu vào đã chặn"): Lượt **Có vấn đề**, cần xem kỹ.

![Danh sách lượt](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_turn_list_v2.png?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=5b24ea2cedfcc4f9ad380fb139ae4541)

Rê chuột lên một thẻ lượt để xem nhanh số liệu riêng của lượt đó: Thời gian bắt đầu, kết thúc, độ trễ, thời gian ra token đầu tiên và phân bổ token.

![Số liệu của một lượt](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_turn_tooltip.jpg?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=a7fc25471b7ca271802902a05ddd4e5e)

| Chỉ số | Ý nghĩa |
| - | - |
| **Bắt đầu**, **Kết thúc** | Thời điểm Nhân sự số nhận câu hỏi và thời điểm trả lời xong |
| **Độ trễ** | Khoảng thời gian từ Bắt đầu đến Kết thúc - Người dùng phải chờ bao lâu cho lượt này |
| **Token đầu tiên** | Thời gian từ lúc nhận câu hỏi đến khi chữ đầu tiên của câu trả lời hiện ra |
| **Phân bổ token** | Đầu vào, Đọc từ cache, Đầu ra, Suy luận và Tổng của riêng lượt này. Ý nghĩa từng mục xem ở phần Số liệu cuộc trò chuyện bên dưới |

## Chi tiết một lượt

Mỗi lượt có hai khối:

* **Đầu vào**: Câu người dùng gửi, kèm nhãn **Đã qua guardrail** nếu câu hỏi không vi phạm rule nào.
* **Đầu ra**: Mọi tin nhắn Nhân sự số tạo ra trong lượt, theo đúng thứ tự. Góc phải ghi **Số tin nhắn**.

Mỗi tin nhắn của Nhân sự số (nhãn **AGENT**) có một dòng thông tin ở góc phải, ví dụ `deepseek-v4-flash · 6.0s · 21,5 N token · Đã qua guardrail`:

| Thông tin | Ý nghĩa |
| - | - |
| Tên model | Model đã tạo ra tin nhắn này |
| Thời gian | Thời gian model xử lý để tạo tin nhắn |
| Số token | Token của riêng lần gọi model này, gồm Đầu vào và Đầu ra |
| **Đã qua guardrail** | Tin nhắn đã được Guardrail kiểm tra và không vi phạm rule nào |

Một lượt có thể gồm nhiều tin nhắn AGENT, vì Nhân sự số có thể gọi model nhiều lần: Gọi công cụ, đọc kết quả rồi mới trả lời. Bấm mũi tên cạnh **LƯỢT** để thu gọn hoặc mở lại cả lượt.

### Xem một lần gọi công cụ

Bên dưới tin nhắn có các dòng gọi công cụ, ví dụ `vbpl-knowledge__knowledge_search` - Nhân sự số tra cứu kho tri thức qua Connector `vbpl-knowledge`. Bấm vào dòng để mở chi tiết:

| Thông tin | Ý nghĩa |
| - | - |
| **Connector** | Kết nối mà công cụ thuộc về |
| **ID lệnh gọi** | Mã của lần gọi, dùng khi cần đối chiếu log |
| **Trạng thái** | Lần gọi thành công hay lỗi |
| **Đầu vào** | Tham số Nhân sự số gửi cho công cụ, ví dụ câu truy vấn và bộ lọc |
| **Đầu ra** | Kết quả công cụ trả về |
| Thời gian (góc phải) | Thời gian lần gọi chạy, ví dụ `1.6s` |

Khối Đầu vào và Đầu ra có hai chế độ **JSON** (định dạng dễ đọc) và **Raw** (nguyên bản), cùng nút sao chép.

![Chi tiết một lần gọi công cụ](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_tool_call.jpg?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=a1e19b3acb4c4e59728b5e07ae5e44a1)

> [!TIP]
>
> Câu trả lời sai thường bắt nguồn từ bước tra cứu. Mở Đầu vào để xem Nhân sự số đã tìm bằng câu truy vấn nào, rồi mở Đầu ra để xem kho tri thức trả về gì. Nếu kết quả trả về đúng mà câu trả lời vẫn sai, hãy xem lại [Instructions](/instructions.md).

### Khi Guardrail chặn

Lượt có Guardrail can thiệp được gắn nhãn **Có vấn đề**. Trong Đầu ra, dòng **Guardrail · kiểm tra đầu vào** hiện trạng thái (ví dụ **Đã từ chối**). Bấm vào dòng để xem:

* **Quy tắc**: Rule đã kích hoạt, ví dụ `__injection__`.
* **Bộ lọc**: Loại kiểm tra, ví dụ `injection` (câu lệnh tìm cách bẻ hướng dẫn của Nhân sự số).
* **Hành động**: Guardrail đã làm gì, ví dụ **Đã từ chối**.

Ví dụ: Người dùng yêu cầu Nhân sự số bỏ qua hướng dẫn và tự đưa ra số liệu. Guardrail từ chối, tin nhắn không đến được model, và người dùng nhận câu trả lời an toàn ở tin nhắn AGENT ngay bên dưới.

![Lượt bị Guardrail chặn](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_guardrail.png?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=ee85e0019b081aaec0264f2617ca7a23)

Xem cách cấu hình rule ở trang [Guardrails](/guardrails.md).

## Số liệu cuộc trò chuyện

Cột phải tổng hợp số liệu của cả cuộc hội thoại.

![Số liệu cuộc trò chuyện](https://mintcdn.com/fpt-62e894b4/Tqbr0IgLP7gQvFNR/images/trace_stats.png?fit=max\&auto=format\&n=Tqbr0IgLP7gQvFNR\&q=85\&s=58d71fda98c8818cff8c7aefc5513b0e)

| Nhóm | Chỉ số | Ý nghĩa |
| - | - | - |
| **Số liệu cuộc trò chuyện** | Số lượt | Số lần người dùng hỏi và Nhân sự số trả lời |
| **Thời gian** | Bắt đầu đầu tiên, Kết thúc cuối cùng | Thời điểm lượt đầu bắt đầu và lượt cuối kết thúc |
| **Độ trễ** | P50 | Thời gian chờ thường gặp: Một nửa số lượt trả lời xong nhanh hơn mức này |
| | P99 | Thời gian chờ ở những lúc chậm nhất: 99% số lượt xong trong mức này |
| | Token đầu tiên P50 | Thời gian thường gặp trước khi người dùng thấy chữ đầu tiên hiện ra |
| **Phân bổ token** | Đầu vào | Token Nhân sự số đọc trước khi trả lời: Instructions, lịch sử hội thoại, kết quả công cụ |
| | Đọc từ cache | Phần đầu vào được dùng lại từ bộ nhớ đệm, rẻ hơn đọc mới |
| | Đầu ra | Token Nhân sự số viết ra: Câu trả lời và lệnh gọi công cụ |
| | Suy luận | Token model dùng để "suy nghĩ" trước khi trả lời, nếu model có chế độ này |
| | Kiểm tra guardrail | Token dùng để kiểm tra câu hỏi và câu trả lời theo Guardrail |
| | Tổng | Tổng các mục trên |

> [!NOTE]
>
> Đơn vị viết tắt: **N** là nghìn, **Tr** là triệu. Số trong ngoặc là tỷ lệ của từng mục trên tổng token.

### Hiểu P50 và P99

Xếp thời gian trả lời của mọi lượt từ nhanh đến chậm:

* **P50** là lượt đứng giữa hàng, đại diện cho trải nghiệm của đa số người dùng.
* **P99** là lượt gần cuối hàng, cho biết những lần chờ lâu nhất.

Ví dụ: P50 là 15 giây và P99 là 65 giây nghĩa là thường người dùng chờ khoảng 15 giây, nhưng lúc chậm nhất có thể hơn 1 phút. Hai số càng cách xa nhau, tốc độ trả lời càng thất thường.

### Dùng số liệu để tối ưu Nhân sự số

> **Đầu vào chiếm gần hết token**
>
> Nhân sự số đọc lại cả lịch sử hội thoại ở mỗi lượt. Hội thoại càng dài, mỗi lượt càng tốn. Cân nhắc rút gọn [Instructions](/instructions.md) và giới hạn lượng tài liệu trả về từ kho tri thức.

> **Đọc từ cache bằng 0**
>
> Phần lặp lại giữa các lượt đang được tính giá đầy đủ. Chọn [model](/model.md) hỗ trợ bộ nhớ đệm có thể giảm chi phí đáng kể.

> **P99 cao hơn P50 nhiều lần**
>
> Mở các lượt có độ trễ lớn nhất trong danh sách lượt để xem thời gian mất ở bước gọi model hay ở công cụ.

> **Nhiều lượt Có vấn đề**
>
> Kiểm tra rule Guardrail nào đang kích hoạt. Nếu chặn nhầm câu hỏi hợp lệ, điều chỉnh mô tả và ví dụ của rule trong [Guardrails](/guardrails.md).

## Thêm, sửa, xóa

Lịch sử và Luồng xử lý là dữ liệu chỉ đọc. Console tự ghi lại mỗi cuộc hội thoại, bạn không tạo, sửa hay xóa hội thoại từ màn hình này. Muốn Nhân sự số trả lời khác đi, hãy sửa cấu hình của Nhân sự số trong tab **Dựng Nhân sự số** rồi **Publish** lại.

> [!NOTE]
>
> Mục **Hiệu suất** trong tab Phân tích đang được phát triển và sẽ sớm ra mắt.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.