पाठ 25 / 29

मॉडल के बिना Graphs की Testing

Scripted fakes से nodes, routers और पूरे प्रवाह की unit testing करें।

Agent का अधिकांश साधारण कोड है

Nodes और routers सादे functions हैं, इसलिए उन्हें नमूना states से सीधे परखें। पूरे-graph tests के लिए model node को scripted fake से बदलें जो निश्चित क्रम लौटाए (जैसे tool-loop उदाहरण में) और अंतिम state, देखे गए nodes और रुकने के कारण पर assert करें। अप्रिय रास्ते कवर करें: tool error, अमान्य tool नाम, loop सीमा, अस्वीकृत अनुमोदन, interrupt के बाद फिर शुरू की thread। गुणवत्ता के लिए असली मॉडल के विरुद्ध छोटा suite अलग और कम बार चलाएँ, क्योंकि असली आउटपुट बदलते हैं। Graph की संरचना (nodes और edges) का snapshot रखें ताकि प्रवाह में आकस्मिक बदलाव समीक्षा में दिखें।

Agents को भरोसेमंद बनाएँ

Nodes और routes मॉडल के बिना परखें, पूरे trajectories आँकें, और tracing व guardrails के साथ deploy करें।

तीन आदतें: परखें, आँकें, सुरक्षा करें।
चित्र 7.1 — परखें, आँकें और सुरक्षा करें।

Scripted मॉडल के साथ graph test (उदाहरण)

ऊपर के tool-loop उदाहरण जैसी ही शैली: कोई network नहीं, निश्चित। यहाँ test के रूप में चलाया नहीं गया।

def test_agent_stops_after_final_answer():
    app = build_app(model_script=[
        {"tool": "add", "args": {"a": 2, "b": 3}},
        {"final": "5"},
    ])
    out = app.invoke({"messages": [{"user": "2+3?"}]}, {"recursion_limit": 10})
    assert out["messages"][-1] == {"final": "5"}
    assert {"tool_result": 5} in out["messages"]

def test_unknown_tool_is_reported_not_executed():
    app = build_app(model_script=[{"tool": "rm", "args": {}}, {"final": "sorry"}])
    out = app.invoke({"messages": [{"user": "delete everything"}]}, {"recursion_limit": 10})
    assert {"tool_result": "error: unknown tool"} in out["messages"]

त्वरित जाँच: असली LLM बुलाए बिना पूरे graph को कैसे परखें?

  • हर test के लिए production बुलाएँ
  • नहीं परख सकते
  • Model node को scripted fake से बदलें
  • Graph हटाएँ
Answer

Model node को scripted fake से बदलें — निश्चित fake tests को तेज़, मुफ़्त और दोहराने योग्य बनाता है।