पाठ 26 / 31
Fake Models से Unit Testing
असली LLM बुलाए बिना अपनी chain का तर्क परखें।
निश्चित कोड के लिए निश्चित tests
LLM app का अधिकांश साधारण कोड है: formatting, routing, parsing, validation, tool functions, retrieval wiring। उसे सामान्य रूप से fake models (FakeListChatModel, MockLLM) और निश्चित आउटपुट देने वाली fake embeddings से परखें। इससे tests तेज़, मुफ़्त और दोहराने योग्य बनते हैं, और आप विफलताएँ (टूटा JSON उत्तर, timeout, tool error) अनुकरण कर सकते हैं। गुणवत्ता के लिए असली मॉडल के विरुद्ध अलग, छोटे evaluation runs रखें, क्योंकि असली आउटपुट बदलते हैं। Unit tests में असली मॉडल के सटीक मुक्त-पाठ उत्तरों पर assert न करें।
मॉडल के बिना परखें, उसके साथ मापें
Fakes unit tests को तेज़ और मुफ़्त बनाते हैं; evaluation sets असली गुणवत्ता मापते हैं।
pytest-शैली का test (उदाहरण)
Chain prompt, fake मॉडल और parser से बनी है, इसलिए test को network नहीं चाहिए। ढाँचा पहले दिखाई chain से मेल खाता है; यहाँ test के रूप में चलाया नहीं गया।
from langchain_core.language_models.fake_chat_models import FakeListChatModel
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
def build_chain(model):
prompt = ChatPromptTemplate.from_template("Translate to French: {text}")
return prompt | model | StrOutputParser()
def test_chain_returns_model_text():
chain = build_chain(FakeListChatModel(responses=["Bonjour"]))
assert chain.invoke({"text": "Hello"}) == "Bonjour"
def test_missing_variable_fails_early():
chain = build_chain(FakeListChatModel(responses=["x"]))
try:
chain.invoke({})
assert False, "expected an error"
except Exception:
passत्वरित जाँच: Unit tests में fake models क्यों उपयोग करें?
- Tests तेज़, मुफ़्त और दोहराने योग्य बनते हैं
- वे मॉडल गुणवत्ता सुधारते हैं
- वे कोड की ज़रूरत हटाते हैं
- वे embeddings प्रशिक्षित करते हैं
Answer
Tests तेज़, मुफ़्त और दोहराने योग्य बनते हैं — निश्चित आउटपुट आपके अपने तर्क पर assertions को भरोसेमंद बनाते हैं।