Gỡ lỗi và truy vết LLM như một chuyên gia

Công nghệ - 01/08/2025 07:00:00

Gỡ lỗi LLM rất quan trọng vì quy trình làm việc của chúng phức tạp và liên quan đến nhiều phần như chuỗi, lời nhắc, API, công cụ, trình truy xuất, v.v.

Gỡ lỗi và truy vết LLM như một chuyên gia
Ảnh của Tác giả | Canva

Giới thiệu

 
Gỡ lỗi truyền thống bằng cách sử dụng print() hoặc logging vẫn hoạt động, nhưng nó chậm và cồng kềnh với các LLM. Phoenix cung cấp chế độ xem dòng thời gian của mọi bước, kiểm tra lời nhắc và phản hồi, phát hiện lỗi với các lần thử lại, khả năng hiển thị độ trễ và chi phí, cũng như hiểu biết trực quan hoàn chỉnh về ứng dụng của bạn. Phoenix của Arize AI là một công cụ quan sát và truy vết mã nguồn mở mạnh mẽ được thiết kế đặc biệt cho các ứng dụng LLM. Nó giúp bạn giám sát, gỡ lỗi và truy vết mọi thứ đang diễn ra trong các pipeline LLM của bạn một cách trực quan. Trong bài viết này, chúng ta sẽ tìm hiểu về chức năng của Phoenix và lý do tại sao nó quan trọng, cách tích hợp Phoenix với LangChain từng bước, và cách hình dung các truy vết trong giao diện người dùng Phoenix.

 

Phoenix là gì?

 
Phoenix là một công cụ quan sát và gỡ lỗi mã nguồn mở được tạo ra cho các ứng dụng mô hình ngôn ngữ lớn. Nó thu thập dữ liệu đo xa chi tiết từ các quy trình làm việc LLM của bạn, bao gồm lời nhắc, phản hồi, độ trễ, lỗi và việc sử dụng công cụ, sau đó trình bày thông tin này trong một bảng điều khiển trực quan, tương tác. Phoenix cho phép các nhà phát triển hiểu sâu sắc cách các pipeline LLM của họ hoạt động bên trong hệ thống, xác định và gỡ lỗi các vấn đề với đầu ra lời nhắc, phân tích các nút thắt cổ chai về hiệu suất, giám sát việc sử dụng token và chi phí liên quan, cũng như truy vết mọi lỗi/lô-gic thử lại trong giai đoạn thực thi. Nó hỗ trợ tích hợp nhất quán với các framework phổ biến như LangChain và LlamaIndex, đồng thời cũng cung cấp hỗ trợ OpenTelemetry cho các thiết lập tùy chỉnh hơn.

 

Thiết lập từng bước

 

// 1. Cài đặt các thư viện cần thiết

Đảm bảo bạn có Python 3.8+ và cài đặt các phụ thuộc:

pip install arize-phoenix langchain langchain-together openinference-instrumentation-langchain langchain-community

 

// 2. Khởi chạy Phoenix

Thêm dòng này để khởi chạy bảng điều khiển Phoenix:

import phoenix as px
px.launch_app()

 
Thao tác này sẽ khởi động một bảng điều khiển cục bộ tại http://localhost:6006.

 

// 3. Xây dựng Pipeline LangChain với Phoenix Callback

Hãy cùng tìm hiểu Phoenix bằng một trường hợp sử dụng. Chúng ta đang xây dựng một chatbot đơn giản được hỗ trợ bởi LangChain. Bây giờ, chúng ta muốn:

  • Gỡ lỗi xem lời nhắc có hoạt động không
  • Giám sát thời gian mô hình phản hồi
  • Theo dõi cấu trúc lời nhắc, việc sử dụng mô hình và các đầu ra
  • Xem tất cả những điều này một cách trực quan thay vì ghi log mọi thứ theo cách thủ công

 

// Bước 1: Khởi chạy bảng điều khiển Phoenix trong nền

import threading
import phoenix as px

# Khởi chạy ứng dụng Phoenix cục bộ (truy cập tại http://localhost:6006)
def run_phoenix():
    px.launch_app()

threading.Thread(target=run_phoenix, daemon=True).start()

 

// Bước 2: Đăng ký Phoenix với OpenTelemetry & Công cụ LangChain

from phoenix.otel import register
from openinference.instrumentation.langchain import LangChainInstrumentor

# Đăng ký trình truy vết OpenTelemetry
tracer_provider = register()

# Trang bị công cụ LangChain với Phoenix
LangChainInstrumentor().instrument(tracer_provider=tracer_provider)

 

// Bước 3: Khởi tạo LLM (API Together)

from langchain_together import Together

llm = Together(
    model="meta-llama/Llama-3-8b-chat-hf",
    temperature=0.7,
    max_tokens=256,
    together_api_key="your-api-key",  # Replace with your actual API key
)

 
Vui lòng không quên thay thế “your-api-key” bằng khóa API together.ai thực tế của bạn. Bạn có thể lấy nó bằng cách sử dụng liên kết này.

 

// Bước 4: Định nghĩa mẫu lời nhắc

from langchain.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant."),
    ("human", "{question}"),
])

 

// Bước 5: Kết hợp lời nhắc và mô hình thành một chuỗi

chain = prompt | llm

 

// Bước 6: Hỏi nhiều câu hỏi và in phản hồi

questions = [
    "What is the capital of France?",
    "Who discovered gravity?",
    "Give me a motivational quote about perseverance.",
    "Explain photosynthesis in one sentence.",
    "What is the speed of light?",
]

print("Phoenix đang chạy tại http://localhost:6006\
")

for q in questions:
    print(f" Câu hỏi: {q}")
    response = chain.invoke({"question": q})
    print(" Trả lời:", response, "\
")

 

// Bước 7: Giữ ứng dụng hoạt động để giám sát

try:
    while True:
        pass
except KeyboardInterrupt:
    print(" Đang thoát.")

 

Tìm hiểu Truy vết & Chỉ số của Phoenix

 
Trước khi xem đầu ra, trước tiên chúng ta nên hiểu các chỉ số của Phoenix. Bạn cần phải hiểu truy vết và span là gì:
Truy vết: Mỗi truy vết đại diện cho một lần chạy hoàn chỉnh của pipeline LLM của bạn. Ví dụ, mỗi câu hỏi như “Thủ đô của Pháp là gì?” sẽ tạo ra một truy vết mới.
Span: Mỗi truy vết bao gồm nhiều span, mỗi span đại diện cho một giai đoạn trong chuỗi của bạn:

  • ChatPromptTemplate.format: Định dạng lời nhắc
  • TogetherLLM.invoke: Gọi LLM
  • Bất kỳ thành phần tùy chỉnh nào bạn thêm vào

Các chỉ số hiển thị trên mỗi truy vết
 

Chỉ số Ý nghĩa & Tầm quan trọng
Độ trễ (ms) Đo tổng thời gian thực hiện chuỗi LLM hoàn chỉnh, bao gồm định dạng lời nhắc, phản hồi của LLM và xử lý hậu kỳ. Giúp xác định các nút thắt cổ chai về hiệu suất và gỡ lỗi các phản hồi chậm.
Token đầu vào Số lượng token được gửi đến mô hình. Quan trọng để giám sát kích thước đầu vào và kiểm soát chi phí API, vì hầu hết việc sử dụng đều dựa trên token.
Token đầu ra Số lượng token được tạo ra bởi mô hình. Hữu ích để hiểu tính chi tiết, chất lượng phản hồi và tác động chi phí.
Mẫu lời nhắc Hiển thị lời nhắc đầy đủ với các biến được chèn vào. Giúp xác nhận liệu lời nhắc có được cấu trúc và điền đúng cách hay không.
Văn bản đầu vào / đầu ra Hiển thị cả đầu vào của người dùng và phản hồi của mô hình. Hữu ích để kiểm tra chất lượng tương tác và phát hiện các ảo giác hoặc câu trả lời không chính xác.
Thời lượng Span Chia nhỏ thời gian thực hiện từng bước (như tạo lời nhắc hoặc gọi mô hình). Giúp xác định các nút thắt cổ chai về hiệu suất trong chuỗi.
Tên chuỗi Chỉ định phần nào của pipeline mà một span thuộc về (ví dụ: prompt.format, TogetherLLM.invoke). Giúp cô lập nơi các vấn đề đang xảy ra.
Thẻ / Siêu dữ liệu Thông tin bổ sung như tên mô hình, nhiệt độ, v.v. Hữu ích để lọc các lần chạy, so sánh kết quả và phân tích tác động của tham số.

 

Bây giờ, hãy truy cập http://localhost:6006 để xem bảng điều khiển Phoenix. Bạn sẽ thấy một cái gì đó như:
 

Bảng điều khiển Phoenix


 
Mở truy vết đầu tiên để xem chi tiết.
 

 

Truy vết đầu tiên của Phoenix

 

Tổng kết

 
Để tổng kết, Arize Phoenix giúp việc gỡ lỗi, truy vết và giám sát các ứng dụng LLM của bạn trở nên cực kỳ dễ dàng. Bạn không cần phải đoán xem điều gì đã xảy ra hoặc đào sâu vào các tệp log. Mọi thứ đều có sẵn: lời nhắc, phản hồi, thời gian và nhiều hơn nữa. Nó giúp bạn phát hiện vấn đề, hiểu hiệu suất và xây dựng trải nghiệm AI tốt hơn với ít căng thẳng hơn.

Nguồn: Sưu tầm

Công nghệ - 19/08/2025 21:13:07

Tìm hiểu cách xây dựng hệ thống phát hiện ngôn ngữ ký hiệu theo thời gian thực bằng AI, sử dụng DETR để tăng cường khả năng tiếp cận và đổi mới. Kết nối lời nói và cử chỉ.

Công nghệ - 18/08/2025 13:38:25

Tối ưu hóa các hệ thống RAG bằng cách tận dụng siêu dữ liệu để truy xuất thông tin chính xác và nhanh chóng hơn, giải quyết các thách thức về dữ liệu dư thừa hoặc lỗi thời với công cụ LangExtract nguồn mở. Khám phá cách LangExtract sử dụng các mô hình ngôn ngữ tiên tiến để trích xuất và cấu trúc siêu dữ liệu, tạo ra một quy trình truy xuất hợp lý và hiệu quả.

Công nghệ - 19/06/2025 03:05:09

Code xong chạy được là chưa đủ – phải biết khi nào nó "chết" nữa chứ 😅

Bạn đang triển khai ứng dụng trên Kubernetes, Docker hay môi trường production nào? Và bạn từng "toát mồ hôi" vì service chết mà không ai báo?

Công nghệ - 16/07/2025 13:41:17

Bạn có bao giờ tự hỏi tại sao trang web của mình tải chậm, đặc biệt là trên các thiết bị di động? Rất có thể, thủ phạm chính là những hình ảnh chưa được tối ưu. May mắn thay, có một công cụ miễn phí và cực kỳ hữu ích có thể giúp bạn giải quyết vấn đề này: Responsive Image Linter – một tiện ích mở rộng trên Chrome. Video này sẽ giới thiệu chi tiết về công cụ này, giúp bạn xác định và tối ưu hóa các hình ảnh gây tốn hiệu năng trên trang web của mình.

Công nghệ - 27/06/2025 03:15:44

⏳ Chậm 3 giây – Mất 50% người dùng. Đó không còn là lý thuyết, đó là thực tế.

Công nghệ - 11/12/2025 15:05:29

[Góc chuyện nghề] bán account game để đi học nghệ - bạn dám không?

Làm nghề 20 năm, gặp nhiều sinh viên, nhưng chiều qua tôi khá bất ngờ với một cậu em tên Quang. Em Quang muốn theo nghề BA và mong muốn lương 20 triệu sau khi làm việc 1.5 năm tới 2 năm trong nghề.

Công nghệ - 22/09/2025 08:59:20

Dừng ngay việc dùng DateTime.Now trong APIs, đó là ổ lỗi tiềm ẩn trong hệ thống của bạn

⏱️ Tôi từng nghĩ DateTime.Now là một thứ vô hại, đơn giản và tiện lợi, cho đến khi gặp những vấn đề về múi giờ. Những lỗi "tưởng chừng nhỏ" này lại chính là nguồn cơn của sự thất vọng và tốn kém thời gian cho nhiều đội ngũ phát triển.

Công nghệ - 14/03/2025 04:30:32

💡Bạn muốn tăng tốc tìm kiếm toàn văn nhưng hạ tầng hạn chế? Lucene có thể là giải pháp bất ngờ! Bài viết tiết lộ cách nó vượt trội hơn SQL Server, tối ưu truy vấn và những ứng dụng thực tế đáng khám phá.