Cách Sử Dụng API Evals của OpenAI: Hướng Dẫn Toàn Diện

中村 拓也

中村 拓也

14 tháng 11 2025

Cách Sử Dụng API Evals của OpenAI: Hướng Dẫn Toàn Diện

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Giới thiệu về Khung API Evals của OpenAI

API Evals của OpenAI, được giới thiệu vào ngày 9 tháng 4 năm 2025, đại diện cho một bước tiến quan trọng trong việc đánh giá hệ thống các Mô Hình Ngôn Ngữ Lớn (LLMs). Mặc dù các khả năng đánh giá đã có sẵn thông qua bảng điều khiển OpenAI trong một thời gian, API Evals hiện cho phép các nhà phát triển định nghĩa các bài kiểm tra một cách chương trình, tự động hóa các lần đánh giá, và lặp lại nhanh chóng các gợi ý và triển khai mô hình trong các quy trình làm việc của riêng họ. Giao diện mạnh mẽ này hỗ trợ việc đánh giá có hệ thống đối với các đầu ra của mô hình, tạo điều kiện cho việc ra quyết định dựa trên chứng cứ khi chọn mô hình hoặc tinh chỉnh các chiến lược thiết kế gợi ý.

Tutorial này cung cấp một hướng dẫn kỹ thuật toàn diện để thực hiện và tận dụng API Evals của OpenAI. Chúng tôi sẽ khám phá kiến trúc cơ bản, các mẫu triển khai và các kỹ thuật tiên tiến để tạo ra các quy trình đánh giá vững chắc có thể đo lường một cách khách quan hiệu suất của các ứng dụng LLM của bạn.

API Evals của OpenAI: Nó Hoạt Động Như Thế Nào?

API Evals của OpenAI theo một cấu trúc phân cấp được xây dựng xung quanh hai khái niệm chính:

  1. Định cấu hình Đánh Giá - Phần chứa các thông số đánh giá bao gồm:

2. Chạy Đánh Giá - Các lần thực thi đánh giá riêng lẻ bao gồm:

Sự tách biệt của các mối quan tâm này cho phép tái sử dụng qua nhiều kịch bản kiểm tra khác nhau trong khi vẫn duy trì tính nhất quán trong các tiêu chuẩn đánh giá.

Mô Hình Đối Tượng API Evals

Các đối tượng cốt lõi trong API Evals tuân theo mối quan hệ này:

Thiết Lập Môi Trường Của Bạn Cho API Evals của OpenAI

Khi triển khai API Evals của OpenAI, sự lựa chọn của bạn về công cụ kiểm tra và phát triển có thể ảnh hưởng đáng kể đến năng suất và chất lượng kết quả của bạn.

Apidog nổi bật như một nền tảng API hàng đầu vượt trội hơn so với các giải pháp truyền thống như Postman trên một số khía cạnh chính, biến nó thành người bạn đồng hành lý tưởng khi làm việc với API Evals về mặt kỹ thuật phức tạp.

button

Trước khi thực hiện các đánh giá, bạn sẽ cần cấu hình chính xác môi trường phát triển của mình:

import openai
import os
import pydantic
import json
from typing import Dict, List, Any, Optional

# Configure API access with appropriate permissions
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "your-api-key")

# For production environments, consider using a more secure method
# such as environment variables loaded from a .env file

Thư viện khách hàng Python của OpenAI cung cấp giao diện để tương tác với API Evals. Đảm bảo bạn đang sử dụng phiên bản mới nhất có hỗ trợ API Evals:

pip install --upgrade openai>=1.20.0  # Phiên bản có hỗ trợ API Evals

Tạo Đánh Giá Đầu Tiên Của Bạn Với API Evals của OpenAI

Chúng ta sẽ triển khai quy trình đánh giá hoàn chỉnh bằng cách sử dụng API Evals của OpenAI. Chúng tôi sẽ tạo một hệ thống đánh giá cho một nhiệm vụ tóm tắt văn bản, thể hiện quá trình đầy đủ từ thiết kế đánh giá đến phân tích kết quả.

Định Nghĩa Mô Hình Dữ Liệu Cho API Evals của OpenAI

Đầu tiên, chúng ta cần định nghĩa cấu trúc của dữ liệu kiểm tra của mình bằng các mô hình Pydantic:

class ArticleSummaryData(pydantic.BaseModel):
    """Cấu trúc dữ liệu cho việc đánh giá tóm tắt bài báo."""
    article: str
    reference_summary: Optional[str] = None  # Tham chiếu tùy chọn cho so sánh

    class Config:
        frozen = True  # Đảm bảo tính bất biến cho việc đánh giá nhất quán

Mô hình này định nghĩa lược đồ cho dữ liệu đánh giá của chúng tôi, sẽ được API Evals sử dụng để xác minh đầu vào và cung cấp các biến mẫu cho các tiêu chí kiểm tra của chúng tôi.

Triển Khai Hàm Mục Tiêu Để Kiểm Tra API Evals

Tiếp theo, chúng tôi sẽ triển khai hàm tạo ra các đầu ra mà chúng tôi muốn đánh giá:

def generate_article_summary(article_text: str) -> Dict[str, Any]:
    """
    Tạo ra một tóm tắt ngắn gọn của một bài báo bằng cách sử dụng các mô hình của OpenAI.

    Args:
        article_text: Nội dung bài báo để tóm tắt

    Returns:
        Đối tượng phản hồi hoàn thành với tóm tắt
    """
    summarization_prompt = """
    Tóm tắt bài báo dưới đây một cách ngắn gọn và thông tin.
    Nắm bắt các điểm chính trong khi duy trì độ chính xác và ngữ cảnh.
    Giới hạn tóm tắt trong 1-2 đoạn.

    Bài báo:
    {{article}}
    """

    response = openai.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": summarization_prompt.replace("{{article}}", article_text)},
        ],
        temperature=0.3,  # Nhiệt độ thấp hơn cho các tóm tắt nhất quán hơn
        max_tokens=300
    )

    return response.model_dump()  # Chuyển đổi thành từ điển có thể tuần tự hóa

Cấu Hình Nguồn Dữ Liệu Cho API Evals của OpenAI

API Evals yêu cầu cấu hình nguồn dữ liệu được xác định mà chỉ định lược đồ của dữ liệu đánh giá của bạn:

data_source_config = {
    "type": "custom",
    "item_schema": ArticleSummaryData.model_json_schema(),
    "include_sample_schema": True,  # Bao gồm lược đồ đầu ra của mô hình tự động
}

print("Lược đồ Nguồn Dữ Liệu:")
print(json.dumps(data_source_config, indent=2))

Cấu hình này cho API Evals biết các trường nào mong đợi trong dữ liệu đánh giá của bạn và cách xử lý chúng.

Triển Khai Tiêu Chí Kiểm Tra Với API Evals của OpenAI

Bây giờ chúng ta sẽ định nghĩa cách mà API Evals nên đánh giá các đầu ra của mô hình. Chúng tôi sẽ tạo một đánh giá toàn diện với nhiều tiêu chí:

# 1. Đánh giá độ chính xác sử dụng phán đoán dựa trên mô hình
accuracy_grader = {
    "name": "Đánh Giá Độ Chính Xác Tóm Tắt",
    "type": "label_model",
    "model": "gpt-4o",
    "input": [
        {
            "role": "system",
            "content": """
            Bạn là một người đánh giá chuyên gia trong việc đánh giá độ chính xác của các tóm tắt bài báo.
            Đánh giá xem tóm tắt có đại diện chính xác các điểm chính của bài báo gốc hay không.
            Gán nhãn cho tóm tắt là một trong những:
            - "chính xác": Chứa tất cả thông tin chính, không có lỗi thực tế
            - "chính xác một phần": Chứa hầu hết thông tin chính, có lỗi nhỏ hoặc thiếu sót
            - "không chính xác": Lỗi đáng kể, thiếu thông tin quan trọng, hoặc thông tin sai lệch

            Cung cấp lời giải thích chi tiết cho sự đánh giá của bạn.
            """
        },
        {
            "role": "user",
            "content": """
            Bài báo gốc:
            {{item.article}}

            Tóm tắt để Đánh giá:
            {{sample.choices[0].message.content}}

            Đánh giá:
            """
        }
    ],
    "passing_labels": ["chính xác", "chính xác một phần"],
    "labels": ["chính xác", "chính xác một phần", "không chính xác"],
}

# 2. Đánh giá độ ngắn gọn
conciseness_grader = {
    "name": "Đánh Giá Độ Ngắn Gọn Tóm Tắt",
    "type": "label_model",
    "model": "gpt-4o",
    "input": [
        {
            "role": "system",
            "content": """
            Bạn là một người đánh giá chuyên gia trong việc đánh giá độ ngắn gọn của các tóm tắt bài báo.
            Đánh giá xem tóm tắt có trình bày thông tin một cách hiệu quả mà không có chi tiết không cần thiết hay không.
            Gán nhãn cho tóm tắt là một trong những:
            - "ngắn gọn": Độ dài hoàn hảo, không có thông tin không cần thiết
            - "chấp nhận được": Có phần dài dòng nhưng chung chung là phù hợp
            - "dài dòng": Quá dài hoặc chứa thông tin không cần thiết

            Cung cấp lời giải thích chi tiết cho sự đánh giá của bạn.
            """
        },
        {
            "role": "user",
            "content": """
            Tóm tắt để Đánh giá:
            {{sample.choices[0].message.content}}

            Đánh giá:
            """
        }
    ],
    "passing_labels": ["ngắn gọn", "chấp nhận được"],
    "labels": ["ngắn gọn", "chấp nhận được", "dài dòng"],
}

# 3. Nếu có sẵn các tóm tắt tham khảo, thêm một so sánh tham khảo
reference_comparison_grader = {
    "name": "Đánh Giá So Sánh Tham Khảo",
    "type": "label_model",
    "model": "gpt-4o",
    "input": [
        {
            "role": "system",
            "content": """
            So sánh tóm tắt đã tạo với tóm tắt tham khảo.
            Đánh giá xem tóm tắt đã tạo nắm bắt thông tin chính giống như tham khảo tốt bao nhiêu.
            Gán nhãn cho sự so sánh là một trong những:
            - "xuất sắc": Tương đương hoặc tốt hơn tham khảo
            - "tốt": Nắm bắt hầu hết thông tin quan trọng từ tham khảo
            - "không đạt": Thiếu thông tin quan trọng có trong tham khảo

            Cung cấp lời giải thích chi tiết cho sự đánh giá của bạn.
            """
        },
        {
            "role": "user",
            "content": """
            Tóm tắt tham khảo:
            {{item.reference_summary}}

            Tóm tắt đã tạo:
            {{sample.choices[0].message.content}}

            Đánh giá:
            """
        }
    ],
    "passing_labels": ["xuất sắc", "tốt"],
    "labels": ["xuất sắc", "tốt", "không đạt"],
    "condition": "item.reference_summary != null"  # Chỉ áp dụng khi tham khảo tồn tại
}

Tạo Cấu Hình Đánh Giá Với API Evals của OpenAI

Với lược đồ dữ liệu và tiêu chí kiểm tra của chúng tôi đã định nghĩa, chúng tôi có thể tạo cấu hình đánh giá:

eval_create_result = openai.evals.create(
    name="Đánh Giá Chất Lượng Tóm Tắt Bài Báo",
    metadata={
        "description": "Đánh giá toàn diện về chất lượng tóm tắt bài báo trên nhiều khía cạnh",
        "version": "1.0",
        "created_by": "Tổ Chức Của Bạn",
        "tags": ["tóm tắt", "chất lượng-nội-dung", "độ chính xác"]
    },
    data_source_config=data_source_config,
    testing_criteria=[
        accuracy_grader,
        conciseness_grader,
        reference_comparison_grader
    ],
)

eval_id = eval_create_result.id
print(f"Đã tạo đánh giá với ID: {eval_id}")
print(f"Xem trong bảng điều khiển: {eval_create_result.dashboard_url}")

Thực Hiện Các Lần Đánh Giá Với API Evals Của OpenAI

Chuẩn Bị Dữ Liệu Đánh Giá

Bây giờ chúng ta sẽ chuẩn bị dữ liệu kiểm tra cho đánh giá của mình:

test_articles = [
    {
        "article": """
        Cơ Quan Vũ Trụ Châu Âu (ESA) hôm nay đã công bố việc triển khai thành công vệ tinh quan sát Trái Đất mới của mình, Sentinel-6.
        Vệ tinh này sẽ theo dõi mực nước biển với độ chính xác chưa từng có, cung cấp dữ liệu quan trọng về tác động của biến đổi khí hậu.
        Sentinel-6 có công nghệ đo độ cao radar tiên tiến có khả năng đo sự thay đổi mực nước biển với độ chính xác đến từng milimét.
        Các nhà khoa học mong đợi dữ liệu này sẽ nâng cao đáng kể các mô hình khí hậu và các chiến lược lập kế hoạch ven biển.
        Vệ tinh, được phóng từ Căn Cứ Không Quân Vandenberg ở California, là một phần của chương trình Copernicus, một sự hợp tác
        giữa ESA, NASA, NOAA và các đối tác quốc tế khác.
        """,
        "reference_summary": """
        ESA đã thành công trong việc triển khai vệ tinh quan sát Trái Đất Sentinel-6, được thiết kế để theo dõi mực nước biển
        với độ chính xác đến milimét bằng cách sử dụng công nghệ đo độ cao radar tiên tiến. Nhiệm vụ này, một phần của chương trình Copernicus quốc tế,
        sẽ cung cấp dữ liệu quan trọng cho nghiên cứu về biến đổi khí hậu và lập kế hoạch ven biển.
        """
    },
    # Các bài báo kiểm tra bổ sung sẽ được thêm vào đây
]

# Xử lý dữ liệu kiểm tra của chúng tôi cho đánh giá
run_data = []
for item in test_articles:
    # Tạo tóm tắt bằng hàm của chúng tôi
    article_data = ArticleSummaryData(**item)
    result = generate_article_summary(article_data.article)

    # Chuẩn bị mục dữ liệu chạy
    run_data.append({
        "item": article_data.model_dump(),
        "sample": result
    })

Tạo và Thực Hiện Một Lần Đánh Giá

Với dữ liệu của chúng ta đã được chuẩn bị, chúng ta có thể tạo một lần đánh giá:

eval_run_result = openai.evals.runs.create(
    eval_id=eval_id,
    name="baseline-summarization-run",
    metadata={
        "model": "gpt-4o",
        "temperature": 0.3,
        "max_tokens": 300
    },
    data_source={
        "type": "jsonl",
        "source": {
            "type": "file_content",
            "content": run_data,
        }
    },
)

print(f"Lần đánh giá đã tạo: {eval_run_result.id}")
print(f"Xem kết quả chi tiết: {eval_run_result.report_url}")

Lấy Và Phân Tích Kết Quả Đánh Giá Từ API Evals

Khi một lần đánh giá hoàn tất, bạn có thể lấy kết quả chi tiết:

def analyze_run_results(run_id: str) -> Dict[str, Any]:
    """
    Lấy và phân tích kết quả từ một lần đánh giá.

    Args:
        run_id: ID của lần đánh giá

    Returns:
        Từ điển chứa kết quả đã được phân tích
    """
    # Lấy chi tiết lần chạy
    run_details = openai.evals.runs.retrieve(run_id)

    # Trích xuất kết quả
    results = {}

    # Tính toán tỷ lệ vượt qua tổng quát
    if run_details.results and "pass_rate" in run_details.results:
        results["overall_pass_rate"] = run_details.results["pass_rate"]

    # Trích xuất các số liệu cụ thể theo tiêu chí
    if run_details.criteria_results:
        results["criteria_performance"] = {}
        for criterion, data in run_details.criteria_results.items():
            results["criteria_performance"][criterion] = {
                "pass_rate": data.get("pass_rate", 0),
                "sample_count": data.get("total_count", 0)
            }

    # Trích xuất các trường hợp thất bại để phân tích thêm
    if run_details.raw_results:
        results["failure_analysis"] = [
            {
                "item": item.get("item", {}),
                "result": item.get("result", {}),
                "criteria_results": item.get("criteria_results", {})
            }
            for item in run_details.raw_results
            if not item.get("passed", True)
        ]

    return results

# Phân tích chạy của chúng tôi
results_analysis = analyze_run_results(eval_run_result.id)
print(json.dumps(results_analysis, indent=2))

Kỹ Thuật Nâng Cao API Evals của OpenAI

Triển Khai Kiểm Tra A/B Với API Evals

API Evals xuất sắc khi so sánh các triển khai khác nhau. Đây là cách để thiết lập một bài kiểm tra A/B giữa hai cấu hình mô hình:

def generate_summary_alternative_model(article_text: str) -> Dict[str, Any]:
    """Triển khai thay thế sử dụng cấu hình mô hình khác."""
    response = openai.chat.completions.create(
        model="gpt-4o-mini",  # Sử dụng một mô hình khác
        messages=[
            {"role": "system", "content": "Tóm tắt bài báo này một cách ngắn gọn."},
            {"role": "user", "content": article_text},
        ],
        temperature=0.7,  # Nhiệt độ cao hơn cho so sánh
        max_tokens=250
    )

    return response.model_dump()

# Xử lý dữ liệu kiểm tra của chúng tôi với mô hình thay thế
alternative_run_data = []
for item in test_articles:
    article_data = ArticleSummaryData(**item)
    result = generate_summary_alternative_model(article_data.article)

    alternative_run_data.append({
        "item": article_data.model_dump(),
        "sample": result
    })

# Tạo lần đánh giá thay thế
alternative_eval_run = openai.evals.runs.create(
    eval_id=eval_id,
    name="alternative-model-run",
    metadata={
        "model": "gpt-4o-mini",
        "temperature": 0.7,
        "max_tokens": 250
    },
    data_source={
        "type": "jsonl",
        "source": {
            "type": "file_content",
            "content": alternative_run_data,
        }
    },
)

# So sánh kết quả một cách chương trình
def compare_evaluation_runs(run_id_1: str, run_id_2: str) -> Dict[str, Any]:
    """
    So sánh kết quả từ hai lần đánh giá.

    Args:
        run_id_1: ID của lần đánh giá thứ nhất
        run_id_2: ID của lần đánh giá thứ hai

    Returns:
        Từ điển chứa phân tích so sánh
    """
    run_1_results = analyze_run_results(run_id_1)
    run_2_results = analyze_run_results(run_id_2)

    comparison = {
        "overall_comparison": {
            "run_1_pass_rate": run_1_results.get("overall_pass_rate", 0),
            "run_2_pass_rate": run_2_results.get("overall_pass_rate", 0),
            "difference": run_1_results.get("overall_pass_rate", 0) - run_2_results.get("overall_pass_rate", 0)
        },
        "criteria_comparison": {}
    }

    # So sánh từng tiêu chí
    all_criteria = set(run_1_results.get("criteria_performance", {}).keys()) | set(run_2_results.get("criteria_performance", {}).keys())

    for criterion in all_criteria:
        run_1_criterion = run_1_results.get("criteria_performance", {}).get(criterion, {})
        run_2_criterion = run_2_results.get("criteria_performance", {}).get(criterion, {})

        comparison["criteria_comparison"][criterion] = {
            "run_1_pass_rate": run_1_criterion.get("pass_rate", 0),
            "run_2_pass_rate": run_2_criterion.get("pass_rate", 0),
            "difference": run_1_criterion.get("pass_rate", 0) - run_2_criterion.get("pass_rate", 0)
        }

    return comparison

# So sánh hai lần chạy của chúng tôi
comparison_results = compare_evaluation_runs(eval_run_result.id, alternative_eval_run.id)
print(json.dumps(comparison_results, indent=2))

Phát Hiện Suy Giảm Với API Evals Của OpenAI

Một trong những ứng dụng có giá trị nhất của API Evals là phát hiện suy giảm khi cập nhật các gợi ý:

def create_regression_detection_pipeline(eval_id: str, baseline_run_id: str) -> None:
    """
    Tạo một quy trình phát hiện suy giảm so sánh một gợi ý mới
    với một lần chạy cơ sở.

    Args:
        eval_id: ID của cấu hình đánh giá
        baseline_run_id: ID của lần chạy cơ sở để so sánh
    """

    def test_prompt_for_regression(new_prompt: str, threshold: float = 0.95) -> Dict[str, Any]:
        """
        Kiểm tra xem một gợi ý mới có gây suy giảm so với cơ sở hay không.

        Args:
            new_prompt: Gợi ý mới để kiểm tra
            threshold: Tỷ lệ hiệu suất tối thiểu chấp nhận được (mới/cơ sở)

        Returns:
            Từ điển chứa phân tích suy giảm
        """
        # Định nghĩa hàm sử dụng gợi ý mới
        def generate_summary_new_prompt(article_text: str) -> Dict[str, Any]:
            response = openai.chat.completions.create(
                model="gpt-4o",  # Mô hình giống như cơ sở
                messages=[
                    {"role": "system", "content": new_prompt},
                    {"role": "user", "content": article_text},
                ],
                temperature=0.3,
                max_tokens=300
            )
            return response.model_dump()

        # Xử lý dữ liệu kiểm tra với gợi ý mới
        new_prompt_run_data = []
        for item in test_articles:
            article_data = ArticleSummaryData(**item)
            result = generate_summary_new_prompt(article_data.article)

            new_prompt_run_data.append({
                "item": article_data.model_dump(),
                "sample": result
            })

        # Tạo lần đánh giá cho gợi ý mới
        new_prompt_run = openai.evals.runs.create(
            eval_id=eval_id,
            name=f"regression-test-{int(time.time())}",
            metadata={
                "prompt": new_prompt,
                "test_type": "regression"
            },
            data_source={
                "type": "jsonl",
                "source": {
                    "type": "file_content",
                    "content": new_prompt_run_data,
                }
            },
        )

        # Chờ hoàn thành (trong sản xuất, bạn có thể muốn triển khai xử lý asyn)
        # Đây là một triển khai đơn giản hóa
        time.sleep(10)  # Chờ đánh giá hoàn thành

        # So sánh với cơ sở
        comparison = compare_evaluation_runs(baseline_run_id, new_prompt_run.id)

        # Xác định xem có suy giảm hay không
        baseline_pass_rate = comparison["overall_comparison"]["run_1_pass_rate"]
        new_pass_rate = comparison["overall_comparison"]["run_2_pass_rate"]

        regression_detected = (new_pass_rate / baseline_pass_rate if baseline_pass_rate > 0 else 0) < threshold

        return {
            "regression_detected": regression_detected,
            "baseline_pass_rate": baseline_pass_rate,
            "new_pass_rate": new_pass_rate,
            "performance_ratio": new_pass_rate / baseline_pass_rate if baseline_pass_rate > 0 else 0,
            "threshold": threshold,
            "detailed_comparison": comparison,
            "report_url": new_prompt_run.report_url
        }

    return test_prompt_for_regression

# Tạo một quy trình phát hiện suy giảm
regression_detector = create_regression_detection_pipeline(eval_id, eval_run_result.id)

# Kiểm tra một gợi ý có thể gây vấn đề
problematic_prompt = """
Tóm tắt bài báo này một cách chi tiết thái quá, đảm bảo bao gồm mọi điểm nhỏ.
Tóm tắt nên toàn diện và không bỏ sót điều gì.
"""

regression_analysis = regression_detector(problematic_prompt)
print(json.dumps(regression_analysis, indent=2))

Làm Việc Với Các Chỉ Số Tùy Chỉnh Trong API Evals Của OpenAI

Đối với các nhu cầu đánh giá chuyên biệt, bạn có thể triển khai các chỉ số tùy chỉnh:

# Ví dụ về đánh giá điểm số số tùy chỉnh
numeric_score_grader = {
    "name": "Điểm Chất Lượng Tóm Tắt",
    "type": "score_model",
    "model": "gpt-4o",
    "input": [
        {
            "role": "system",
            "content": """
            Bạn là một người đánh giá chuyên gia trong việc đánh giá chất lượng của các tóm tắt bài báo.
            Đánh giá chất lượng tổng thể của tóm tắt trên thang điểm từ 1.0 đến 10.0, trong đó:
            - 1.0-3.9: Chất lượng kém, có nhiều vấn đề nghiêm trọng
            - 4.0-6.9: Chất lượng chấp nhận được với chỗ cần cải thiện
            - 7.0-8.9: Chất lượng tốt, đáp ứng kỳ vọng
            - 9.0-10.0: Chất lượng xuất sắc, vượt qua kỳ vọng

            Cung cấp một điểm số cụ thể và lý do chi tiết.
            """
        },
        {
            "role": "user",
            "content": """
            Bài báo gốc:
            {{item.article}}

            Tóm tắt để Đánh giá:
            {{sample.choices[0].message.content}}

            Điểm (1.0-10.0):
            """
        }
    ],
    "passing_threshold": 7.0,  # Điểm tối thiểu để vượt qua
    "min_score": 1.0,
    "max_score": 10.0
}

# Thêm điều này vào tiêu chí kiểm tra của bạn khi tạo một đánh giá

Tích Hợp API Evals của OpenAI Vào Quy Trình Phát Triển

Tích Hợp CI/CD Với API Evals

Tích hợp API Evals vào đường ống CI/CD của bạn đảm bảo chất lượng nhất quán:

def ci_cd_evaluation_workflow(
    prompt_file_path: str,
    baseline_eval_id: str,
    baseline_run_id: str,
    threshold: float = 0.95
) -> bool:
    """
    Tích hợp CI/CD để đánh giá các gợi ý mô hình trước khi triển khai.

    Args:
        prompt_file_path: Đường dẫn đến tệp gợi ý đang được cập nhật
        baseline_eval_id: ID của cấu hình đánh giá cơ sở
        baseline_run_id: ID của lần chạy cơ sở để so sánh
        threshold: Tỷ lệ hiệu suất tối thiểu chấp nhận được

    Returns:
        Boolean cho biết liệu gợi ý mới có vượt qua đánh giá hay không
    """
    # Tải gợi ý mới từ hệ thống kiểm soát phiên bản
    with open(prompt_file_path, 'r') as f:
        new_prompt = f.read()

    # Tạo phát hiện suy giảm sử dụng cơ sở
    regression_detector = create_regression_detection_pipeline(baseline_eval_id, baseline_run_id)

    # Kiểm tra gợi ý mới
    regression_analysis = regression_detector(new_prompt)

    # Xác định xem gợi ý có an toàn để triển khai hay không
    is_approved = not regression_analysis["regression_detected"]

    # Ghi lại kết quả đánh giá
    print(f"Kết quả đánh giá cho {prompt_file_path}")
    print(f"Tỷ lệ vượt qua cơ sở: {regression_analysis['baseline_pass_rate']:.2f}")
    print(f"Tỷ lệ vượt qua gợi ý mới: {regression_analysis['new_pass_rate']:.2f}")
    print(f"Tỷ lệ hiệu suất: {regression_analysis['performance_ratio']:.2f}")
    print(f"Quyết định triển khai: {'ĐƯỢC CHẤP NHẬN' if is_approved else 'BỊ TỪ CHỐI'}")
    print(f"Báo cáo chi tiết: {regression_analysis['report_url']}")

    return is_approved

Giám Sát Định Kỳ Với API Evals Của OpenAI

Đánh giá thường xuyên giúp phát hiện hiện tượng trôi dạt hoặc suy giảm mô hình:

def schedule_periodic_evaluation(
    eval_id: str,
    baseline_run_id: str,
    interval_hours: int = 24
) -> None:
    """
    Lên lịch đánh giá định kỳ để giám sát sự thay đổi hiệu suất.

    Args:
        eval_id: ID của cấu hình đánh giá
        baseline_run_id: ID của lần chạy cơ sở để so sánh
        interval_hours: Tần suất đánh giá theo giờ
    """
    # Trong một hệ thống sản xuất, bạn sẽ sử dụng một bộ lập lịch tác vụ như Airflow,
    # Celery, hoặc giải pháp bản địa đám mây. Đây là một ví dụ đơn giản hóa.

    def perform_periodic_evaluation():
        while True:
            try:
                # Chạy cấu hình sản xuất hiện tại chống lại đánh giá
                print(f"Đang thực hiện đánh giá theo lịch vào {datetime.now()}")

                # Triển khai logic đánh giá của bạn ở đây, tương tự như kiểm tra suy giảm

                # Ngủ cho đến lần chạy theo lịch tiếp theo
                time.sleep(interval_hours * 60 * 60)
            except Exception as e:
                print(f"Lỗi trong đánh giá theo lịch: {e}")
                # Triển khai xử lý lỗi và cảnh báo

    # Trong một triển khai thực tế, bạn sẽ quản lý luồng này một cách hợp lý
    # hoặc sử dụng một hệ thống lập lịch dành riêng
    import threading
    evaluation_thread = threading.Thread(target=perform_periodic_evaluation)
    evaluation_thread.daemon = True
    evaluation_thread.start()

Mô Hình Sử Dụng Nâng Cao API Evals Của OpenAI

Quy Trình Đánh Giá Nhiều Giai Đoạn

Đối với các ứng dụng phức tạp, triển khai quy trình đánh giá nhiều giai đoạn:

def create_multi_stage_evaluation_pipeline(
    article_data: List[Dict[str, str]]
) -> Dict[str, Any]:
    """
    Tạo quy trình đánh giá nhiều giai đoạn cho việc tạo nội dung.

    Args:
        article_data: Danh sách các bài báo để đánh giá

    Returns:
        Từ điển chứa kết quả đánh giá từ mỗi giai đoạn
    """
    # Giai đoạn 1: Đánh giá tạo nội dung
    generation_eval_id = create_content_generation_eval()
    generation_run_id = run_content_generation_eval(generation_eval_id, article_data)

    # Giai đoạn 2: Đánh giá độ chính xác thực tế
    accuracy_eval_id = create_factual_accuracy_eval()
    accuracy_run_id = run_factual_accuracy_eval(accuracy_eval_id, article_data)

    # Giai đoạn 3: Đánh giá tông và phong cách
    tone_eval_id = create_tone_style_eval()
    tone_run_id = run_tone_style_eval(tone_eval_id, article_data)

    # Tập hợp kết quả từ tất cả các giai đoạn
    results = {
        "generation": analyze_run_results(generation_run_id),
        "accuracy": analyze_run_results(accuracy_run_id),
        "tone": analyze_run_results(tone_run_id)
    }

    # Tính toán điểm tổng hợp
    composite_score = (
        results["generation"].get("overall_pass_rate", 0) * 0.4 +
        results["accuracy"].get("overall_pass_rate", 0) * 0.4 +
        results["tone"].get("overall_pass_rate", 0) * 0.2
    )

    results["composite_score"] = composite_score

    return results

Kết Luận: Làm Chủ API Evals Của OpenAI

API Evals của OpenAI đại diện cho một bước tiến quan trọng trong việc đánh giá hệ thống LLM, cung cấp cho các nhà phát triển các công cụ mạnh mẽ để đánh giá hiệu suất mô hình một cách khách quan và đưa ra quyết định dựa trên dữ liệu.

Khi các LLM ngày càng được tích hợp vào các ứng dụng quan trọng, tầm quan trọng của việc đánh giá có hệ thống ngày càng tăng. API Evals của OpenAI cung cấp cơ sở hạ tầng cần thiết để triển khai những thực tiễn đánh giá này quy mô lớn, đảm bảo rằng các hệ thống AI của bạn giữ vững, đáng tin cậy và phù hợp với kỳ vọng của bạn theo thời gian.

Nếu bạn ngừng lại ở đây thì sao? Bằng cách tích hợp Apidog vào quy trình làm việc của API Evals của bạn sẽ mang lại những lợi ích đáng kể:

  1. Kiểm Tra Dễ Dàng: Các mẫu yêu cầu và khả năng kiểm tra tự động của Apidog giảm thời gian phát triển khi thực hiện các quy trình đánh giá
  2. Tài Liệu Nâng Cao: Tạo tài liệu API tự động đảm bảo các tiêu chí và triển khai đánh giá của bạn được ghi chép rõ ràng
  3. Hợp Tác Nhóm: Các không gian làm việc chia sẻ tạo điều kiện cho các tiêu chuẩn đánh giá nhất quán trên các nhóm phát triển
  4. Tích Hợp CI/CD: Các khả năng dòng lệnh cho phép tích hợp với các đường ống CI/CD hiện có để kiểm tra tự động
  5. Phân Tích Hình Ảnh: Các công cụ hình ảnh tích hợp giúp diễn giải nhanh chóng các kết quả đánh giá phức tạp
button
button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API