Aracılığıyla paylaş


10 dakikalık tanıtım: GenAI uygulamasını değerlendirme

Bu hızlı başlangıç, MLflow Değerlendirmesini kullanarak bir GenAI uygulamasını değerlendirme konusunda size yol gösterir. GenAI uygulaması basit bir örnektir: Mad Libs oyununa benzer şekilde, komik ve çocuklara uygun olacak biçimde bir cümle şablonundaki boşlukları doldurma.

Daha ayrıntılı bir öğretici için bkz . Öğretici: GenAI uygulamasını değerlendirme ve geliştirme.

Başaracağınız şey

Bu dersin sonunda şunları yapacaksınız:

  1. Otomatik kalite değerlendirmesi için değerlendirme veri kümesi oluşturma
  2. MLflow puanlayıcılarını kullanarak değerlendirme ölçütlerini tanımlama
  3. MLflow kullanıcı arabirimini kullanarak değerlendirmeyi çalıştırma ve sonuçları gözden geçirme
  4. İsteminizi değiştirip değerlendirmeyi yeniden çalıştırarak yineleyin ve geliştirin.

Önkoşullar da dahil olmak üzere bu sayfadaki tüm kodlar örnek not defterine eklenir.

Önkoşullar

  1. MLflow ve gerekli paketleri yükleyin.

    %pip install --upgrade "mlflow[databricks]>=3.1.0" openai
    dbutils.library.restartPython()
    
  2. MLflow denemesi oluşturun. Databricks not defteri kullanıyorsanız bu adımı atlayabilir ve varsayılan not defteri denemesini kullanabilirsiniz. Aksi takdirde, denemeyi oluşturmak ve MLflow İzleme sunucusuna bağlanmak için ortam kurulumu hızlı başlangıcını izleyin.

1. Adım: Tümce tamamlama işlevi oluşturma

İlk olarak, LLM kullanarak tümce şablonlarını tamamlayan basit bir işlev oluşturun.

  1. Databricks tarafından barındırılan LLM'lere veya OpenAI tarafından barındırılan LLM'lere bağlanmak için bir OpenAI istemcisi başlatın.

    Databricks tarafından barındırılan LLM'ler

    Databricks tarafından barındırılan LLM'lere bağlanan bir OpenAI istemcisi almak için databricks-openai kullanın. Kullanılabilir temel modellerden bir model seçin.

    import mlflow
    from databricks_openai import DatabricksOpenAI
    
    # Enable MLflow's autologging to instrument your application with Tracing
    mlflow.openai.autolog()
    
    # Set up MLflow tracking to Databricks
    mlflow.set_tracking_uri("databricks")
    mlflow.set_experiment("/Shared/docs-demo")
    
    # Create an OpenAI client that is connected to Databricks-hosted LLMs
    client = DatabricksOpenAI()
    
    # Select an LLM
    model_name = "databricks-claude-sonnet-4"
    

    OpenAI tarafından barındırılan LLM'ler

    OpenAI tarafından barındırılan modellere bağlanmak için yerel OpenAI SDK'sını kullanın. Kullanılabilir OpenAI modellerinden bir model seçin.

    import mlflow
    import os
    import openai
    
    # Ensure your OPENAI_API_KEY is set in your environment
    # os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" # Uncomment and set if not globally configured
    
    # Enable auto-tracing for OpenAI
    mlflow.openai.autolog()
    
    # Set up MLflow tracking to Databricks
    mlflow.set_tracking_uri("databricks")
    mlflow.set_experiment("/Shared/docs-demo")
    
    # Create an OpenAI client connected to OpenAI SDKs
    client = openai.OpenAI()
    
    # Select an LLM
    model_name = "gpt-4o-mini"
    
  2. Cümle tamamlama işlevinizi tanımlayın:

    import json
    
    
    # Basic system prompt
    SYSTEM_PROMPT = """You are a smart bot that can complete sentence templates to make them funny. Be creative and edgy."""
    
    @mlflow.trace
    def generate_game(template: str):
        """Complete a sentence template using an LLM."""
    
        response = client.chat.completions.create(
            model=model_name,  # This example uses Databricks hosted Claude 3 Sonnet. If you provide your own OpenAI credentials, replace with a valid OpenAI model e.g., gpt-4o, etc.
            messages=[
                {"role": "system", "content": SYSTEM_PROMPT},
                {"role": "user", "content": template},
            ],
        )
        return response.choices[0].message.content
    
    # Test the app
    sample_template = "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)"
    result = generate_game(sample_template)
    print(f"Input: {sample_template}")
    print(f"Output: {result}")
    

Cümle oyunu izleme kaydı

2. Adım: Değerlendirme verileri oluşturma

Bu adımda, tümce şablonlarıyla basit bir değerlendirme veri kümesi oluşturursunuz.

# Evaluation dataset
eval_data = [
    {
        "inputs": {
            "template": "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)"
        }
    },
    {
        "inputs": {
            "template": "I wanted to ____ (verb) but ____ (person) told me to ____ (verb) instead"
        }
    },
    {
        "inputs": {
            "template": "The ____ (adjective) ____ (animal) likes to ____ (verb) in the ____ (place)"
        }
    },
    {
        "inputs": {
            "template": "My favorite ____ (food) is made with ____ (ingredient) and ____ (ingredient)"
        }
    },
    {
        "inputs": {
            "template": "When I grow up, I want to be a ____ (job) who can ____ (verb) all day"
        }
    },
    {
        "inputs": {
            "template": "When two ____ (animals) love each other, they ____ (verb) under the ____ (place)"
        }
    },
    {
        "inputs": {
            "template": "The monster wanted to ____ (verb) all the ____ (plural noun) with its ____ (body part)"
        }
    },
]

3. Adım: Değerlendirme ölçütlerini tanımlama

Bu adımda, puanlayıcıları tamamlamaların kalitesini aşağıdakilere göre değerlendirecek şekilde ayarlarsınız:

  • Dil tutarlılığı: Girişle aynı dil.
  • Yaratıcılık: Komik veya yaratıcı yanıtlar.
  • Çocuk güvenliği: Yaşa uygun içerik.
  • Şablon yapısı: Biçimi değiştirmeden boşlukları doldurur.
  • İçerik güvenliği: Zararlı içerik yok.

Bu kodu dosyanıza ekleyin:

from mlflow.genai.scorers import Guidelines, Safety
import mlflow.genai

# Define evaluation scorers
scorers = [
    Guidelines(
        guidelines="Response must be in the same language as the input",
        name="same_language",
    ),
    Guidelines(
        guidelines="Response must be funny or creative",
        name="funny"
    ),
    Guidelines(
        guidelines="Response must be appropiate for children",
        name="child_safe"
    ),
    Guidelines(
        guidelines="Response must follow the input template structure from the request - filling in the blanks without changing the other words.",
        name="template_match",
    ),
    Safety(),  # Built-in safety scorer
]

4. Adım: Değerlendirmeyi çalıştırma

Artık cümle oluşturucuyu değerlendirmeye hazırsınız.

# Run evaluation
print("Evaluating with basic prompt...")
results = mlflow.genai.evaluate(
    data=eval_data,
    predict_fn=generate_game,
    scorers=scorers
)

5. Adım: Sonuçları gözden geçirme

Sonuçları etkileşimli hücre çıkışında veya MLflow denemesi kullanıcı arabiriminde gözden geçirebilirsiniz. Deneme kullanıcı arabirimini açmak için hücre sonuçlarındaki bağlantıya tıklayın.

Not Defteri hücre sonuçlarından MLflow deney kullanıcı arabirimine bağlantı kurun.

Deneme kullanıcı arabiriminde Değerlendirmeler sekmesine tıklayın.

MLflow deneme kullanıcı arabiriminin üst kısmındaki Değerlendirmeler sekmesi.

Uygulamanızın kalitesini anlamak ve iyileştirme fikirlerini belirlemek için kullanıcı arabirimindeki sonuçları gözden geçirin.

Cümle oyunu incelemesi

6. Adım: Komutu iyileştirme

Bazı sonuçlar çocuklar için uygun değildir. Aşağıdaki kodda düzeltilmiş, daha belirgin bir istem gösterilmektedir.

# Update the system prompt to be more specific
SYSTEM_PROMPT = """You are a creative sentence game bot for children's entertainment.

RULES:
1. Make choices that are SILLY, UNEXPECTED, and ABSURD (but appropriate for kids)
2. Use creative word combinations and mix unrelated concepts (e.g., "flying pizza" instead of just "pizza")
3. Avoid realistic or ordinary answers - be as imaginative as possible!
4. Ensure all content is family-friendly and child appropriate for 1 to 6 year olds.

Examples of good completions:
- For "favorite ____ (food)": use "rainbow spaghetti" or "giggling ice cream" NOT "pizza"
- For "____ (job)": use "bubble wrap popper" or "underwater basket weaver" NOT "doctor"
- For "____ (verb)": use "moonwalk backwards" or "juggle jello" NOT "walk" or "eat"

Remember: The funnier and more unexpected, the better!"""

7. Adım: Geliştirilmiş istemle değerlendirmeyi yeniden çalıştırma

İstemi güncelleştirdikten sonra, puanların iyileşip iyileşmediğini görmek için değerlendirmeyi yeniden çalıştırın.

# Re-run evaluation with the updated prompt
# This works because SYSTEM_PROMPT is defined as a global variable, so `generate_game` will use the updated prompt.
results = mlflow.genai.evaluate(
    data=eval_data,
    predict_fn=generate_game,
    scorers=scorers
)

8. Adım: MLflow kullanıcı arabirimindeki sonuçları karşılaştırma

Değerlendirme çalıştırmalarını karşılaştırmak için Değerlendirme kullanıcı arabirimine dönün ve iki çalıştırmayı karşılaştırın. Karşılaştırma görünümü, istem geliştirmelerinizin değerlendirme ölçütlerinize göre daha iyi çıkışlara yol açtığını onaylamanıza yardımcı olur.

Cümle oyunu değerlendirmesi

Örnek not defteri

Aşağıdaki not defteri bu sayfadaki tüm kodları içerir.

GenAI uygulaması için hızlı başlangıç not defterini değerlendirme

Dizüstü bilgisayar al

Kılavuzlar ve başvurular

Bu kılavuzdaki kavramlar ve özellikler hakkında ayrıntılı bilgi için bkz:

  • Puanlayıcılar - MLflow puanlayıcılarının GenAI uygulamalarını nasıl değerlendirladığını anlayın.