DeepEval рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо Kaggle рдХреЛ рдЕрдкрдиреЗ рдХреЛрдбрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдиреЛрдЯрдмреБрдХ рдмрдирд╛рдПрдБред┬а
рд╣рдо OpenAI API рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ API рдХреБрдВрдЬреА рдмрдирд╛рдПрдБред рдлрд┐рд░, Kaggle рдХреА "Secrets" рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ OpenAI API рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж, pip рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DeepEval рдФрд░ BitsandBytes Python рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:
%%capture
%pip install -U deepeval
%pip install -U bitsandbytes
рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕реЗ OpenAI API рдХреБрдВрдЬреА рд▓реЛрдб рдХрд░реЗрдВ:
import os
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
secret_value_0 = user_secrets.get_secret("OPENAI_API_KEY")
os.environ['OPENAI_API_KEY'] = secret_value_0
Jupyter Notebook рдореИрдЬрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдореНрди Python рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВред┬а
test_relevancy.py рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЯреЗрд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ GPT-4o рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ LLM рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреА рд╣реИред рдпрд╣ рджрд┐рдП рдЧрдП рдЗрдирдкреБрдЯ рдкрд░ рдореЙрдбрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░рд┐рдЯреНрд░реАрд╡рд▓ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрддреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
%%file test_relevancy.py
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import AnswerRelevancyMetric
def test_relevancy():
relevancy_metric = AnswerRelevancyMetric(threshold=0.5, model="gpt-4o")
test_case_1 = LLMTestCase(
input="Can I return these shoes after 30 days?",
actual_output="Unfortunately, returns are only accepted within 30 days of purchase.",
retrieval_context=[
"All customers are eligible for a 30-day full refund at no extra cost.",
"Returns are only accepted within 30 days of purchase.",
],
)
assert_test(test_case_1, [relevancy_metric])
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ:
!deepeval test run test_relevancy.py
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдо рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ LLM рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рд╕рдлрд▓рддрд╛ рдкреВрд░реНрд╡рдХ рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рдФрд░ 1.0 рдХрд╛ рдкрд░рдлреЗрдХреНрдЯ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рд╕реНрдХреЛрд░ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рддрд░рд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдереАред┬а
рдореВрд▓реНрдпрд╛рдВрдХрди 3.04 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖ, рдФрд░ рдХреБрд▓ рдЕрдиреБрдорд╛рдирд┐рдд рдЯреЛрдХрди рд▓рд╛рдЧрдд $0.0027425 USD рд░рд╣реА:
Evaluating 1 test case(s) in parallel: |тЦИ|100% (1/1) [Time Taken: 00:03, 3.00s/
.Running teardown with pytest sessionfinish...
============================= slowest 10 durations =============================
3.03s call test_relevancy.py::test_relevancy
(2 durations < 0.005s hidden. Use -vv to show these durations.)
1 passed, 2 warnings in 3.04s
Test Results
тФПтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФУ
тФГ тФГ тФГ тФГ тФГ Overall Success тФГ
тФГ Test case тФГ Metric тФГ Score тФГ Status тФГ Rate тФГ
тФбтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФй
тФВ test_relevancy тФВ тФВ тФВ тФВ 100.0% тФВ
тФВ тФВ Answer тФВ 1.0 тФВ PASSED тФВ тФВ
тФВ тФВ Relevancy тФВ (threshold=0.... тФВ тФВ тФВ
тФВ тФВ тФВ evaluation тФВ тФВ тФВ
тФВ тФВ тФВ model=gpt-4o, тФВ тФВ тФВ
тФВ тФВ тФВ reason=The тФВ тФВ тФВ
тФВ тФВ тФВ score is 1.00 тФВ тФВ тФВ
тФВ тФВ тФВ because the тФВ тФВ тФВ
тФВ тФВ тФВ response was тФВ тФВ тФВ
тФВ тФВ тФВ perfectly тФВ тФВ тФВ
тФВ тФВ тФВ relevant and тФВ тФВ тФВ
тФВ тФВ тФВ addressed the тФВ тФВ тФВ
тФВ тФВ тФВ question тФВ тФВ тФВ
тФВ тФВ тФВ directly тФВ тФВ тФВ
тФВ тФВ тФВ without any тФВ тФВ тФВ
тФВ тФВ тФВ irrelevant тФВ тФВ тФВ
тФВ тФВ тФВ information. тФВ тФВ тФВ
тФВ тФВ тФВ Great job!, тФВ тФВ тФВ
тФВ тФВ тФВ error=None) тФВ тФВ тФВ
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
Total estimated evaluation tokens cost: 0.0027425 USD
тЬУ Tests finished ЁЯОЙ! Run 'deepeval login' to save and analyze evaluation results
on Confident AI.
тА╝я╕П Friendly reminder ЁЯШЗ: You can also run evaluations with ALL of deepeval's
metrics directly on Confident AI instead.
рдЖрдк Hugging Face рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА LLMs рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП HumanEval: A Benchmark for Evaluating LLM Code Generation Capabilities рдЧрд╛рдЗрдб рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВред
G-Eval рдореЗрдЯреНрд░рд┐рдХ рдкрд░ LLM рдХрд╛ рдкрд░реАрдХреНрд╖рдг
G-Eval рдПрдХ LLM рдореВрд▓реНрдпрд╛рдВрдХрди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рдЪреЗрди-рдСрдл-рдереЙрдЯ (CoT) рд░реАрдЬрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ LLM рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред DeepEval рдХрд╛ рд╕рдмрд╕реЗ рдЕрдиреБрдХреВрд▓рдиреАрдп рдореЗрдЯреНрд░рд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, G-Eval рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ-рдХреЗрд╕ рдХреЛ рдорд╛рдирд╡-рд╕рдорд╛рди рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ LLM рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо G-Eval рдореЗрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ LLM рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред
1. G-Eval рдореЗрдЯреНрд░рд┐рдХ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛
рд╣рдо G-eval рдореЗрдЯреНрд░рд┐рдХ рдмрдирд╛рдПрдБрдЧреЗ рдФрд░ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рджреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдореЙрдбрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рддрдереНрдпрд╛рддреНрдордХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реЛрдВ рдкрд░ рдкрд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдЪреВрдХреЛрдВ рдкрд░ рд╣рд▓реНрдХрд╛ рджрдВрдб рджрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрдмрдХрд┐ рдЕрд╕реНрдкрд╖реНрдЯ рднрд╛рд╖рд╛ рдпрд╛ рднрд┐рдиреНрди рдордд рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдВ:
from deepeval.metrics import GEval
from deepeval.test_case import LLMTestCaseParams
correctness_metric = GEval(
name="Correctness",
model="gpt-4o",
evaluation_params=[
LLMTestCaseParams.EXPECTED_OUTPUT,
LLMTestCaseParams.ACTUAL_OUTPUT],
evaluation_steps=[
"Check whether the facts in 'actual output' contradicts any facts in 'expected output'",
"You should also lightly penalize omission of detail, and focus on the main idea",
"Vague language, or contradicting OPINIONS, are OK"
],
)
2. рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдмрдирд╛рдирд╛
рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рддреАрди LLM рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдмрдирд╛рдПрдБред рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рдкреНрд░реЙрдореНрдкреНрдЯ, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдирд░реЗрдЯреЗрдб рдЖрдЙрдЯрдкреБрдЯ, рдФрд░ рдПрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред GPT-4o рдореЙрдбрд▓ рдЗрдирдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛:
from deepeval.test_case import LLMTestCase
from deepeval.dataset import EvaluationDataset
first_test_case = LLMTestCase(input="What are the main causes of deforestation?",
actual_output="The main causes of deforestation include agricultural expansion, logging, infrastructure development, and urbanization.",
expected_output="The main causes of deforestation include agricultural expansion, logging, infrastructure development, and urbanization.")
second_test_case = LLMTestCase(input="Define the term 'artificial intelligence'.",
actual_output="Artificial intelligence is the simulation of human intelligence by machines.",
expected_output="Artificial intelligence refers to the simulation of human intelligence in machines that are programmed to think and learn like humans, including tasks such as problem-solving, decision-making, and language understanding.")
third_test_case = LLMTestCase(input="List the primary colors.",
actual_output="The primary colors are green, orange, and purple.",
expected_output="The primary colors are red, blue, and yellow.")
3. рдореВрд▓реНрдпрд╛рдВрдХрди рдбреЗрдЯрд╛рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛
рд╣рдо рддреАрдиреЛрдВ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдбреЗрдЯрд╛ рд╕реЗрдЯ рдмрдирд╛рдПрдБрдЧреЗ:
test_cases = [first_test_case, second_test_case, third_test_case]
dataset = EvaluationDataset(test_cases=test_cases)
4. G-Eval рдореЗрдЯреНрд░рд┐рдХ рдЪрд▓рд╛рдирд╛
рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ G-Eval рдореВрд▓реНрдпрд╛рдВрдХрди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ:┬а
evaluation_output = dataset.evaluate([correctness_metric])
рдЖрдЙрдЯрдкреБрдЯ:
рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдЯреНрд░рд┐рдХ рд╕рд╛рд░рд╛рдВрд╢, рдЯреЗрд╕реНрдЯ рдХреЗрд╕, рдФрд░ рд╕рдордЧреНрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред
Evaluating 3 test case(s) in parallel: |тЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИ|100% (3/3) [Time Taken: 00:02, 1.08test case/s]
======================================================================
Metrics Summary
- тЬЕ Correctness (GEval) (score: 1.0, threshold: 0.5, strict: False, evaluation model: gpt-4o, reason: The actual output matches the expected output exactly with no contradictions or omissions., error: None)
For test case:
- input: What are the main causes of deforestation?
- actual output: The main causes of deforestation include agricultural expansion, logging, infrastructure development, and urbanization.
- expected output: The main causes of deforestation include agricultural expansion, logging, infrastructure development, and urbanization.
- context: None
- retrieval context: None
======================================================================
Metrics Summary
- тЬЕ Correctness (GEval) (score: 0.7, threshold: 0.5, strict: False, evaluation model: gpt-4o, reason: The main idea of AI as the simulation of human intelligence is present, but details like problem-solving, decision-making, and language understanding are omitted., error: None)
For test case:
- input: Define the term 'artificial intelligence'.
- actual output: Artificial intelligence is the simulation of human intelligence by machines.
- expected output: Artificial intelligence refers to the simulation of human intelligence in machines that are programmed to think and learn like humans, including tasks such as problem-solving, decision-making, and language understanding.
- context: None
- retrieval context: None
======================================================================
Metrics Summary
- тЭМ Correctness (GEval) (score: 0.01681606382274469, threshold: 0.5, strict: False, evaluation model: gpt-4o, reason: The actual output directly contradicts the expected output by listing green, orange, and purple as primary colors instead of red, blue, and yellow., error: None)
For test case:
- input: List the primary colors.
- actual output: The primary colors are green, orange, and purple.
- expected output: The primary colors are red, blue, and yellow.
- context: None
- retrieval context: None
======================================================================
Overall Metric Pass Rates
Correctness (GEval): 66.67% pass rate
======================================================================
Evaluating LLMs with MLflow рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреВрд▓ MLflow рдХреЗ рд╕рд╛рде LLMs рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред
5. рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
G-Eval рдореЗрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреАрди рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди 66.67% рдкрд╛рд╕ рджрд░ рдкрд░ рдкрд╣реБрдБрдЪрд╛тАФрдПрдХ рдкрд░рдлреЗрдХреНрдЯ рдореИрдЪ, рдПрдХ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЖрдВрд╢рд┐рдХ рдореИрдЪ, рдФрд░ рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреЗ рдХрд╛рд░рдг рдЕрд╕рдлрд▓ред рдпрд╣ рдореЙрдбрд▓ рдХреА рддрдереНрдпрд╛рддреНрдордХ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рддрд╛рдХрдд рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реВрдХреНрд╖реНрдо рдпрд╛ рд╡рд┐рд╕реНрддреГрдд рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рднреА рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред
Qwen 2.5 рдХрд╛ MMLU рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ
MMLU (Massive Multitask Language Understanding) рдмрд╣реБрд╡рд┐рдХрд▓реНрдкреАрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИред рдпрд╣ 57 рд╡рд┐рд╡рд┐рдз рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдЧрдгрд┐рдд, рдЗрддрд┐рд╣рд╛рд╕, рдХрд╛рдиреВрди, рдФрд░ рдиреИрддрд┐рдХрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА LLM рдХреЗ рдЬреНрдЮрд╛рди рдФрд░ рддрд░реНрдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдПрдХ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рд╛ рдмрдирд╛рддрд╛ рд╣реИред рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╖рдп рдХрд╡рд░реЗрдЬ рдФрд░ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг, MMLU LLM рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдмрди рдЪреБрдХрд╛ рд╣реИред
рд╣рдо рдПрдХ рдХрджрдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо LLM (Qwen 2.5 7B) рдХрд╛ MMLU рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЗрдирдкреБрдЯ рдкреНрд░реЙрдореНрдкреНрдЯреНрд╕ рдФрд░ рдкрд░рд┐рдгрд╛рдо (A, B, C, D) рд╣реЛрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рд╣реА рдЙрддреНрддрд░реЛрдВ рдХреЗ рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
1. рдХрд╕реНрдЯрдо LLM рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛
рд╣рдо QwenModel рдирд╛рдордХ рдПрдХ рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ DeepEvalBaseLLM рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдФрд░ рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХреЗрдВред┬а
рд╣рдорд╛рд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рджрд┐рдП рдЧрдП рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреЛ рдЯреЛрдХрди рдХреЗ рдЫреЛрдЯреЗ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ, рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд╡рдВрдЯрди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрдирдкреБрдЯ рдкреНрд░реЙрдореНрдкреНрдЯ рддрдерд╛ рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗред
from deepeval.models.base_model import DeepEvalBaseLLM
import torch, logging
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
class QwenModel(DeepEvalBaseLLM):
def __init__(self, model, tokenizer):
self.model = model
self.tokenizer = tokenizer
self.device = "cuda"
def load_model(self):
return self.model
def generate(self, prompt: str) -> str:
prompt = prompt.replace("Output 'A', 'B', 'C', or 'D'. Full answer not needed.","")
model_inputs = self.tokenizer([prompt], return_tensors="pt").to(self.device)
generated_ids = self.model.generate(
**model_inputs,
max_new_tokens=2,
do_sample=True,
pad_token_id=self.tokenizer.eos_token_id
)
prompt_length = len(model_inputs[0])
generated_tokens = generated_ids[0][prompt_length:]
clean_output = tokenizer.decode(generated_tokens, skip_special_tokens=True).strip()
return clean_output.replace(".","")
async def a_generate(self, prompt: str) -> str:
return self.generate(prompt)
def get_model_name(self):
return "Qwen2.5 7B"
2. рдореЙрдбрд▓ рдФрд░ рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░ рд▓реЛрдб рдХрд░рдирд╛
рд╣рдо рджреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдБрдЧреЗ рдЬреЛ LLM рдореЙрдбрд▓ рдФрд░ рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░ рдХреЛ рд╕реАрдзреЗ рд▓реЛрдХрд▓ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рд╣рдо рдореЙрдбрд▓ рдХреЛ 8 рдмрд┐рдЯ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕реА рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдЯреЛрдХрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рд╣реЛрдВрдЧреЗ:
def load_model(model_name: str):
quant_config = BitsAndBytesConfig(
load_in_8bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=False
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=quant_config,
device_map="auto"
)
model.config.use_cache = False
model.config.pretraining_tp = 1
return model
def load_tokenizer(model_name):
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
return tokenizer
3. рдХрд╕реНрдЯрдо LLM рдмрдирд╛рдирд╛
Kaggle рдиреЛрдЯрдмреБрдХ рдореЗрдВ тАЬ+ Add InputтАЭ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Qwen 2.4 7b instruct рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВред

рдореЙрдбрд▓ рдФрд░ рдЯреЛрдХрди рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдХрд╕реНрдЯрдо LLM рдХреНрд▓рд╛рд╕ рдХреЛ рджреЗрдВ рддрд╛рдХрд┐ рдПрдХ LLM рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ:
# Load model and tokenizer
qwen_model_name = "/kaggle/input/qwen2.5/transformers/7b-instruct/1"
model = load_model(qwen_model_name)
tokenizer = load_tokenizer(qwen_model_name)
custom_model = QwenModel(model, tokenizer)
4. рдХрд╕реНрдЯрдо LLM рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╕реНрдЯрдо LLM рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
# Test model generation
prompt = """
The following are multiple choice questions (with answers) about abstract algebra.
Find all c in Z_3 such that Z_3[x]/(x^2 + c) is a field.
A. 0
B. 1
C. 2
D. 3
Answer:"""
print(custom_model.generate(prompt))
рд╣рдордиреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ рдПрдХ рдирдореВрдирд╛ рдкреНрд░реЙрдореНрдкреНрдЯ LLM рдХреЛ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕рдиреЗ рдПрдХ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдЯреАрдХ рдЙрддреНрддрд░ рджрд┐рдпрд╛ред
C
5.┬а MMLU рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдирд╛
рдЕрдм, рд╣рдо MMLU рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рдЯрд╛рд╕реНрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдПрдБрдЧреЗ:┬а
from deepeval.benchmarks import MMLU
from deepeval.benchmarks.tasks import MMLUTask
# Define benchmark with specific tasks and shots
benchmark = MMLU(
tasks=[MMLUTask.HIGH_SCHOOL_COMPUTER_SCIENCE, MMLUTask.ASTRONOMY],
n_shots=5
)
benchmark.evaluate(model=custom_model, batch_size=5)
рд╣рдореЗрдВ 83% рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ!
Processing astronomy: 100%|тЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИ| 152/152 [01:51<00:00, 1.36it/s]
MMLU Task Accuracy (task=astronomy): 0.8157894736842105
Overall MMLU Accuracy: 0.8293650793650794
рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЯрд╛рд╕реНрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ:
benchmark.task_scores

рдЖрдк рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдирдореВрдиреЗ рдиреЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдХреМрди-рд╕рд╛ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рдпрд╣ рдореЙрдбрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╕реВрдХреНрд╖реНрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
benchmark.predictions

рдпрджрд┐ рдЖрдкрдХреЛ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ Evaluating LLMs with DeepEval Kaggle рдиреЛрдЯрдмреБрдХ рджреЗрдЦреЗрдВред рдЗрд╕рдореЗрдВ рдХреЛрдб рд╕реНрд░реЛрдд, рдбреЗрдЯрд╛рд╕реЗрдЯреНрд╕, рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВред рдХрднреА-рдХрднреА, рд╕рд░рд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ LLM рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдлрдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХреНрд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реВрдЯ рдЪрд▓рд╛рдПрдБ, рддрд╛рдХрд┐ рд╡реНрдпрд╛рдкрдХ рд╕рдордЭ рдорд┐рд▓ рд╕рдХреЗ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рд╣реЛ рд╕рдХреЗред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдордиреЗ Kaggle рдиреЛрдЯрдмреБрдХ рдореЗрдВ DeepEval рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдФрд░ Pytests рдЬреИрд╕реЗ LLM рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдПред рдлрд┐рд░, рд╣рдордиреЗ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде G-Eval рдмрдирд╛рдпрд╛ рдФрд░ рдЙрд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рдпрд╛ред рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ Qwen 2.5 7B рдореЙрдбрд▓ рдХреЛ MMLU рдореВрд▓реНрдпрд╛рдВрдХрди рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкрд░рдЦрд╛ рддрд╛рдХрд┐ рд╣рд╛рдИ рд╕реНрдХреВрд▓ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдЗрдВрд╕ рдФрд░ рдЦрдЧреЛрд▓ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдЙрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЖрдкрдХреА рд╕реАрдЦрдиреЗ рдХреА рдпрд╛рддреНрд░рд╛ рдХрд╛ рдЕрдЧрд▓рд╛ рдХрджрдо LLMOps рдЯреВрд▓реНрд╕ рдФрд░ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░рдирд╛ рдФрд░ рдпрд╣ рд╕реАрдЦрдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА LLM рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдХреИрд╕реЗ рдбрд┐рдкреНрд▓реЙрдп рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, LLMOps Concepts рдХреЛрд░реНрд╕ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрдЯрд┐рд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╡рд╛рдЪрд╛рд░реА рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд░рд╣рддрд╛/рд░рд╣рддреА рд╣реВрдБред рд╕реНрдкреАрдЪ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди, рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ, MLOps, рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ AI рдФрд░ NLP рдореЗрдВ рдордЬрдмреВрдд рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдРрд╕реЗ рдмреБрджреНрдзрд┐рдорд╛рди рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдирд┐рдЦрд╛рд░реА рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХреЗрдВред рддрдХрдиреАрдХреА рджрдХреНрд╖рддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЬрдЯрд┐рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдирд┐рдкреБрдг рд╣реВрдБред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдкрд░ рдПрдХ рдорд╛рдВрдЧ рдореЗрдВ рд░рд╣рдиреЗ рд╡рд╛рд▓рд╛/рд╡рд╛рд▓реА рдмреНрд▓реЙрдЧрд░ рдмрди рдЧрдпрд╛/рдЧрдИ рд╣реВрдБ, рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░реЛрдлреЗрд╢рдирд▓реЛрдВ рдХреЗ рдмрдврд╝рддреЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдХрдВрдЯреЗрдВрдЯ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрдкрд╛рджрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реВрдБ, рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдРрд╕рд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдФрд░ рдЖрдХрд░реНрд╖рдХ рдХрдВрдЯреЗрдВрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБ рдЬреЛ рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рджреЛрдиреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдн рдЙрдард╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗред

рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдРрд╕реЗ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдпрд╛рдВрдХрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдореМрдЬреВрдж рд╣реИрдВ рдЬреЛ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реНрд╕ (LLMs) рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкрд░рдЦ рд╕рдХреЗрдВред LLMs рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рддреАрд╡реНрд░ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЖрдХрд▓рди рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреА рддрд╛рдХрдд, рдХрдордЬреЛрд░рд┐рдпреЛрдВ, рдФрд░ рд╕реАрдорд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ рд╣реИред┬а
DeepEval рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╕рдЯреАрдХрддрд╛, рддрд░реНрдХ, рд╕реБрд╕рдВрдЧрддрддрд╛, рдФрд░ рдиреИрддрд┐рдХ рд╕рдВрд░реЗрдЦрдг рдЬреИрд╕реЗ рдХрдИ рдЖрдпрд╛рдореЛрдВ рдкрд░ LLMs рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╝рдмреВрдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк рдЬрд╛рдиреЗрдВрдЧреЗ рдХрд┐ DeepEval рдХреИрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ рдФрд░ Pytest рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреИрд╕рд╛ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдмрдирд╛рдПрдБред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк G-eval рдореЗрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ LLM рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ Qwen 2.5 рдореЙрдбрд▓ рдкрд░ MMLU рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдЪрд▓рд╛рдПрдБрдЧреЗред рдпрд╣ рдПрдХ рд╢реБрд░реБрдЖрддреА-рд╣рд┐рддреИрд╖реА рдФрд░ рд╕рд░рд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рддрдХрдиреАрдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП DeepEval рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмреЗрд╣рддрд░ рд╕рдордЭрдиреЗ рд╣реЗрддреБ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк LLMs рдореЗрдВ рдирдП рд╣реИрдВ, рддреЛ рдореИрдВ Master Large Language Models (LLMs) Concepts рдХреЛрд░реНрд╕ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБ рддрд╛рдХрд┐ рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХреЛ рд╕реАрдЦ рд╕рдХреЗрдВред
DeepEval рдХреЛ рд╕рдордЭрдирд╛
DeepEval рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдореВрд▓реНрдпрд╛рдВрдХрди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ LLM-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдирд╛, рд╕реБрдзрд╛рд░рдирд╛, рдкрд░рдЦрдирд╛, рдФрд░ рдореЙрдирд┐рдЯрд░ рдХрд░рдирд╛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рдореЙрдбрд▓реЛрдВ рдХрд╛ "рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ" рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрдХрд░ LLM рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП Pytest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
DeepEval рд╡реНрдпрд╛рдкрдХ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ 14 рд╢реЛрдз-рд╕рдорд░реНрдерд┐рдд LLM рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдЯреНрд░рд┐рдХреНрд╕, рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЬрдирд░реЗрд╢рди, LLMs рдмреЗрдВрдЪрдорд╛рд░реНрдХ, рд░реЗрдб рдЯреАрдо, рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдореВрд▓реНрдпрд╛рдВрдХрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде, DeepEval рди рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ LLM-рд╕рдорд░реНрдерд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХрд╛ рдкреНрд░рдореБрдЦ рдореЗрдЯреНрд░рд┐рдХреНрд╕, рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ, рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП LLM Evaluation рдмреНрд▓реЙрдЧ рдкрдврд╝реЗрдВред