Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Inbyggda utvärderare är utmärkta och direkt användbara för att börja utvärdera programmets genereringar. Men du kanske vill skapa en egen kodbaserad eller promptbaserad utvärderare för att tillgodose dina specifika utvärderingsbehov.
Kodbaserade utvärderare
Ibland behövs inte en stor språkmodell för vissa utvärderingsmått. Det här är när kodbaserade utvärderare kan ge dig flexibiliteten att definiera mått baserat på funktioner eller anropsbar klass. Du kan till exempel skapa en egen kodbaserad utvärderare genom att skapa en enkel Python-klass som beräknar längden på ett svar i answer_length.py
under katalogen answer_len/
:
Exempel på kodbaserad utvärderare: Svarslängd
class AnswerLengthEvaluator:
def __init__(self):
pass
# A class is made a callable my implementing the special method __call__
def __call__(self, *, answer: str, **kwargs):
return {"answer_length": len(answer)}
Kör sedan utvärderaren på en rad med data genom att importera en anropsbar klass:
from answer_len.answer_length import AnswerLengthEvaluator
answer_length_evaluator = AnswerLengthEvaluator()
answer_length = answer_length_evaluator(answer="What is the speed of light?")
Kodbaserade utvärderarutdata: Svarslängd
{"answer_length":27}
Frågebaserade utvärderare
Om du vill skapa en egen frågebaserad utvärderingsmodell för stora språk eller en AI-assisterad anteckning kan du skapa en anpassad utvärderare baserat på en Prompty-fil . Prompty är en fil med .prompty
tillägg för att utveckla en promptmall. Prompty-resursen är en markdown-fil med ett ändrat förtext. Fronten är i YAML-format som innehåller många metadatafält som definierar modellkonfiguration och förväntade indata för Prompty. Nu ska vi skapa en anpassad utvärderare FriendlinessEvaluator
för att mäta ett svars vänlighet.
Exempel på frågabaserad utvärderare: Utvärdering av användarvänlighet
Skapa först en friendliness.prompty
fil som beskriver definitionen av måttet för användarvänlighet och dess klassificeringskriteriet:
---
name: Friendliness Evaluator
description: Friendliness Evaluator to measure warmth and approachability of answers.
model:
api: chat
configuration:
type: azure_openai
azure_endpoint: ${env:AZURE_OPENAI_ENDPOINT}
azure_deployment: gpt-4o-mini
parameters:
model:
temperature: 0.1
inputs:
response:
type: string
outputs:
score:
type: int
explanation:
type: string
---
system:
Friendliness assesses the warmth and approachability of the answer. Rate the friendliness of the response between one to five stars using the following scale:
One star: the answer is unfriendly or hostile
Two stars: the answer is mostly unfriendly
Three stars: the answer is neutral
Four stars: the answer is mostly friendly
Five stars: the answer is very friendly
Please assign a rating between 1 and 5 based on the tone and demeanor of the response.
**Example 1**
generated_query: I just don't feel like helping you! Your questions are getting very annoying.
output:
{"score": 1, "reason": "The response is not warm and is resisting to be providing helpful information."}
**Example 2**
generated_query: I'm sorry this watch is not working for you. Very happy to assist you with a replacement.
output:
{"score": 5, "reason": "The response is warm and empathetic, offering a resolution with care."}
**Here the actual conversation to be scored:**
generated_query: {{response}}
output:
Skapa sedan en klass FriendlinessEvaluator
för att läsa in prompty-filen och bearbeta utdata med json-format:
import os
import json
import sys
from promptflow.client import load_flow
class FriendlinessEvaluator:
def __init__(self, model_config):
current_dir = os.path.dirname(__file__)
prompty_path = os.path.join(current_dir, "friendliness.prompty")
self._flow = load_flow(source=prompty_path, model={"configuration": model_config})
def __call__(self, *, response: str, **kwargs):
llm_response = self._flow(response=response)
try:
response = json.loads(llm_response)
except Exception as ex:
response = llm_response
return response
Nu kan du skapa en egen Prompty-baserad utvärderare och köra den på en rad med data:
from friendliness.friend import FriendlinessEvaluator
friendliness_eval = FriendlinessEvaluator(model_config)
friendliness_score = friendliness_eval(response="I will not apologize for my behavior!")
Fråga-baserade utvärderare utdata: Användarvänlighet utvärderare
{
'score': 1,
'reason': 'The response is hostile and unapologetic, lacking warmth or approachability.'
}