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ệ

Xem tất cả