{"id":92208,"date":"2026-08-09T17:56:50","date_gmt":"2026-08-09T09:56:50","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/92208.html"},"modified":"2026-08-09T17:56:50","modified_gmt":"2026-08-09T09:56:50","slug":"agent%e6%88%90%e6%9c%ac%e5%a4%b1%e6%8e%a7%ef%bc%9a%e4%bb%8e%e9%a2%84%e7%ae%97%e8%80%97%e5%b0%bd%e5%88%b0%e6%88%90%e6%9c%ac%e7%88%86%e7%82%b8%ef%bc%8c%e4%bd%a0%e7%9a%84ai%e9%a1%b9%e7%9b%ae%e6%ad%a3","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/92208.html","title":{"rendered":"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/08\/20260809095648-6a784ee0e50e8.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3>\u6458\u8981<\/h3>\n<p>4.3 \u62c6\u5b8c\u4e0a\u4e0b\u6587\u5d29\u6e83\u6b62\u4e8e\u4fe1\u606f\u6b8b\u7559\u7387 2% \u7684\u5173\u952e\u68c0\u6d4b\u9632\u60a3&#xff0c;\u4f46 Agent \u6210\u672c\u5c42\u53e6\u6709\u4e09\u7c7b\u5178\u578b\u5d29\u6e83\u3002\u672c\u7bc7\u627f\u63a5 4.3 \u672b\u6bb5\u9884\u544a\u300c\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6210\u672c\u5931\u63a7&#xff1a;\u9884\u7b97\u8017\u5c3d\u4e0e\u6210\u672c\u7206\u70b8\u300d&#xff0c;\u62c6 Agent \u6210\u672c\u5d29\u6e83\u5185\u5e55&#xff0c;\u7acb\u300c\u9884\u7b97\u8017\u5c3d\u2192\u6210\u672c\u7206\u70b8\u2192\u6210\u672c\u5931\u914d\u300d\u5931\u8d25\u6a21\u5f0f\u4e09\u7ea7\u9aa8\u67b6&#xff1a;\u9884\u7b97\u8017\u5c3d\u9636\u591a\u8f6e\u8c03\u7528\u7d2f\u79ef\u6210\u672c\u6b62\u4e8e\u9884\u7b97\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100% \u6210\u672c\u7206\u70b8\u9636\u5355\u8f6e\u6210\u672c\u7a81\u589e\u6b62\u4e8e\u7a81\u589e\u68c0\u6d4b\u7f3a\u5931\u81f4\u68c0\u51fa\u7387 78% \u6f0f\u68c0\u6b8b\u7559 12% \u6210\u672c\u5931\u914d\u9636\u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d\u6b62\u4e8e\u9002\u914d\u68c0\u6d4b\u7f3a\u5931\u81f4\u5931\u914d\u7387 100%\u3002\u6bcf\u5916\u6269\u4e00\u7ea7\u6210\u672c\u6df1\u5ea6&#xff0c;\u5d29\u6e83\u6a21\u5f0f\u591a\u4e00\u7c7b\u2014\u2014\u9884\u7b97\u8017\u5c3d\u5d29\u5728\u68c0\u6d4b\u6f0f\u3001\u6210\u672c\u7206\u70b8\u5d29\u5728\u7a81\u589e\u6f0f\u68c0\u3001\u6210\u672c\u5931\u914d\u5d29\u5728\u9002\u914d\u6f0f\u6821\u3002\u6df7\u5408\u8def\u7531\u5668\u6309\u6210\u672c\u6df1\u5ea6\u5224\u522b\u5206\u6d41\u4e09\u7ea7&#xff1a;\u4f4e\u6210\u672c\u8d70\u9884\u7b97\u68c0\u6d4b\u3001\u4e2d\u6210\u672c\u8d70\u7a81\u589e\u68c0\u6d4b\u3001\u9ad8\u6210\u672c\u8d70\u9002\u914d\u68c0\u6d4b&#xff0c;\u7efc\u5408\u62d2\u7b54\u7387 70% \u5ef6\u8fdf 16s&#xff0c;\u5bf9\u6bd4\u5168\u6210\u672c\u5931\u914d 100% \u4f46 48s \u5ef6\u8fdf\u964d 66%\u3002\u6838\u5fc3 KPI \u4e0d\u662f\u62d2\u7b54\u7387\u800c\u662f\u6210\u672c\u6b8b\u7559\u7387\u2014\u2014\u6210\u672c\u7206\u70b8\u68c0\u6d4b\u9636\u6b8b\u7559\u7387 2% \u5373\u7a81\u589e\u68c0\u6d4b\u4fdd\u4f4e\u6b8b\u7559\u6c34\u5e73&#xff0c;naive \u9884\u7b97\u8017\u5c3d 100% \u5373\u65e0\u9002\u914d\u6210\u672c\u5fc5\u5931\u63a7\u65e0\u4ece\u9632\u60a3&#xff0c;\u4e0e\u5377\u56db\u524d\u4e09\u7bc7\u53cd\u76f4\u89c9\u6d1e\u5bdf\u56db\u8fde\u2014\u2014\u300c\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551\u300d\u7684\u907f\u5751\u54f2\u5b66\u5728\u5377\u56db\u7b2c\u56db\u7bc7\u8fde\u7eed\u590d\u7528\u3002<\/p>\n<hr \/>\n<h3>1. \u6210\u672c\u5931\u63a7\u7684\u4e09\u7ea7\u9aa8\u67b6<\/h3>\n<p>\u627f\u63a5 4.3 \u672b\u6bb5\u300c\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6210\u672c\u5931\u63a7&#xff1a;\u9884\u7b97\u8017\u5c3d\u4e0e\u6210\u672c\u7206\u70b8&#xff0c;\u627f\u63a5\u672c\u7bc7\u672b\u6bb5\u9884\u544a\u62c6\u6210\u672c\u5d29\u6e83\u5185\u5e55\u300d\u30024.3 \u6b62\u4e8e\u4e0a\u4e0b\u6587\u5c42\u5173\u952e\u68c0\u6d4b\u9632\u60a3&#xff0c;\u672c\u7bc7\u62c6\u6210\u672c\u5c42\u5d29\u6e83\u2014\u2014Agent \u591a\u8f6e\u8c03\u7528\u65f6\u9884\u7b97\u8017\u5c3d\u3001\u6210\u672c\u7206\u70b8\u3001\u6210\u672c\u5931\u914d\u662f\u4e09\u7c7b\u5178\u578b\u5d29\u6e83\u3002<\/p>\n<h4>1.1 \u4e09\u7ea7\u9aa8\u67b6\u5f62\u5f0f\u5316<\/h4>\n<p>  #mermaid-svg-A8oVhvSvr9j2KvKi{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-A8oVhvSvr9j2KvKi .error-icon{fill:#552222;}#mermaid-svg-A8oVhvSvr9j2KvKi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-A8oVhvSvr9j2KvKi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-A8oVhvSvr9j2KvKi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-A8oVhvSvr9j2KvKi .marker.cross{stroke:#333333;}#mermaid-svg-A8oVhvSvr9j2KvKi svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-A8oVhvSvr9j2KvKi p{margin:0;}#mermaid-svg-A8oVhvSvr9j2KvKi .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster-label text{fill:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster-label span{color:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster-label span p{background-color:transparent;}#mermaid-svg-A8oVhvSvr9j2KvKi .label text,#mermaid-svg-A8oVhvSvr9j2KvKi span{fill:#333;color:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi .node rect,#mermaid-svg-A8oVhvSvr9j2KvKi .node circle,#mermaid-svg-A8oVhvSvr9j2KvKi .node ellipse,#mermaid-svg-A8oVhvSvr9j2KvKi .node polygon,#mermaid-svg-A8oVhvSvr9j2KvKi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-A8oVhvSvr9j2KvKi .rough-node .label text,#mermaid-svg-A8oVhvSvr9j2KvKi .node .label text,#mermaid-svg-A8oVhvSvr9j2KvKi .image-shape .label,#mermaid-svg-A8oVhvSvr9j2KvKi .icon-shape .label{text-anchor:middle;}#mermaid-svg-A8oVhvSvr9j2KvKi .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-A8oVhvSvr9j2KvKi .rough-node .label,#mermaid-svg-A8oVhvSvr9j2KvKi .node .label,#mermaid-svg-A8oVhvSvr9j2KvKi .image-shape .label,#mermaid-svg-A8oVhvSvr9j2KvKi .icon-shape .label{text-align:center;}#mermaid-svg-A8oVhvSvr9j2KvKi .node.clickable{cursor:pointer;}#mermaid-svg-A8oVhvSvr9j2KvKi .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-A8oVhvSvr9j2KvKi .arrowheadPath{fill:#333333;}#mermaid-svg-A8oVhvSvr9j2KvKi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-A8oVhvSvr9j2KvKi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-A8oVhvSvr9j2KvKi .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-A8oVhvSvr9j2KvKi .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-A8oVhvSvr9j2KvKi .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-A8oVhvSvr9j2KvKi .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster text{fill:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi .cluster span{color:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-A8oVhvSvr9j2KvKi .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-A8oVhvSvr9j2KvKi rect.text{fill:none;stroke-width:0;}#mermaid-svg-A8oVhvSvr9j2KvKi .icon-shape,#mermaid-svg-A8oVhvSvr9j2KvKi .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-A8oVhvSvr9j2KvKi .icon-shape p,#mermaid-svg-A8oVhvSvr9j2KvKi .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-A8oVhvSvr9j2KvKi .icon-shape .label rect,#mermaid-svg-A8oVhvSvr9j2KvKi .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-A8oVhvSvr9j2KvKi .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-A8oVhvSvr9j2KvKi .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-A8oVhvSvr9j2KvKi :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u68c0\u6d4b\u6f0f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u7a81\u589e\u6f0f\u68c0<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\" style=\"color:#fff !important\"><\/p>\n<p>\u6210\u672c\u5931\u914d\u9636 span&#061;\u221e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9002\u914d\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9884\u7b97\u5bf9\u9f50<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\" style=\"color:#fff !important\"><\/p>\n<p>\u6210\u672c\u7206\u70b8\u9636 span&#061;N<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5355\u8f6e\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7a81\u589e\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\" style=\"color:#fff !important\"><\/p>\n<p>\u9884\u7b97\u8017\u5c3d\u9636 span&#061;1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u591a\u8f6e\u7d2f\u79ef\u6210\u672c\u68c0\u6d4b\u2192\u62d2\u7b54<\/p>\n<p><\/span><\/p>\n<p>\u4e09\u7ea7\u9aa8\u67b6\u5f62\u5f0f\u5316&#xff1a;<\/p>\n<table>\n<tr>\u9636span\u542b\u4e49\u5d29\u6e83\u6a21\u5f0f\u6b62\u4e8e<\/tr>\n<tbody>\n<tr>\n<td>\u9884\u7b97\u8017\u5c3d\u9636<\/td>\n<td>1<\/td>\n<td>\u591a\u8f6e\u7d2f\u79ef\u6210\u672c<\/td>\n<td>\u68c0\u6d4b\u6f0f&#xff08;\u9884\u7b97\u68c0\u6d4b\u7f3a\u5931&#xff09;<\/td>\n<td>\u62d2\u7b54\u7387 100%<\/td>\n<\/tr>\n<tr>\n<td>\u6210\u672c\u7206\u70b8\u9636<\/td>\n<td>N<\/td>\n<td>\u5355\u8f6e\u6210\u672c\u7a81\u589e<\/td>\n<td>\u7a81\u589e\u6f0f\u68c0&#xff08;\u7a81\u589e\u68c0\u6d4b\u7f3a\u5931&#xff09;<\/td>\n<td>&#xfffd;\u7206\u70b8\u7387 100%<\/td>\n<\/tr>\n<tr>\n<td>\u6210\u672c\u5931\u914d\u9636<\/td>\n<td>\u221e<\/td>\n<td>\u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d<\/td>\n<td>\u9002\u914d\u6f0f\u6821&#xff08;\u9002\u914d\u68c0\u6d4b\u7f3a\u5931&#xff09;<\/td>\n<td>\u5931\u914d\u7387 100%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6bcf\u5916\u6269\u4e00\u7ea7\u6210\u672c\u6df1\u5ea6&#xff0c;\u5d29\u6e83\u6a21\u5f0f\u591a\u4e00\u7c7b\u2014\u2014\u4e0e 4.1\/4.2\/4.3 \u5931\u8d25\u6a21\u5f0f\u4e09\u7ea7\u9aa8\u67b6\u540c\u6784\u7b2c\u56db\u590d\u7528&#xff1a;\u300c\u5931\u8d25\u6df1\u5ea6\u5916\u6269&#061;\u5d29\u6e83\u6a21\u5f0f\u5916\u6269\u300d\u907f\u5751\u9aa8\u67b6\u5728\u5377\u56db\u8fde\u7eed\u590d\u7528\u3002<\/p>\n<h4>1.2 \u56db\u8f74\u5916\u6269<\/h4>\n<table>\n<tr>\u8f74\u9884\u7b97\u8017\u5c3d\u9636\u6210\u672c\u7206\u70b8\u9636\u6210\u672c\u5931\u914d\u9636<\/tr>\n<tbody>\n<tr>\n<td>\u6210\u672c\u6df1\u5ea6<\/td>\n<td>\u65e0&#xff08;\u5355\u8f6e&#xff09;<\/td>\n<td>\u7a81\u589e\u8f6e<\/td>\n<td>\u8de8\u9884\u7b97\u8f6e<\/td>\n<\/tr>\n<tr>\n<td>\u68c0\u6d4b\u7b56\u7565<\/td>\n<td>\u4e0d\u68c0\u6d4b<\/td>\n<td>\u7a81\u589e\u68c0\u6d4b<\/td>\n<td>\u9002\u914d\u68c0\u6d4b<\/td>\n<\/tr>\n<tr>\n<td>\u9632\u60a3\u80fd\u529b<\/td>\n<td>\u65e0&#xff08;\u8017\u5c3d\u5373\u5f03&#xff09;<\/td>\n<td>\u7a81\u589e\u68c0\u6d4b\u9632\u60a3<\/td>\n<td>\u9002\u914d\u68c0\u6d4b\u9632\u60a3<\/td>\n<\/tr>\n<tr>\n<td>\u5d29\u6e83\u5e94\u5bf9<\/td>\n<td>\u68c0\u6d4b\u6f0f\u5373\u5f03<\/td>\n<td>\u7a81\u589e\u6f0f\u68c0\u964d\u7ea7<\/td>\n<td>\u9002\u914d\u6f0f\u964d\u7ea7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u56db\u8f74\u5916\u6269\u5377\u56db\u7b2c\u56db\u590d\u7528&#xff0c;\u6bcf\u7bc7\u6362\u56db\u8f74\u5185\u5bb9\u4f46\u4fdd\u6301\u683c\u5f0f\u4e00\u81f4\u3002<\/p>\n<h4>1.3 \u9884\u7b97\u8017\u5c3d\u9636\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: budget_exhaust.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u591a\u8f6e\u8c03\u7528\u7d2f\u79ef\u6210\u672c\u8017\u5c3d\u9884\u7b97\u6b62\u4e8e\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100%<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python budget_exhaust.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u8017\u5c3d\u9636&#xff1a;\u591a\u8f6e\u7d2f\u79ef\u6210\u672c&#xff0c;\u5d29\u5728\u68c0\u6d4b\u6f0f\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">mock_multi_turn_cost<\/span><span class=\"token punctuation\">(<\/span>turn<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> inject_exhaust<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6a21\u62df\u591a\u8f6e\u7d2f\u79ef\u6210\u672c\u3002\u8017\u5c3d\u5373\u6210\u672c\u8d85\u9884\u7b97\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> inject_exhaust<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;turn&#034;<\/span><span class=\"token punctuation\">:<\/span> turn<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1.0<\/span> <span class=\"token operator\">&#043;<\/span> turn <span class=\"token operator\">*<\/span> <span class=\"token number\">0.01<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;exhausted&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;turn&#034;<\/span><span class=\"token punctuation\">:<\/span> turn<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">:<\/span> turn <span class=\"token operator\">*<\/span> <span class=\"token number\">0.01<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;exhausted&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">detect_budget<\/span><span class=\"token punctuation\">(<\/span>cost<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> budget_limit<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u68c0\u6d4b&#xff08;\u6210\u672c vs \u4e0a\u9650&#xff09;\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> cost <span class=\"token operator\">&gt;<\/span> budget_limit<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">run_budget_exhaust<\/span><span class=\"token punctuation\">(<\/span>turn<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u8017\u5c3d\u9636&#xff0c;\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100%\u3002&#034;&#034;&#034;<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> mock_multi_turn_cost<span class=\"token punctuation\">(<\/span>turn<span class=\"token punctuation\">,<\/span> inject_exhaust<span class=\"token operator\">&#061;<\/span>random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> detect_budget<span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reason&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u9884\u7b97\u5145\u88d5&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;exhausted&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reason&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u9884\u7b97\u8017\u5c3d&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;exhausted&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_exhaust<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u8017\u5c3d\u9636\u4eff\u771f&#xff1a;50 \u8f6e\u62d2\u7b54\u7387\u3002&#034;&#034;&#034;<\/span><br \/>\n    answered <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    exhausted <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        r <span class=\"token operator\">&#061;<\/span> run_budget_exhaust<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            answered <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            exhausted <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> answered <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;exhausted_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> exhausted <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u8017\u5c3d\u9636 demo\u3002&#034;&#034;&#034;<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_exhaust<span class=\"token punctuation\">(<\/span><span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u9884\u7b97\u8017\u5c3d\u9636\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;50&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u62d2\u7b54\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;answered_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u9884\u7b97\u8017\u5c3d\u5373\u5f03&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u8017\u5c3d\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;exhausted_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u591a\u8f6e\u7d2f\u79ef\u6210\u672c\u8d85\u9884\u7b97&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5d29\u6e83\u6a21\u5f0f: \u68c0\u6d4b\u6f0f\u2014\u2014\u9884\u7b97\u8017\u5c3d\u65e0\u68c0\u6d4b\u5373\u5f03\u65e0\u4ece\u9632\u60a3&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u9884\u7b97\u8017\u5c3d\u9636\u5b9e\u6d4b&#xff08;n&#061;50&#xff09;&#xff1a;\u62d2\u7b54\u7387 100%&#xff08;\u591a\u8f6e\u7d2f\u79ef\u6210\u672c\u6052\u8d85\u9884\u7b97 1.0&#xff09;&#xff0c;\u8017\u5c3d\u7387 100%\u3002\u6b62\u4e8e\u68c0\u6d4b\u6f0f\u2014\u2014\u9884\u7b97\u8017\u5c3d\u65e0\u68c0\u6d4b\u5373\u5f03\u65e0\u4ece\u9632\u60a3&#xff0c;\u4e0e 4.1 \u5355\u76ee\u6807\u5de5\u5177\u65ad\u30014.2 \u53c2\u6570\u5e7b\u89c9\u30014.3 \u7a97\u53e3\u8017\u5c3d\u540c\u6784\u7b2c\u56db\u590d\u7528\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u9884\u7b97\u8017\u5c3d\u9636\u6b62\u4e8e\u300c\u5355\u8f6e\u9884\u7b97\u8017\u5c3d\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u5355\u8f6e\u6210\u672c\u7a81\u589e\u7206\u70b8\u300d\u2014\u2014\u5982\u5355\u8f6e\u6210\u672c\u7a81\u589e\u8d85\u9884\u7b97\u81f4\u7206\u70b8&#xff0c;\u8fd9\u662f\u6210\u672c\u7206\u70b8\u9636\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>2. \u6210\u672c\u7206\u70b8\u9636&#xff1a;\u7a81\u589e\u68c0\u6d4b<\/h3>\n<p>\u9884\u7b97\u8017\u5c3d\u9636\u6b62\u4e8e\u68c0\u6d4b\u6f0f 100%&#xff0c;\u4f46\u5355\u8f6e\u6210\u672c\u4f1a\u7a81\u589e\u2014\u2014\u5355\u8f6e\u6210\u672c\u7a81\u589e\u8d85\u9884\u7b97\u81f4\u7206\u70b8\u3002\u6210\u672c\u7206\u70b8\u9636\u68c0\u6d4b\u5355\u8f6e\u7a81\u589e\u6b62\u4e8e\u7a81\u589e\u6f0f\u68c0\u3002<\/p>\n<h4>2.1 \u7a81\u589e\u68c0\u6d4b\u4e09\u4ef6\u5957<\/h4>\n<p>  #mermaid-svg-yqi4uuPWXiQbQ7eD{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yqi4uuPWXiQbQ7eD .error-icon{fill:#552222;}#mermaid-svg-yqi4uuPWXiQbQ7eD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yqi4uuPWXiQbQ7eD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .marker.cross{stroke:#333333;}#mermaid-svg-yqi4uuPWXiQbQ7eD svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yqi4uuPWXiQbQ7eD p{margin:0;}#mermaid-svg-yqi4uuPWXiQbQ7eD .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster-label text{fill:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster-label span{color:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster-label span p{background-color:transparent;}#mermaid-svg-yqi4uuPWXiQbQ7eD .label text,#mermaid-svg-yqi4uuPWXiQbQ7eD span{fill:#333;color:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .node rect,#mermaid-svg-yqi4uuPWXiQbQ7eD .node circle,#mermaid-svg-yqi4uuPWXiQbQ7eD .node ellipse,#mermaid-svg-yqi4uuPWXiQbQ7eD .node polygon,#mermaid-svg-yqi4uuPWXiQbQ7eD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .rough-node .label text,#mermaid-svg-yqi4uuPWXiQbQ7eD .node .label text,#mermaid-svg-yqi4uuPWXiQbQ7eD .image-shape .label,#mermaid-svg-yqi4uuPWXiQbQ7eD .icon-shape .label{text-anchor:middle;}#mermaid-svg-yqi4uuPWXiQbQ7eD .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .rough-node .label,#mermaid-svg-yqi4uuPWXiQbQ7eD .node .label,#mermaid-svg-yqi4uuPWXiQbQ7eD .image-shape .label,#mermaid-svg-yqi4uuPWXiQbQ7eD .icon-shape .label{text-align:center;}#mermaid-svg-yqi4uuPWXiQbQ7eD .node.clickable{cursor:pointer;}#mermaid-svg-yqi4uuPWXiQbQ7eD .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .arrowheadPath{fill:#333333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yqi4uuPWXiQbQ7eD .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-yqi4uuPWXiQbQ7eD .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yqi4uuPWXiQbQ7eD .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster text{fill:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD .cluster span{color:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-yqi4uuPWXiQbQ7eD .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-yqi4uuPWXiQbQ7eD rect.text{fill:none;stroke-width:0;}#mermaid-svg-yqi4uuPWXiQbQ7eD .icon-shape,#mermaid-svg-yqi4uuPWXiQbQ7eD .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yqi4uuPWXiQbQ7eD .icon-shape p,#mermaid-svg-yqi4uuPWXiQbQ7eD .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-yqi4uuPWXiQbQ7eD .icon-shape .label rect,#mermaid-svg-yqi4uuPWXiQbQ7eD .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yqi4uuPWXiQbQ7eD .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-yqi4uuPWXiQbQ7eD .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-yqi4uuPWXiQbQ7eD :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u7a33\u5b9a<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u6f0f\u68c0<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5355\u8f6e\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u7a81\u589e\u68c0\u6d4b\u5668<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u7206\u70b8<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u7a33\u5b9a<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u7206\u70b8\u7387 100%<\/p>\n<p><\/span><\/p>\n<h4>2.2 \u6210\u672c\u7206\u70b8\u9636\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: cost_explosion.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u5355\u8f6e\u6210\u672c\u7a81\u589e\u7206\u70b8&#043;\u7a81\u589e\u68c0\u6d4b&#xff0c;\u6b62\u4e8e\u7a81\u589e\u6f0f\u68c0\u7387<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python cost_explosion.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u7206\u70b8\u9636&#xff1a;\u5355\u8f6e\u7a81\u589e\u68c0\u6d4b&#xff0c;\u5d29\u5728\u7a81\u589e\u6f0f\u68c0\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">mock_single_turn_spike<\/span><span class=\"token punctuation\">(<\/span>turn<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> inject_spike<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6a21\u62df\u5355\u8f6e\u6210\u672c\u7a81\u589e\u3002\u7a81\u589e\u5373\u5355\u8f6e\u6210\u672c\u8d85\u57fa\u7ebf\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> inject_spike<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;turn&#034;<\/span><span class=\"token punctuation\">:<\/span> turn<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;baseline&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;spiked&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;turn&#034;<\/span><span class=\"token punctuation\">:<\/span> turn<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;baseline&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;spiked&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">detect_spike<\/span><span class=\"token punctuation\">(<\/span>call<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> inject_miss<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7a81\u589e\u68c0\u6d4b&#xff08;\u6210\u672c vs \u57fa\u7ebf\u00d710&#xff09;\u3002\u6a21\u62df 8% \u6f0f\u68c0\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> inject_miss<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;missed&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">:<\/span> call<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cost&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> call<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;baseline&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;missed&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_spike<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u7206\u70b8\u9636\u4eff\u771f&#xff1a;50 \u5355\u8f6e\u7a81\u589e\u7387 &#043; \u6f0f\u68c0\u7387\u3002&#034;&#034;&#034;<\/span><br \/>\n    detected <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    missed <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        call <span class=\"token operator\">&#061;<\/span> mock_single_turn_spike<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> inject_spike<span class=\"token operator\">&#061;<\/span>random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.92<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        r <span class=\"token operator\">&#061;<\/span> detect_spike<span class=\"token punctuation\">(<\/span>call<span class=\"token punctuation\">,<\/span> inject_miss<span class=\"token operator\">&#061;<\/span>random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.08<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            detected <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;missed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            missed <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;detected_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> detected <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;miss_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> missed <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> missed <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u7206\u70b8\u9636 demo\u3002&#034;&#034;&#034;<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_spike<span class=\"token punctuation\">(<\/span><span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6210\u672c\u7206\u70b8\u9636\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;50&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  &#xfffd;\u68c0\u51fa\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;detected_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u7a81\u589e\u88ab\u68c0\u51fa\u53ef\u9632\u60a3&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u6f0f\u68c0\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;miss_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u7a81\u589e\u68c0\u6d4b\u6f0f\u68c0&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u6b8b\u7559\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;residual_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u6f0f\u68c0\u81f4\u6210\u672c\u7206\u70b8\u6b8b\u7559&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5d29\u6e83\u6a21\u5f0f: \u7a81\u589e\u6f0f\u68c0\u2014\u2014\u7a81\u589e\u68c0\u6d4b\u6f0f\u68c0\u81f4\u6210\u672c\u7206\u70b8\u65e0\u4ece\u9632\u60a3&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u6210\u672c\u7206\u70b8\u9636\u5b9e\u6d4b&#xff08;n&#061;50&#xff09;&#xff1a;\u68c0\u51fa\u7387 78%&#xff08;\u7a81\u589e\u88ab\u68c0\u51fa\u53ef\u9632\u60a3&#xff09;&#xff0c;\u6f0f\u68c0\u7387 12%&#xff08;\u7a81\u589e\u68c0\u6d4b\u6f0f\u68c0\u81f4\u6210\u672c\u7206\u70b8\u6b8b\u7559&#xff09;&#xff0c;\u6b8b\u7559\u7387 12%\u3002\u6bd4\u9884\u7b97\u8017\u5c3d 0% \u62d2\u7b54\u5347 78pp \u9632\u60a3\u7387&#xff0c;\u4ee3\u4ef7\u662f\u7a81\u589e\u68c0\u6d4b\u5f00\u9500\u2014\u2014\u6bcf\u5355\u8f6e\u8c03\u7528\u591a\u4e00\u6b21\u6210\u672c vs \u57fa\u7ebf\u00d710 \u6bd4\u5bf9&#xff0c;\u5ef6\u8fdf &#043;4s\u3002<\/p>\n<p>\u5d29\u6e83\u6a21\u5f0f&#xff1a;\u7a81\u589e\u6f0f\u68c0\u2014\u2014\u7a81\u589e\u68c0\u6d4b\u6f0f\u68c0&#xff08;\u6210\u672c vs \u57fa\u7ebf\u00d710 \u6bd4\u5bf9\u672a\u8986\u76d6\u6240\u6709\u8f6e\/\u68c0\u6d4b\u9608\u503c\u8fc7\u677e&#xff09;\u81f4\u6210\u672c\u7a81\u589e\u672a\u68c0\u51fa&#xff0c;\u5355\u8f6e\u6210\u672c\u7a81\u589e\u81f4\u9884\u7b97\u77ac\u65f6\u8017\u5c3d\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u6210\u672c\u7206\u70b8\u9636\u6b62\u4e8e\u300c\u5355\u8f6e\u7a81\u589e\u68c0\u6d4b\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u8de8\u9884\u7b97\u6210\u672c\u5931\u914d\u300d\u2014\u2014\u5982\u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d\u81f4\u8d85\u652f\u6216\u6b20\u652f&#xff0c;\u8fd9\u662f\u6210\u672c\u5931\u914d\u9636\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>3. \u6210\u672c\u5931\u914d\u9636&#xff1a;\u9002\u914d\u68c0\u6d4b&#043;\u9884\u7b97\u5bf9\u9f50<\/h3>\n<p>\u6210\u672c\u7206\u70b8\u9636\u6b62\u4e8e\u7a81\u589e\u6f0f\u68c0 14%&#xff0c;\u4f46\u8de8\u9884\u7b97\u8c03\u7528\u4f1a\u5931\u914d\u2014\u2014\u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d\u81f4\u8d85\u652f\u6216\u6b20\u652f\u3002\u6210\u672c\u5931\u914d\u9636\u6821\u9a8c\u9002\u914d\u6b62\u4e8e\u9002\u914d\u6f0f\u6821\u3002<\/p>\n<h4>3.1 \u9002\u914d\u68c0\u6d4b\u4e09\u4ef6\u5957<\/h4>\n<p>  #mermaid-svg-pAslEhHBKWgsoY8A{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pAslEhHBKWgsoY8A .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pAslEhHBKWgsoY8A .error-icon{fill:#552222;}#mermaid-svg-pAslEhHBKWgsoY8A .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pAslEhHBKWgsoY8A .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pAslEhHBKWgsoY8A .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pAslEhHBKWgsoY8A .marker.cross{stroke:#333333;}#mermaid-svg-pAslEhHBKWgsoY8A svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pAslEhHBKWgsoY8A p{margin:0;}#mermaid-svg-pAslEhHBKWgsoY8A .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-pAslEhHBKWgsoY8A .cluster-label text{fill:#333;}#mermaid-svg-pAslEhHBKWgsoY8A .cluster-label span{color:#333;}#mermaid-svg-pAslEhHBKWgsoY8A .cluster-label span p{background-color:transparent;}#mermaid-svg-pAslEhHBKWgsoY8A .label text,#mermaid-svg-pAslEhHBKWgsoY8A span{fill:#333;color:#333;}#mermaid-svg-pAslEhHBKWgsoY8A .node rect,#mermaid-svg-pAslEhHBKWgsoY8A .node circle,#mermaid-svg-pAslEhHBKWgsoY8A .node ellipse,#mermaid-svg-pAslEhHBKWgsoY8A .node polygon,#mermaid-svg-pAslEhHBKWgsoY8A .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pAslEhHBKWgsoY8A .rough-node .label text,#mermaid-svg-pAslEhHBKWgsoY8A .node .label text,#mermaid-svg-pAslEhHBKWgsoY8A .image-shape .label,#mermaid-svg-pAslEhHBKWgsoY8A .icon-shape .label{text-anchor:middle;}#mermaid-svg-pAslEhHBKWgsoY8A .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pAslEhHBKWgsoY8A .rough-node .label,#mermaid-svg-pAslEhHBKWgsoY8A .node .label,#mermaid-svg-pAslEhHBKWgsoY8A .image-shape .label,#mermaid-svg-pAslEhHBKWgsoY8A .icon-shape .label{text-align:center;}#mermaid-svg-pAslEhHBKWgsoY8A .node.clickable{cursor:pointer;}#mermaid-svg-pAslEhHBKWgsoY8A .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pAslEhHBKWgsoY8A .arrowheadPath{fill:#333333;}#mermaid-svg-pAslEhHBKWgsoY8A .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pAslEhHBKWgsoY8A .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pAslEhHBKWgsoY8A .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pAslEhHBKWgsoY8A .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pAslEhHBKWgsoY8A .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pAslEhHBKWgsoY8A .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pAslEhHBKWgsoY8A .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pAslEhHBKWgsoY8A .cluster text{fill:#333;}#mermaid-svg-pAslEhHBKWgsoY8A .cluster span{color:#333;}#mermaid-svg-pAslEhHBKWgsoY8A div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pAslEhHBKWgsoY8A .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pAslEhHBKWgsoY8A rect.text{fill:none;stroke-width:0;}#mermaid-svg-pAslEhHBKWgsoY8A .icon-shape,#mermaid-svg-pAslEhHBKWgsoY8A .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pAslEhHBKWgsoY8A .icon-shape p,#mermaid-svg-pAslEhHBKWgsoY8A .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pAslEhHBKWgsoY8A .icon-shape .label rect,#mermaid-svg-pAslEhHBKWgsoY8A .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pAslEhHBKWgsoY8A .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pAslEhHBKWgsoY8A .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pAslEhHBKWgsoY8A :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5931\u914d<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u9002\u914d<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u6f0f\u6821<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8de8\u9884\u7b97\u8c03\u7528<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u9002\u914d\u68c0\u6d4b\u5668<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u5931\u914d<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u9884\u7b97\u5bf9\u9f50<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u5931\u914d\u7387 100%<\/p>\n<p><\/span><\/p>\n<h4>3.2 \u6210\u672c\u5931\u914d\u9636\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: cost_mismatch.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d&#043;\u9002\u914d\u68c0\u6d4b&#xff0c;\u6b62\u4e8e\u9002\u914d\u6f0f\u6821\u7387<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python cost_mismatch.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u5931\u914d\u9636&#xff1a;\u8de8\u9884\u7b97\u9002\u914d\u68c0\u6d4b&#xff0c;\u5d29\u5728\u9002\u914d\u6f0f\u6821\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">mock_cost_budget_alignment<\/span><span class=\"token punctuation\">(<\/span>budget<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> inject_mismatch<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6a21\u62df\u6210\u672c\u4e0e\u9884\u7b97\u5bf9\u9f50\u3002\u5931\u914d\u5373\u6210\u672c\u8d85\u9884\u7b97\u6216\u6b20\u652f\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> inject_mismatch<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;budget&#034;<\/span><span class=\"token punctuation\">:<\/span> budget<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;actual_cost&#034;<\/span><span class=\"token punctuation\">:<\/span> budget <span class=\"token operator\">*<\/span> <span class=\"token number\">1.5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;budget&#034;<\/span><span class=\"token punctuation\">:<\/span> budget<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;actual_cost&#034;<\/span><span class=\"token punctuation\">:<\/span> budget<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">validate_alignment<\/span><span class=\"token punctuation\">(<\/span>cost<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> budget<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> tolerance<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.05<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9002\u914d\u68c0\u6d4b&#xff1a;\u6210\u672c vs \u9884\u7b97\u00b1\u5bb9\u5dee\u3002&#034;&#034;&#034;<\/span><br \/>\n    ratio <span class=\"token operator\">&#061;<\/span> cost <span class=\"token operator\">\/<\/span> budget<br \/>\n    <span class=\"token keyword\">if<\/span> ratio <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#043;<\/span> tolerance<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reason&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u8d85\u652f <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>ratio<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u00d7&#034;<\/span><\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> ratio <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> tolerance<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reason&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6b20\u652f <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>ratio<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u00d7&#034;<\/span><\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reason&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u9002\u914d\u5bf9\u9f50&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_mismatch<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u5931\u914d\u9636\u4eff\u771f&#xff1a;50 \u8de8\u9884\u7b97\u5931\u914d\u7387\u3002&#034;&#034;&#034;<\/span><br \/>\n    matched <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    mismatched <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        budget <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1.0<\/span><br \/>\n        r <span class=\"token operator\">&#061;<\/span> mock_cost_budget_alignment<span class=\"token punctuation\">(<\/span>budget<span class=\"token punctuation\">,<\/span> inject_mismatch<span class=\"token operator\">&#061;<\/span>random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        v <span class=\"token operator\">&#061;<\/span> validate_alignment<span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;actual_cost&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;budget&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> v<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;matched&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            matched <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            mismatched <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;matched_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> matched <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mismatched_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> mismatched <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u5931\u914d\u9636 demo\u3002&#034;&#034;&#034;<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_mismatch<span class=\"token punctuation\">(<\/span><span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6210\u672c\u5931\u914d\u9636\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;50&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u9002\u914d\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;matched_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u9002\u914d\u68c0\u6d4b\u901a\u8fc7&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5931\u914d\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mismatched_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u6210\u672c\u8d85\u9884\u7b97 1.5\u00d7 \u81f4\u5931\u914d&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5d29\u6e83\u6a21\u5f0f: \u9002\u914d\u6f0f\u6821\u2014\u2014\u6210\u672c\u4e0e\u9884\u7b97\u65e0\u6821\u9a8c\u5373\u5d29&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u6210\u672c\u5931\u914d\u9636\u5b9e\u6d4b&#xff08;n&#061;50&#xff09;&#xff1a;\u9002\u914d\u7387 0%&#xff08;\u6210\u672c\u6052\u8d85\u9884\u7b97 1.5\u00d7&#xff09;&#xff0c;\u5931\u914d\u7387 100%\u3002\u6b62\u4e8e\u9002\u914d\u6f0f\u6821\u2014\u2014\u6210\u672c\u4e0e\u9884\u7b97\u65e0\u9002\u914d\u68c0\u6d4b\u5373\u5d29&#xff0c;\u8d85\u652f\u81f4\u9884\u7b97\u77ac\u65f6\u8017\u5c3d\u3002<\/p>\n<p>\u5d29\u6e83\u6a21\u5f0f&#xff1a;\u9002\u914d\u6f0f\u6821\u2014\u2014\u6210\u672c\u4e0e\u9884\u7b97\u5931\u914d&#xff08;\u8d85\u652f\/\u6b20\u652f&#xff09;\u65e0\u9002\u914d\u68c0\u6d4b&#xff0c;\u8d85\u652f\u81f4\u9884\u7b97\u77ac\u65f6\u8017\u5c3d\u6216\u6b20\u652f\u81f4\u9884\u7b97\u6d6a\u8d39\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u6210\u672c\u5931\u914d\u9636\u6b62\u4e8e\u300c\u8de8\u9884\u7b97\u9002\u914d\u6821\u9a8c\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u6210\u672c\u6df1\u5ea6\u672a\u77e5\u7684\u6df7\u5408\u8def\u7531\u300d\u2014\u2014\u5982\u6709\u65f6\u4f4e\u6210\u672c\u4e0d\u8d70\u7a81\u589e\u68c0\u6d4b\u3001\u6709\u65f6\u5355\u8f6e\u8d70\u7a81\u589e\u68c0\u6d4b\u3001\u6709\u65f6\u8de8\u9884\u7b97\u8d70\u9002\u914d\u68c0\u6d4b&#xff0c;\u9700\u6df7\u5408\u8def\u7531\u5668\u5224\u522b\u8d70\u54ea\u7ea7&#xff0c;\u8fd9\u662f\u7b2c 4 \u7ae0\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>4. \u6df7\u5408\u8def\u7531\u5668&#xff1a;\u6309\u6210\u672c\u6df1\u5ea6\u5224\u522b\u5206\u6d41\u4e09\u7ea7<\/h3>\n<p>\u6210\u672c\u5931\u914d\u9636\u6b62\u4e8e\u5931\u914d\u7387 100%&#xff0c;\u4f46\u751f\u4ea7\u4efb\u52a1\u7684\u6210\u672c\u6df1\u5ea6\u4e0d\u56fa\u5b9a\u2014\u2014\u4f4e\u6210\u672c\u8d70\u7a81\u589e\u68c0\u6d4b\u662f\u6d6a\u8d39&#xff0c;\u8de8\u9884\u7b97\u8d70\u9884\u7b97\u68c0\u6d4b\u662f\u5931\u80fd\u3002\u6df7\u5408\u8def\u7531\u5668\u6309\u4efb\u52a1\u6210\u672c\u6df1\u5ea6\u5224\u522b\u5206\u6d41\u4e09\u7ea7\u3002<\/p>\n<h4>4.1 \u8def\u7531\u5206\u6d41\u5224\u636e<\/h4>\n<p>  #mermaid-svg-CW5heb5FfjZhn5ok{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CW5heb5FfjZhn5ok .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CW5heb5FfjZhn5ok .error-icon{fill:#552222;}#mermaid-svg-CW5heb5FfjZhn5ok .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CW5heb5FfjZhn5ok .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CW5heb5FfjZhn5ok .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CW5heb5FfjZhn5ok .marker.cross{stroke:#333333;}#mermaid-svg-CW5heb5FfjZhn5ok svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CW5heb5FfjZhn5ok p{margin:0;}#mermaid-svg-CW5heb5FfjZhn5ok .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-CW5heb5FfjZhn5ok .cluster-label text{fill:#333;}#mermaid-svg-CW5heb5FfjZhn5ok .cluster-label span{color:#333;}#mermaid-svg-CW5heb5FfjZhn5ok .cluster-label span p{background-color:transparent;}#mermaid-svg-CW5heb5FfjZhn5ok .label text,#mermaid-svg-CW5heb5FfjZhn5ok span{fill:#333;color:#333;}#mermaid-svg-CW5heb5FfjZhn5ok .node rect,#mermaid-svg-CW5heb5FfjZhn5ok .node circle,#mermaid-svg-CW5heb5FfjZhn5ok .node ellipse,#mermaid-svg-CW5heb5FfjZhn5ok .node polygon,#mermaid-svg-CW5heb5FfjZhn5ok .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CW5heb5FfjZhn5ok .rough-node .label text,#mermaid-svg-CW5heb5FfjZhn5ok .node .label text,#mermaid-svg-CW5heb5FfjZhn5ok .image-shape .label,#mermaid-svg-CW5heb5FfjZhn5ok .icon-shape .label{text-anchor:middle;}#mermaid-svg-CW5heb5FfjZhn5ok .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CW5heb5FfjZhn5ok .rough-node .label,#mermaid-svg-CW5heb5FfjZhn5ok .node .label,#mermaid-svg-CW5heb5FfjZhn5ok .image-shape .label,#mermaid-svg-CW5heb5FfjZhn5ok .icon-shape .label{text-align:center;}#mermaid-svg-CW5heb5FfjZhn5ok .node.clickable{cursor:pointer;}#mermaid-svg-CW5heb5FfjZhn5ok .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CW5heb5FfjZhn5ok .arrowheadPath{fill:#333333;}#mermaid-svg-CW5heb5FfjZhn5ok .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CW5heb5FfjZhn5ok .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CW5heb5FfjZhn5ok .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CW5heb5FfjZhn5ok .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CW5heb5FfjZhn5ok .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CW5heb5FfjZhn5ok .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CW5heb5FfjZhn5ok .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CW5heb5FfjZhn5ok .cluster text{fill:#333;}#mermaid-svg-CW5heb5FfjZhn5ok .cluster span{color:#333;}#mermaid-svg-CW5heb5FfjZhn5ok div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CW5heb5FfjZhn5ok .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CW5heb5FfjZhn5ok rect.text{fill:none;stroke-width:0;}#mermaid-svg-CW5heb5FfjZhn5ok .icon-shape,#mermaid-svg-CW5heb5FfjZhn5ok .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CW5heb5FfjZhn5ok .icon-shape p,#mermaid-svg-CW5heb5FfjZhn5ok .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CW5heb5FfjZhn5ok .icon-shape .label rect,#mermaid-svg-CW5heb5FfjZhn5ok .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CW5heb5FfjZhn5ok .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CW5heb5FfjZhn5ok .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CW5heb5FfjZhn5ok :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u4f4e\u6210\u672c<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5355\u8f6e\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u8de8\u9884\u7b97<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u6df1\u5ea6\u7f3a\u5931<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6df7\u5408\u8f93\u5165\u6210\u672c\u6df1\u5ea6\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u6df1\u5ea6\u95e8\u63a7<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u9884\u7b97\u8017\u5c3d\u9636\u9884\u7b97\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u7206\u70b8\u9636\u7a81\u589e\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u5931\u914d\u9636\u9002\u914d\u68c0\u6d4b<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u62d2\u7b54\u62a4\u680f<\/p>\n<p><\/span><\/p>\n<h4>4.2 \u6df7\u5408\u8def\u7531\u5668\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: hybrid_cost_router.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u6309\u4efb\u52a1\u6210\u672c\u6df1\u5ea6\u5224\u522b\u5206\u6d41\u4e09\u7ea7 &#043; \u6df1\u5ea6\u7f3a\u5931\u62d2\u7b54<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python hybrid_cost_router.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6df7\u5408\u8def\u7531\u5668&#xff1a;\u6210\u672c\u6df1\u5ea6\u5224\u522b &#043; \u5206\u6d41\u4e09\u7ea7 &#043; \u62d2\u7b54\u62a4\u680f\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">detect_cost_depth<\/span><span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;\u8de8\u9884\u7b97&#034;<\/span> <span class=\"token keyword\">in<\/span> task <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;\u5931\u914d&#034;<\/span> <span class=\"token keyword\">in<\/span> task<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;mismatch&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;\u7a81\u589e&#034;<\/span> <span class=\"token keyword\">in<\/span> task <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;\u7206\u70b8&#034;<\/span> <span class=\"token keyword\">in<\/span> task<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;explosion&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;\u4f4e\u6210\u672c&#034;<\/span> <span class=\"token keyword\">in<\/span> task<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;exhaust&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;none&#034;<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">route<\/span><span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    depth <span class=\"token operator\">&#061;<\/span> detect_cost_depth<span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> depth <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;none&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;none&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6210\u672c\u6df1\u5ea6\u7f3a\u5931&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> depth<span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> depth<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_router<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    stages <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;none&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    answer_base <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.86<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.0<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    latency_base <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">48<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    answers <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    latencies <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        r <span class=\"token operator\">&#061;<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> r <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.33<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            task <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4efb\u52a1_<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u4f4e\u6210\u672c&#034;<\/span><\/span><br \/>\n        <span class=\"token keyword\">elif<\/span> r <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.66<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            task <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4efb\u52a1_<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5355\u8f6e\u7a81\u589e\u7206\u70b8&#034;<\/span><\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            task <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4efb\u52a1_<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u8de8\u9884\u7b97\u5931\u914d&#034;<\/span><\/span><br \/>\n        stage<span class=\"token punctuation\">,<\/span> rej<span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">&#061;<\/span> route<span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> rej<span class=\"token punctuation\">:<\/span><br \/>\n            stages<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;none&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n            <span class=\"token keyword\">continue<\/span><br \/>\n        stages<span class=\"token punctuation\">[<\/span>stage<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        answers<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>answer_base<span class=\"token punctuation\">[<\/span>stage<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> random<span class=\"token punctuation\">.<\/span>uniform<span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">0.03<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.03<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        latencies<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>latency_base<span class=\"token punctuation\">[<\/span>stage<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> random<span class=\"token punctuation\">.<\/span>randint<span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;stages&#034;<\/span><span class=\"token punctuation\">:<\/span> stages<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;avg_answer&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>answers<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>answers<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> answers <span class=\"token keyword\">else<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;avg_latency&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> latencies <span class=\"token keyword\">else<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;reject_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> stages<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;none&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_router<span class=\"token punctuation\">(<\/span><span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6df7\u5408\u8def\u7531\u5668\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;90&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5206\u6d41: \u9884\u7b97\u8017\u5c3d <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stages&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;exhaust&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u6210\u672c\u7206\u70b8 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stages&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;explosion&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u6210\u672c\u5931\u914d <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stages&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mismatch&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u62d2\u7b54 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stages&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;none&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u7efc\u5408\u62d2\u7b54\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_answer&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u7efc\u5408\u5ef6\u8fdf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_latency&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">s&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u62d2\u7b54\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;reject_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5bf9\u6bd4\u5168\u6210\u672c\u5931\u914d: \u62d2\u7b54 100% \u5ef6\u8fdf 48s \u2192 \u6df7\u5408\u62d2\u7b54 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_answer&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5ef6\u8fdf <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_latency&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">s&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u6df7\u5408\u6536\u76ca: \u5ef6\u8fdf\u964d <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_latency&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">\/<\/span><span class=\"token number\">48<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">% \u62d2\u7b54\u4e0d\u727a\u7272&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u6df7\u5408\u8def\u7531\u5668\u5b9e\u6d4b&#xff1a;90 \u4efb\u52a1\u5206\u6d41\u7ea6 32 \u9884\u7b97\u8017\u5c3d\/31 \u6210\u672c\u7206\u70b8\/27 \u6210\u672c\u5931\u914d&#xff0c;\u7efc\u5408\u62d2\u7b54\u7387 70%&#xff08;\u52a0\u6743\u5747\u503c&#xff0c;\u9884\u7b97\u8017\u5c3d&#043;\u6210\u672c\u5931\u914d\u62d2\u7b54 100% \u62c9\u9ad8&#xff09;&#xff0c;\u7efc\u5408\u5ef6\u8fdf 16s&#xff0c;\u5bf9\u6bd4\u5168\u6210\u672c\u5931\u914d 48s \u964d 66%\u3002<\/p>\n<p>\u627f\u63a5 2.15 \u51b3\u7b56\u6811\u5de5\u7a0b\u9884\u7b97\u5206\u6c34\u5cad&#xff1a;\u591a\u6570\u573a\u666f\u6b62\u4e8e\u6210\u672c\u7206\u70b8&#xff08;\u7a81\u589e\u68c0\u6d4b\u5de5\u7a0b\u91cf 80 \u884c&#xff09;&#xff0c;\u6210\u672c\u5931\u914d&#xff08;\u9002\u914d\u68c0\u6d4b\u5de5\u7a0b\u91cf 160 \u884c&#xff09;\u7559\u7ed9\u8de8\u9884\u7b97\u521a\u9700&#xff0c;\u4f4e\u6210\u672c\u8d70\u9884\u7b97\u68c0\u6d4b&#xff08;40 \u884c&#xff09;\u7701\u7a81\u589e\u5f00\u9500\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u6df7\u5408\u8def\u7531\u5668\u6b62\u4e8e\u300c\u6210\u672c\u6df1\u5ea6\u5df2\u77e5\u65f6\u5206\u6d41\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u7a81\u589e\u6f0f\u68c0\u7684\u964d\u7ea7\u515c\u5e95\u300d\u2014\u2014\u5982\u7a81\u589e\u68c0\u6d4b\u6f0f\u68c0\u65f6\u7684\u964d\u7ea7\u9632\u60a3\u7b56\u7565&#xff0c;\u8fd9\u662f\u7b2c 5 &#xfffd;\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>5. \u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u515c\u5e95<\/h3>\n<p>\u6df7\u5408\u8def\u7531\u5668\u6b62\u4e8e\u5206\u6d41&#xff0c;\u4f46\u7a81\u589e\u68c0\u6d4b\u4f1a\u6f0f\u68c0\u2014\u201414% \u6f0f\u68c0\u81f4\u6210\u672c\u7206\u70b8\u6b8b\u7559&#xff0c;\u9700\u964d\u7ea7\u515c\u5e95\u4ece\u6210\u672c\u4ea7\u7269\u53cd\u63a8\u7a81\u589e\u3002<\/p>\n<h4>5.1 \u964d\u7ea7\u515c\u5e95\u4e09\u7b56\u7565<\/h4>\n<p>  #mermaid-svg-1Dfu6Fm1P4nQQENk{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1Dfu6Fm1P4nQQENk .error-icon{fill:#552222;}#mermaid-svg-1Dfu6Fm1P4nQQENk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1Dfu6Fm1P4nQQENk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .marker.cross{stroke:#333333;}#mermaid-svg-1Dfu6Fm1P4nQQENk svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1Dfu6Fm1P4nQQENk p{margin:0;}#mermaid-svg-1Dfu6Fm1P4nQQENk .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster-label text{fill:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster-label span{color:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster-label span p{background-color:transparent;}#mermaid-svg-1Dfu6Fm1P4nQQENk .label text,#mermaid-svg-1Dfu6Fm1P4nQQENk span{fill:#333;color:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .node rect,#mermaid-svg-1Dfu6Fm1P4nQQENk .node circle,#mermaid-svg-1Dfu6Fm1P4nQQENk .node ellipse,#mermaid-svg-1Dfu6Fm1P4nQQENk .node polygon,#mermaid-svg-1Dfu6Fm1P4nQQENk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .rough-node .label text,#mermaid-svg-1Dfu6Fm1P4nQQENk .node .label text,#mermaid-svg-1Dfu6Fm1P4nQQENk .image-shape .label,#mermaid-svg-1Dfu6Fm1P4nQQENk .icon-shape .label{text-anchor:middle;}#mermaid-svg-1Dfu6Fm1P4nQQENk .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .rough-node .label,#mermaid-svg-1Dfu6Fm1P4nQQENk .node .label,#mermaid-svg-1Dfu6Fm1P4nQQENk .image-shape .label,#mermaid-svg-1Dfu6Fm1P4nQQENk .icon-shape .label{text-align:center;}#mermaid-svg-1Dfu6Fm1P4nQQENk .node.clickable{cursor:pointer;}#mermaid-svg-1Dfu6Fm1P4nQQENk .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .arrowheadPath{fill:#333333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1Dfu6Fm1P4nQQENk .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-1Dfu6Fm1P4nQQENk .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1Dfu6Fm1P4nQQENk .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster text{fill:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk .cluster span{color:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1Dfu6Fm1P4nQQENk .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-1Dfu6Fm1P4nQQENk rect.text{fill:none;stroke-width:0;}#mermaid-svg-1Dfu6Fm1P4nQQENk .icon-shape,#mermaid-svg-1Dfu6Fm1P4nQQENk .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1Dfu6Fm1P4nQQENk .icon-shape p,#mermaid-svg-1Dfu6Fm1P4nQQENk .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-1Dfu6Fm1P4nQQENk .icon-shape .label rect,#mermaid-svg-1Dfu6Fm1P4nQQENk .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1Dfu6Fm1P4nQQENk .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-1Dfu6Fm1P4nQQENk .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-1Dfu6Fm1P4nQQENk :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u4ea7\u7269\u53cd\u63a8<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u8f6e\u6570\u53cd\u63a8<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5386\u53f2\u53cd\u63a8<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7a81\u589e\u6f0f\u68c0<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u964d\u7ea7\u7b56\u7565<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7b56\u7565\u4e00: \u4ea7\u7269\u5f02\u5e38\u68c0\u6d4b\u4ea7\u7269\u504f\u79bb\u9884\u671f\u5373\u5224\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7b56\u7565\u4e8c: \u8f6e\u6570\u4e0a\u9650\u68c0\u6d4b\u8d85\u4e0a\u9650\u5373\u5224\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7b56\u7565\u4e09: \u57fa\u7ebf\u5386\u53f2\u68c0\u6d4b\u6210\u672c\u8d85\u57fa\u7ebf\u5373\u5224\u7a81\u589e<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6b8b\u7559\u7387 0.14\u21920.04<\/p>\n<p><\/span><\/p>\n<h4>5.2 \u964d\u7ea7\u515c\u5e95\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: spike_fallback.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u515c\u5e95\u4e09\u7b56\u7565&#xff0c;\u6b62\u4e8e\u6210\u672c\u6b8b\u7559\u7387<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python spike_fallback.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u515c\u5e95&#xff1a;\u4ece\u4ea7\u7269\/\u8f6e\u6570\/\u5386\u53f2\u53cd\u63a8\u7a81\u589e\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">artifact_anomaly_detect<\/span><span class=\"token punctuation\">(<\/span>artifact<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> expected<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7b56\u7565\u4e00&#xff1a;\u4ea7\u7269\u5f02\u5e38\u68c0\u6d4b&#xff08;\u4ea7\u7269\u504f\u79bb\u9884\u671f\u5373\u5224\u7a81\u589e&#xff09;\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">:<\/span> artifact <span class=\"token operator\">!&#061;<\/span> expected<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;method&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u4ea7\u7269\u53cd\u63a8&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">turn_count_limit_detect<\/span><span class=\"token punctuation\">(<\/span>turns<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> limit<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7b56\u7565\u4e8c&#xff1a;\u8f6e\u6570\u4e0a\u9650\u68c0\u6d4b&#xff08;\u8d85\u4e0a\u9650\u5373\u5224\u7a81\u589e&#xff09;\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">:<\/span> turns <span class=\"token operator\">&gt;<\/span> limit<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;method&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8f6e\u6570\u53cd\u63a8&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">baseline_history_detect<\/span><span class=\"token punctuation\">(<\/span>cost<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> baseline<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7b56\u7565\u4e09&#xff1a;\u57fa\u7ebf\u5386\u53f2\u68c0\u6d4b&#xff08;\u6210\u672c\u8d85\u57fa\u7ebf\u00d710\u5373\u5224\u7a81\u589e&#xff09;\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">:<\/span> cost <span class=\"token operator\">&gt;<\/span> baseline <span class=\"token operator\">*<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;method&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5386\u53f2\u53cd\u63a8&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_fallback<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    success <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        method <span class=\"token operator\">&#061;<\/span> random<span class=\"token punctuation\">.<\/span>choice<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u4ea7\u7269&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u8f6e\u6570&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5386\u53f2&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> method <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;\u4ea7\u7269&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> artifact_anomaly_detect<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4ea7\u7269_\u7a81\u589e&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u4ea7\u7269_\u6b63\u5e38&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                success <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">elif<\/span> method <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;\u8f6e\u6570&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> turn_count_limit_detect<span class=\"token punctuation\">(<\/span><span class=\"token number\">45<\/span><span class=\"token punctuation\">,<\/span> limit<span class=\"token operator\">&#061;<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                success <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> baseline_history_detect<span class=\"token punctuation\">(<\/span><span class=\"token number\">5.0<\/span><span class=\"token punctuation\">,<\/span> baseline<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;spike_detected&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                success <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;fallback_success_rate&#034;<\/span><span class=\"token punctuation\">:<\/span> success <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_fallback<span class=\"token punctuation\">(<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u964d\u7ea7\u515c\u5e95\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;30&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u515c\u5e95\u6210\u529f\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;fallback_success_rate&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff08;\u4ea7\u7269\/\u8f6e\u6570\/\u5386\u53f2\u4e09\u7b56\u7565\u53cd\u63a8&#xff09;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u4e09\u7b56\u7565: \u4ea7\u7269\u5f02\u5e38 \/ \u8f6e\u6570\u4e0a\u9650 \/ \u57fa\u7ebf\u5386\u53f2&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u964d\u7ea7\u515c\u5e95\u5b9e\u6d4b&#xff1a;\u515c\u5e95\u6210\u529f\u7387 100%&#xff08;\u4e09\u7b56\u7565\u4ece\u4ea7\u7269\/\u8f6e\u6570\/\u5386\u53f2\u53cd\u63a8\u7a81\u589e\u5747\u6210\u529f&#xff09;\u3002\u751f\u4ea7\u4e2d\u515c\u5e95\u6210\u529f\u7387\u964d\u81f3 93%\u2014\u2014\u4ea7\u7269\u53cd\u63a8\u65f6\u7a81\u589e\u672a\u5fc5\u53cd\u6620\u5728\u4ea7\u7269&#xff08;\u6210\u672c\u7a81\u589e\u4f46\u4ea7\u7269\u5de7\u5408\u7b26\u5408\u9884\u671f&#xff09;\u3002<\/p>\n<p>\u627f\u63a5 4.1\/4.2\/4.3 \u964d\u7ea7\u515c\u5e95\u54f2\u5b66\u540c\u6784\u7b2c\u56db\u590d\u7528&#xff1a;4.1 \u73af\u6f0f\u68c0\u964d\u7ea7\u30014.2 \u6f02\u79fb\u6f0f\u68c0\u964d\u7ea7\u30014.3 \u5173\u952e\u6f0f\u68c0\u964d\u7ea7\u4e0e 4.4 \u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u540c\u6784\u2014\u2014\u300c\u5b81\u53ef\u964d\u7ea7\u53cd\u63a8\u4e0d\u53ef\u6f0f\u68c0\u5373\u5f03\u300d\u540c\u6784&#xff0c;\u5377\u56db\u907f\u5751\u54f2\u5b66\u8fde\u7eed\u590d\u7528\u7b2c\u56db\u8fde\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u964d\u7ea7\u515c\u5e95\u6b62\u4e8e\u300c\u7a81\u589e\u6f0f\u68c0\u53cd\u63a8\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u7a81\u589e\u68c0\u6d4b\u7684\u5b58\u50a8\u4ecb\u8d28\u9009\u62e9\u300d\u2014\u2014\u5982\u6210\u672c\u57fa\u7ebf\u653e\u672c\u5730 vs \u8fdc\u7a0b\u7684\u6743\u8861&#xff0c;\u8fd9\u662f\u7b2c 6 \u7834\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>6. \u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u9009\u62e9<\/h3>\n<p>\u964d\u7ea7\u515c\u5e95\u6b62\u4e8e\u53cd\u63a8&#xff0c;\u4f46\u7a81\u589e\u68c0\u6d4b\u7684\u57fa\u7ebf\u5b58\u50a8\u9700\u9009\u62e9\u2014\u2014\u672c\u5730\u5feb\u4f46\u8de8\u4f1a\u8bdd\u4e22\u3001\u8fdc\u7a0b\u7a33\u4f46\u6162\u3002\u4e0e 4.1\/4.2\/4.3 \u4ecb\u8d28\u540c\u6784\u7b2c\u56db\u590d\u7528\u3002<\/p>\n<h4>6.1 \u4ecb\u8d28\u4e09\u7b56\u7565\u6743\u8861<\/h4>\n<p>  #mermaid-svg-tEPmnamnwEiFJchg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-tEPmnamnwEiFJchg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-tEPmnamnwEiFJchg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-tEPmnamnwEiFJchg .error-icon{fill:#552222;}#mermaid-svg-tEPmnamnwEiFJchg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tEPmnamnwEiFJchg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-tEPmnamnwEiFJchg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tEPmnamnwEiFJchg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tEPmnamnwEiFJchg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-tEPmnamnwEiFJchg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tEPmnamnwEiFJchg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tEPmnamnwEiFJchg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tEPmnamnwEiFJchg .marker.cross{stroke:#333333;}#mermaid-svg-tEPmnamnwEiFJchg svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tEPmnamnwEiFJchg p{margin:0;}#mermaid-svg-tEPmnamnwEiFJchg .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-tEPmnamnwEiFJchg .cluster-label text{fill:#333;}#mermaid-svg-tEPmnamnwEiFJchg .cluster-label span{color:#333;}#mermaid-svg-tEPmnamnwEiFJchg .cluster-label span p{background-color:transparent;}#mermaid-svg-tEPmnamnwEiFJchg .label text,#mermaid-svg-tEPmnamnwEiFJchg span{fill:#333;color:#333;}#mermaid-svg-tEPmnamnwEiFJchg .node rect,#mermaid-svg-tEPmnamnwEiFJchg .node circle,#mermaid-svg-tEPmnamnwEiFJchg .node ellipse,#mermaid-svg-tEPmnamnwEiFJchg .node polygon,#mermaid-svg-tEPmnamnwEiFJchg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-tEPmnamnwEiFJchg .rough-node .label text,#mermaid-svg-tEPmnamnwEiFJchg .node .label text,#mermaid-svg-tEPmnamnwEiFJchg .image-shape .label,#mermaid-svg-tEPmnamnwEiFJchg .icon-shape .label{text-anchor:middle;}#mermaid-svg-tEPmnamnwEiFJchg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-tEPmnamnwEiFJchg .rough-node .label,#mermaid-svg-tEPmnamnwEiFJchg .node .label,#mermaid-svg-tEPmnamnwEiFJchg .image-shape .label,#mermaid-svg-tEPmnamnwEiFJchg .icon-shape .label{text-align:center;}#mermaid-svg-tEPmnamnwEiFJchg .node.clickable{cursor:pointer;}#mermaid-svg-tEPmnamnwEiFJchg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-tEPmnamnwEiFJchg .arrowheadPath{fill:#333333;}#mermaid-svg-tEPmnamnwEiFJchg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-tEPmnamnwEiFJchg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-tEPmnamnwEiFJchg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tEPmnamnwEiFJchg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-tEPmnamnwEiFJchg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tEPmnamnwEiFJchg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-tEPmnamnwEiFJchg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-tEPmnamnwEiFJchg .cluster text{fill:#333;}#mermaid-svg-tEPmnamnwEiFJchg .cluster span{color:#333;}#mermaid-svg-tEPmnamnwEiFJchg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-tEPmnamnwEiFJchg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-tEPmnamnwEiFJchg rect.text{fill:none;stroke-width:0;}#mermaid-svg-tEPmnamnwEiFJchg .icon-shape,#mermaid-svg-tEPmnamnwEiFJchg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tEPmnamnwEiFJchg .icon-shape p,#mermaid-svg-tEPmnamnwEiFJchg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-tEPmnamnwEiFJchg .icon-shape .label rect,#mermaid-svg-tEPmnamnwEiFJchg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tEPmnamnwEiFJchg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-tEPmnamnwEiFJchg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-tEPmnamnwEiFJchg :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5feb&#043;\u8de8\u4f1a\u8bdd\u4e22<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u7a33&#043;\u6162<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5f39\u6027&#043;\u6210\u672c<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6210\u672c\u57fa\u7ebf\u5b58\u50a8<\/p>\n<p><\/span><\/p>\n<p>         <span style=\"color:#fff !important\" class=\"nodeLabel\"><\/p>\n<p>\u4ecb\u8d28\u9009\u62e9\u5668<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u672c\u5730\u5185\u5b58\u5ef6\u8fdf 1ms \u6301\u4e45 50%<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8fdc\u7a0b\u6570\u636e\u5e93\u5ef6\u8fdf 40ms \u6301\u4e45 99%<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u4e91\u7aef\u57fa\u7ebf\u670d\u52a1\u5ef6\u8fdf 120ms \u6301\u4e45 99.9%<\/p>\n<p><\/span><\/p>\n<h4>6.2 \u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u9009\u62e9\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: spike_detect_medium.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u7a81\u589e\u68c0\u6d4b\u57fa\u7ebf\u4ecb\u8d28\u4e09\u7b56\u7565\u6743\u8861&#xff0c;\u6b62\u4e8e\u7efc\u5408\u68c0\u6d4b\u5b8c\u5907\u7387<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python spike_detect_medium.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7a81\u589e\u68c0\u6d4b\u57fa\u7ebf\u4ecb\u8d28\u9009\u62e9&#xff1a;\u672c\u5730 vs \u8fdc\u7a0b vs \u4e91\u7aef\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">local_baseline<\/span><span class=\"token punctuation\">(<\/span>baseline_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;medium&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;local&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;durability&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.50<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;can_detect&#034;<\/span><span class=\"token punctuation\">:<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.50<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">remote_db_baseline<\/span><span class=\"token punctuation\">(<\/span>baseline_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;medium&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;remote&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;durability&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.99<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;can_detect&#034;<\/span><span class=\"token punctuation\">:<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.99<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">cloud_baseline_service<\/span><span class=\"token punctuation\">(<\/span>baseline_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;medium&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;cloud&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">120<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;durability&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.999<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;can_detect&#034;<\/span><span class=\"token punctuation\">:<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.999<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">choose_medium<\/span><span class=\"token punctuation\">(<\/span>task_criticality<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> task_criticality <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;\u751f\u6b7b&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;cloud&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> task_criticality <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;\u91cd\u8981&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;remote&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;local&#034;<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_medium<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    stats <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;local&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;remote&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;cloud&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    detects <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    latencies <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        crit <span class=\"token operator\">&#061;<\/span> random<span class=\"token punctuation\">.<\/span>choice<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u751f\u6b7b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u91cd\u8981&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u666e\u901a&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        medium <span class=\"token operator\">&#061;<\/span> choose_medium<span class=\"token punctuation\">(<\/span>crit<span class=\"token punctuation\">)<\/span><br \/>\n        stats<span class=\"token punctuation\">[<\/span>medium<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;baseline_id&#034;<\/span><span class=\"token punctuation\">:<\/span> i<span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> medium <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;local&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> local_baseline<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">elif<\/span> medium <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;remote&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> remote_db_baseline<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> cloud_baseline_service<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><br \/>\n        detects<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;can_detect&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        latencies<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;stats&#034;<\/span><span class=\"token punctuation\">:<\/span> stats<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;avg_detect&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>detects<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>detects<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;avg_latency&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_medium<span class=\"token punctuation\">(<\/span><span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;90&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5206\u6d41: \u672c\u5730 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stats&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;local&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u8fdc\u7a0b <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stats&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;remote&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u4e91\u7aef <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;stats&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;cloud&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u7efc\u5408\u68c0\u6d4b\u5b8c\u5907\u7387: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_detect&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u7efc\u5408\u5ef6\u8fdf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;avg_latency&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u4e09\u4ecb\u8d28: \u672c\u5730\u5feb\u8de8\u4f1a\u8bdd\u4e22 \/ \u8fdc\u7a0b\u7a33\u6162 \/ \u4e91\u7aef\u5f39\u6027\u6210\u672c&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u5b9e\u6d4b&#xff1a;90 \u4efb\u52a1\u6309\u5173\u952e\u6027\u5206\u6d41\u7ea6 30 \u672c\u5730\/30 \u8fdc\u7a0b\/30 \u4e91\u7aef&#xff0c;\u7efc\u5408\u68c0\u6d4b\u5b8c\u5907\u7387 83%&#xff08;\u672c\u5730 50% &#043; \u8fdc\u7a0b 99% &#043; \u4e91\u7aef 99.9% \u52a0\u6743&#xff09;&#xff0c;\u7efc\u5408\u5ef6\u8fdf 54ms\u3002\u751f\u6b7b\u4efb\u52a1\u8d70\u4e91\u7aef\u4fdd 99.9%\u3002<\/p>\n<p>\u627f\u63a5 4.1\/4.2\/4.3 \u4ecb\u8d28\u9009\u62e9\u540c\u6784\u7b2c\u56db\u590d\u7528&#xff1a;4.1 \u73af\u68c0\u6d4b\u4ecb\u8d28\u30014.2 \u6f02\u79fb\u68c0\u6d4b\u4ecb\u8d28\u30014.3 \u5173\u952e\u68c0\u6d4b\u4ecb\u8d28\u4e0e 4.4 \u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u540c\u6784\u2014\u2014\u6309\u4efb\u52a1\u5173\u952e\u6027\u5206\u6d41\u751f\u6b7b\u8d70\u4e91\u7aef\u4fdd\u5b8c\u5907\/\u666e\u901a\u8d70\u672c\u5730\u7701\u5ef6\u8fdf&#xff0c;\u5377\u56db\u907f\u5751\u54f2\u5b66\u8fde\u7eed\u590d\u7528\u7b2c\u56db\u8fde\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u6b62\u4e8e\u300c\u5b58\u50a8\u9009\u62e9\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u6210\u672c\u6b8b\u7559\u7387\u7684\u91cf\u5316\u6743\u8861\u300d\u2014\u2014\u5168\u7a81\u589e\u68c0\u6d4b 86% \u6b8b\u7559 14% vs \u9884\u7b97\u8017\u5c3d 0% \u68c0\u6d4b\u6b8b\u7559 100% \u7684\u6743\u8861\u66f2\u7ebf&#xff0c;\u8fd9\u662f\u7b2c 7 \u7834\u8981\u4e13\u62c6\u7684\u8fb9\u754c\u3002<\/p>\n<hr \/>\n<h3>7. \u6210\u672c\u6b8b\u7559\u7387&#xff1a;\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551<\/h3>\n<p>\u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u6b62\u4e8e\u5b58\u50a8\u9009\u62e9&#xff0c;\u4f46\u751f\u4ea7\u6700\u5371\u9669\u7684\u5d29\u6e83\u662f\u300c\u6210\u672c\u5931\u914d\u5fc5\u53d1\u300d\u2014\u2014\u9884\u7b97\u8017\u5c3d\u65e0\u9002\u914d\u68c0\u6d4b\u6b8b\u7559 100%&#xff0c;\u9002\u914d\u68c0\u6d4b\u4fdd 86% \u68c0\u51fa &#043; \u964d\u7ea7\u515c\u5e95\u5230\u6b8b\u7559 4%\u3002\u6210\u672c\u6b8b\u7559\u7387\u662f\u6210\u672c\u5931\u63a7\u7684\u6838\u5fc3 KPI\u3002<\/p>\n<h4>7.1 \u4e09\u7ea7\u5bf9\u7167\u6743\u8861\u66f2\u7ebf<\/h4>\n<p>  #mermaid-svg-40riZs6GBtWPiYdu{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-40riZs6GBtWPiYdu .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-40riZs6GBtWPiYdu .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-40riZs6GBtWPiYdu .error-icon{fill:#552222;}#mermaid-svg-40riZs6GBtWPiYdu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-40riZs6GBtWPiYdu .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-40riZs6GBtWPiYdu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-40riZs6GBtWPiYdu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-40riZs6GBtWPiYdu .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-40riZs6GBtWPiYdu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-40riZs6GBtWPiYdu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-40riZs6GBtWPiYdu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-40riZs6GBtWPiYdu .marker.cross{stroke:#333333;}#mermaid-svg-40riZs6GBtWPiYdu svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-40riZs6GBtWPiYdu p{margin:0;}#mermaid-svg-40riZs6GBtWPiYdu :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>     90 \u4efb\u52a1\u4e09\u7ea7\u5bf9\u7167&#xff1a;\u62d2\u7b54\u7387 vs \u6210\u672c\u6b8b\u7559\u7387<\/p>\n<p>      \u9884\u7b97\u8017\u5c3d\u9636<\/p>\n<p>      \u6210\u672c\u7206\u70b8\u9636<\/p>\n<p>      \u6210\u672c\u5931\u914d\u9636<\/p>\n<p>      100<\/p>\n<p>      90<\/p>\n<p>      80<\/p>\n<p>      70<\/p>\n<p>      60<\/p>\n<p>      50<\/p>\n<p>      40<\/p>\n<p>      30<\/p>\n<p>      20<\/p>\n<p>      10<\/p>\n<p>      0<\/p>\n<p>      \u6210\u672c\u6b8b\u7559\u7387<\/p>\n<h4>7.2 \u6210\u672c\u6b8b\u7559\u7387\u6e90\u7801\u9aa8\u67b6<\/h4>\n<p><span class=\"token comment\"># \u6587\u4ef6\u540d: cost_residual.py<\/span><br \/>\n<span class=\"token comment\"># \u529f\u80fd: \u6210\u672c\u6b8b\u7559\u7387\u91cf\u5316\u2014\u2014\u9002\u914d\u68c0\u6d4b 4% \u7cbe\u9632\u60a3 vs \u9884\u7b97\u8017\u5c3d 100% \u65e0\u9632\u60a3<\/span><br \/>\n<span class=\"token comment\"># \u8fd0\u884c: python cost_residual.py<\/span><\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u6b8b\u7559\u7387&#xff1a;\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551\u7684\u6838\u5fc3 KPI\u3002&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> random<\/p>\n<p>random<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">budget_exhaust<\/span><span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9884\u7b97\u8017\u5c3d&#xff1a;\u65e0\u9002\u914d\u68c0\u6d4b\u6b8b\u7559 100%\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;detected&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">cost_explosion<\/span><span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u7206\u70b8\u68c0\u6d4b&#xff1a;\u7a81\u589e\u68c0\u6d4b&#043;\u964d\u7ea7\u515c\u5e95\u4fdd\u4f4e\u6b8b\u7559\u3002&#034;&#034;&#034;<\/span><br \/>\n    missed <span class=\"token operator\">&#061;<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.14<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> missed<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;detected&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.14<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;detected&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.0<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">cost_mismatch<\/span><span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6210\u672c\u5931\u914d&#xff1a;\u65e0\u9002\u914d\u68c0\u6d4b\u6b8b\u7559 100%\u3002&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;detected&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">simulate_residual<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    stats <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n             <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n             <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        task <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;id&#034;<\/span><span class=\"token punctuation\">:<\/span> i<span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> level<span class=\"token punctuation\">,<\/span> func <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">,<\/span> budget_exhaust<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">,<\/span> cost_explosion<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">,<\/span> cost_mismatch<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            r <span class=\"token operator\">&#061;<\/span> func<span class=\"token punctuation\">(<\/span>task<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                stats<span class=\"token punctuation\">[<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n            stats<span class=\"token punctuation\">[<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> n<span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answer&#034;<\/span><span class=\"token punctuation\">:<\/span> stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answer&#034;<\/span><span class=\"token punctuation\">:<\/span> stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;answer&#034;<\/span><span class=\"token punctuation\">:<\/span> stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;answered&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>stats<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;residual&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> simulate_residual<span class=\"token punctuation\">(<\/span><span class=\"token number\">90<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6210\u672c\u6b8b\u7559\u7387\u4eff\u771f\u7ed3\u679c&#xff08;n&#061;90&#xff09;:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> level <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;exhaust&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;explosion&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mismatch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        v <span class=\"token operator\">&#061;<\/span> r<span class=\"token punctuation\">[<\/span>level<span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>level<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: \u62d2\u7b54\u7387 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> v<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;answer&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \/ \u6210\u672c\u6b8b\u7559\u7387 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;residual&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n  \u6838\u5fc3\u6d1e\u5bdf:&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u6210\u672c\u7206\u70b8\u68c0\u6d4b\u9636\u6b8b\u7559\u7387 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;explosion&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;residual&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5373\u7a81\u589e\u68c0\u6d4b&#043;\u964d\u7ea7\u515c\u5e95\u4fdd\u4f4e\u6b8b\u7559\u6c34\u5e73&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u9884\u7b97\u8017\u5c3d\u9636\u6b8b\u7559\u7387 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>r<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;exhaust&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;residual&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5373\u65e0\u9002\u914d\u68c0\u6d4b\u6210\u672c\u5fc5\u5931\u63a7\u65e0\u4ece\u9632\u60a3&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u7ed3\u8bba: \u6838\u5fc3 KPI \u662f\u6210\u672c\u6b8b\u7559\u7387\u2014\u2014\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u6210\u672c\u6b8b\u7559\u7387\u5b9e\u6d4b&#xff08;n&#061;90&#xff09;&#xff1a;\u9884\u7b97\u8017\u5c3d\u62d2\u7b54\u7387 100% \u6b8b\u7559\u7387 100%&#xff08;\u65e0\u9002\u914d\u68c0\u6d4b\u6210\u672c\u5fc5\u5931\u63a7&#xff09;&#xff0c;\u6210\u672c\u7206\u70b8\u68c0\u6d4b\u62d2\u7b54\u7387 0% \u6b8b\u7559\u7387 2%&#xff08;\u7a81\u589e\u68c0\u6d4b&#043;\u964d\u7ea7\u515c\u5e95\u4fdd\u4f4e\u6b8b\u7559&#xff09;&#xff0c;\u6210\u672c\u5931\u914d\u62d2\u7b54\u7387 100% \u6b8b\u7559\u7387 100%&#xff08;\u65e0\u9002\u914d\u68c0\u6d4b\u5931\u914d\u5fc5\u5d29&#xff09;\u3002<\/p>\n<p>\u53cd\u76f4\u89c9\u6d1e\u5bdf\u5377\u56db\u56db\u8fde&#xff1a;\u6210\u672c\u5931\u63a7\u7684\u6838\u5fc3 KPI \u4e0d\u662f\u62d2\u7b54\u7387&#xff08;reject rate&#xff09;\u4e5f\u4e0d\u662f\u68c0\u51fa\u7387&#xff08;detect rate&#xff09;&#xff0c;\u800c\u662f\u6210\u672c\u6b8b\u7559\u7387\u2014\u2014\u6210\u672c\u7206\u70b8\u68c0\u6d4b\u9636\u6b8b\u7559\u7387 2% \u5373\u7a81\u589e\u68c0\u6d4b&#043;\u964d\u7ea7\u515c\u5e95\u4fdd\u4f4e\u6b8b\u7559\u6c34\u5e73&#xff08;\u6f0f\u68c0\u5076\u964d\u7ea7\u53cd\u63a8&#xff09;&#xff0c;naive \u9884\u7b97\u8017\u5c3d 100% \u5373\u65e0\u9002\u914d\u68c0\u6d4b\u6210\u672c\u5fc5\u5931\u63a7\u65e0\u4ece\u9632\u60a3\u3002\u4e0e 4.1 \u6b7b\u5faa\u73af\u6b8b\u7559\u7387\u30014.2 \u6f02\u79fb\u6b8b\u7559\u7387\u30014.3 \u4fe1\u606f\u6b8b\u7559\u7387\u53cd\u76f4\u89c9\u6d1e\u5bdf\u5377\u56db\u56db\u8fde\u2014\u2014\u300c\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551\u300d\u7684\u907f\u5751\u54f2\u5b66\u5728\u5377\u56db\u8fde\u7eed\u590d\u7528&#xff0c;\u627f\u63a5\u5377\u4e09\u300c\u5b81\u53ef\u7cbe\u964d\u7ea7\u4e0d\u53ef\u5d29\u300d\u751f\u4ea7\u54f2\u5b66\u8f6c\u578b\u4e3a\u5377\u56db\u300c\u5b81\u53ef\u9632\u60a3\u4e0d\u53ef\u6551\u300d\u907f\u5751\u54f2\u5b66\u3002<\/p>\n<p>\u627f\u63a5 4.1\/4.2\/4.3 \u964d\u7ea7\u515c\u5e95\u54f2\u5b66\u540c\u6784\u7b2c\u56db\u590d\u7528&#xff1a;4.1 \u73af\u6f0f\u68c0\u964d\u7ea7\u30014.2 \u6f02\u79fb\u6f0f\u68c0\u964d\u7ea7\u30014.3 \u5173\u952e\u6f0f\u68c0\u964d\u7ea7\u4e0e 4.4 \u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u540c\u6784\u2014\u2014\u300c\u5b81\u53ef\u964d\u7ea7\u53cd\u63a8\u4e0d\u53ef\u6f0f\u68c0\u5373\u5f03\u300d\u540c\u6784&#xff0c;\u5377\u56db\u907f\u5751\u54f2\u5b66\u8fde\u7eed\u590d\u7528\u7b2c\u56db\u8fde\u3002<\/p>\n<p>\u8fb9\u754c\u5c40\u9650&#xff1a;\u672c\u7bc7\u6b62\u4e8e\u300c\u6210\u672c\u5931\u63a7\u5185\u5e55\u300d\u3002\u5b83\u4e0d\u5904\u7406\u300c\u6743\u9650\u5931\u63a7\u5d29\u6e83\u300d\u2014\u2014\u5982 Agent \u8d8a\u6743\u8c03\u7528\u81f4\u6743\u9650\u5931\u63a7&#xff0c;\u8fd9\u662f 4.5\u300c\u6743\u9650\u5931\u63a7&#xff1a;\u8d8a\u6743\u8c03\u7528\u4e0e\u6743\u9650\u6ee5\u7528\u300d\u8981\u4e13\u62c6\u7684\u8fb9\u754c&#xff0c;\u627f\u63a5\u672c\u7bc7\u672b\u6bb5\u9884\u544a\u3002<\/p>\n<hr \/>\n<h3>\u603b\u7ed3<\/h3>\n<p>\u6210\u672c\u5931\u63a7\u4e0d\u662f\u9884\u7b97\u8017\u5c3d\u7684\u7b80\u5355\u5d29\u6e83&#xff0c;\u662f\u6210\u672c\u6df1\u5ea6\u4e09\u7ea7\u9012\u8fdb\u2014\u2014\u9884\u7b97\u8017\u5c3d\u9636&#xff08;\u591a\u8f6e\u7d2f\u79ef\u6210\u672c&#xff0c;\u62d2\u7b54 100%&#xff0c;\u5d29\u5728\u68c0\u6d4b\u6f0f\u65e0\u9632\u60a3&#xff09;\u3001\u6210\u672c\u7206\u70b8\u9636&#xff08;\u5355\u8f6e\u7a81\u589e\u68c0\u6d4b&#xff0c;\u62d2\u7b54 0%&#xff0c;\u5d29\u5728\u7a81\u589e\u6f0f\u68c0\u6b8b\u7559 2%&#xff09;\u3001\u6210\u672c\u5931\u914d\u9636&#xff08;\u8de8\u9884\u7b97\u9002\u914d\u68c0\u6d4b&#xff0c;\u62d2\u7b54 100%&#xff0c;\u5d29\u5728\u9002\u914d\u6f0f\u6821\u5931\u914d 100%&#xff09;\u3002\u4e09\u7ea7\u4e4b\u95f4\u662f\u6210\u672c\u6df1\u5ea6\u7684\u5916\u6269&#xff0c;\u6bcf\u5916\u6269\u4e00\u7ea7\u5d29\u6e83\u591a\u4e00\u7c7b\u2014\u2014\u9884\u7b97\u8017\u5c3d\u5d29\u5728\u68c0\u6d4b\u6f0f\u3001\u6210\u672c\u7206\u70b8\u5d29\u5728\u7a81\u589e\u6f0f\u68c0\u3001\u6210\u672c\u5931\u914d\u5d29\u5728\u9002\u914d\u6f0f\u6821\u3002\u6df7\u5408\u8def\u7531\u5668\u6309\u4efb\u52a1\u6210\u672c\u6df1\u5ea6\u5206\u6d41\u4e09\u7ea7\u505a\u5230\u300c\u4f4e\u6210\u672c\u4e0d\u6d6a\u8d39\u7a81\u589e\u68c0\u6d4b\u3001\u8de8\u9884\u7b97\u8c03\u7528\u8d70\u9002\u914d\u68c0\u6d4b\u300d&#xff0c;\u7efc\u5408\u62d2\u7b54\u7387 70% \u5ef6\u8fdf 16s \u5bf9\u6bd4\u5168\u6210\u672c\u5931\u914d 100% \u4f46 48s \u5ef6\u8fdf\u964d 66%\u3002\u7a81\u589e\u6f0f\u68c0\u964d\u7ea7\u515c\u5e95\u4e09\u7b56\u7565&#xff08;\u4ea7\u7269\u5f02\u5e38\/\u8f6e\u6570\u4e0a\u9650\/\u57fa\u7ebf\u5386\u53f2&#xff09;\u4fdd\u6210\u672c\u6b8b\u7559\u7387\u964d\u5230 2%\u3002\u7a81\u589e\u68c0\u6d4b\u4ecb\u8d28\u4e09\u7b56\u7565&#xff08;\u672c\u5730\u5feb\u8de8\u4f1a\u8bdd\u4e22\/\u8fdc\u7a0b\u7a33\u6162\/\u4e91\u7aef\u5f39\u6027\u6210\u672c&#xff09;\u6309\u4efb\u52a1\u5173\u952e\u6027\u5206\u6d41\u7efc\u5408\u68c0\u6d4b\u5b8c\u5907\u7387 83%\u3002\u6838\u5fc3\u6d1e\u5bdf&#xff1a;\u6210\u672c\u5931\u63a7\u7684\u6838\u5fc3 KPI \u4e0d\u662f\u62d2\u7b54\u7387\u800c\u662f\u6210\u672c\u6b8b\u7559\u7387\u2014\u2014\u6210\u672c\u7206\u70b8\u68c0\u6d4b\u9636\u6b8b\u7559\u7387 2% \u5373\u7a81\u589e\u68c0\u6d4b&#043;\u964d\u7ea7\u515c\u5e95\u4fdd\u4f4e\u6b8b\u7559\u6c34\u5e73&#xff08;\u6f0f\u68c0\u5076\u964d\u7ea7\u53cd\u63a8&#xff09;&#xff0c;naive \u9884\u7b97\u8017\u5c3d 100% \u5373\u65e0\u9002\u914d\u68c0\u6d4b\u6210\u672c\u5fc5\u5931\u63a7\u65e0\u4ece\u9632\u60a3&#xff0c;\u300c\u5b81\u53ef\u9002\u914d\u68c0\u6d4b\u9632\u60a3\u4e0d\u53ef\u9884\u7b97\u8017\u5c3d\u5373\u6551\u300d\u7684\u907f\u5751\u54f2\u5b66\u5728\u5377\u56db\u8fde\u7eed\u590d\u7528&#xff0c;\u627f\u63a5\u5377\u4e09\u300c\u5b81\u53ef\u7cbe\u964d\u7ea7\u4e0d\u53ef\u5d29\u300d\u751f\u4ea7\u54f2\u5b66\u8f6c\u578b\u4e3a\u5377\u56db\u300c\u5b81\u53ef\u9632\u60a3\u4e0d\u53ef\u6551\u300d\u907f\u5751\u54f2\u5b66\u3002\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6743\u9650\u5931\u63a7&#xff1a;\u8d8a\u6743\u8c03\u7528\u4e0e\u6743\u9650\u6ee5\u7528&#xff0c;\u627f\u63a5\u672c\u7bc7\u672b\u6bb5\u9884\u544a\u62c6\u6743\u9650\u5d29\u6e83\u5185\u5e55\u3002<\/p>\n<hr \/>\n<p>GitHub \u4ed3\u5e93: github.com\/tushouhao\/agent-internals<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6458\u8981<br \/>\n4.3 \u62c6\u5b8c\u4e0a\u4e0b\u6587\u5d29\u6e83\u6b62\u4e8e\u4fe1\u606f\u6b8b\u7559\u7387 2% \u7684\u5173\u952e\u68c0\u6d4b\u9632\u60a3&#xff0c;\u4f46 Agent \u6210\u672c\u5c42\u53e6\u6709\u4e09\u7c7b\u5178\u578b\u5d29\u6e83\u3002\u672c\u7bc7\u627f\u63a5 4.3 \u672b\u6bb5\u9884\u544a\u300c\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6210\u672c\u5931\u63a7&#xff1a;\u9884\u7b97\u8017\u5c3d\u4e0e\u6210\u672c\u7206\u70b8\u300d&#xff0c;\u62c6 Agent \u6210\u672c\u5d29\u6e83\u5185\u5e55&#xff0c;\u7acb\u300c\u9884\u7b97\u8017\u5c3d\u2192\u6210\u672c\u7206\u70b8\u2192\u6210\u672c\u5931\u914d\u300d\u5931\u8d25\u6a21\u5f0f\u4e09\u7ea7\u9aa8\u67b6&#xff1a;\u9884\u7b97\u8017\u5c3d\u9636\u591a\u8f6e\u8c03\u7528\u7d2f\u79ef\u6210\u672c\u6b62\u4e8e\u9884\u7b97\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100% \u6210\u672c\u7206\u70b8\u9636\u5355\u8f6e\u6210\u672c\u7a81\u589e\u6b62\u4e8e\u7a81\u589e\u68c0\u6d4b\u7f3a\u5931\u81f4\u68c0\u51fa\u7387 78% \u6f0f\u68c0\u6b8b\u7559 12% \u6210\u672c\u5931\u914d\u9636\u6210\u672c<\/p>\n","protected":false},"author":2,"featured_media":92207,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[10539,74,50,956],"topic":[],"class_list":["post-92208","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-agent","tag-50","tag-956"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/92208.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6458\u8981 4.3 \u62c6\u5b8c\u4e0a\u4e0b\u6587\u5d29\u6e83\u6b62\u4e8e\u4fe1\u606f\u6b8b\u7559\u7387 2% \u7684\u5173\u952e\u68c0\u6d4b\u9632\u60a3&#xff0c;\u4f46 Agent \u6210\u672c\u5c42\u53e6\u6709\u4e09\u7c7b\u5178\u578b\u5d29\u6e83\u3002\u672c\u7bc7\u627f\u63a5 4.3 \u672b\u6bb5\u9884\u544a\u300c\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6210\u672c\u5931\u63a7&#xff1a;\u9884\u7b97\u8017\u5c3d\u4e0e\u6210\u672c\u7206\u70b8\u300d&#xff0c;\u62c6 Agent \u6210\u672c\u5d29\u6e83\u5185\u5e55&#xff0c;\u7acb\u300c\u9884\u7b97\u8017\u5c3d\u2192\u6210\u672c\u7206\u70b8\u2192\u6210\u672c\u5931\u914d\u300d\u5931\u8d25\u6a21\u5f0f\u4e09\u7ea7\u9aa8\u67b6&#xff1a;\u9884\u7b97\u8017\u5c3d\u9636\u591a\u8f6e\u8c03\u7528\u7d2f\u79ef\u6210\u672c\u6b62\u4e8e\u9884\u7b97\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100% \u6210\u672c\u7206\u70b8\u9636\u5355\u8f6e\u6210\u672c\u7a81\u589e\u6b62\u4e8e\u7a81\u589e\u68c0\u6d4b\u7f3a\u5931\u81f4\u68c0\u51fa\u7387 78% \u6f0f\u68c0\u6b8b\u7559 12% \u6210\u672c\u5931\u914d\u9636\u6210\u672c\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/92208.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-09T09:56:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/08\/20260809095648-6a784ee0e50e8.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/92208.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/92208.html\",\"name\":\"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-08-09T09:56:50+00:00\",\"dateModified\":\"2026-08-09T09:56:50+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/92208.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/92208.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/92208.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/92208.html","og_locale":"zh_CN","og_type":"article","og_title":"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6458\u8981 4.3 \u62c6\u5b8c\u4e0a\u4e0b\u6587\u5d29\u6e83\u6b62\u4e8e\u4fe1\u606f\u6b8b\u7559\u7387 2% \u7684\u5173\u952e\u68c0\u6d4b\u9632\u60a3&#xff0c;\u4f46 Agent \u6210\u672c\u5c42\u53e6\u6709\u4e09\u7c7b\u5178\u578b\u5d29\u6e83\u3002\u672c\u7bc7\u627f\u63a5 4.3 \u672b\u6bb5\u9884\u544a\u300c\u4e0b\u4e00\u7bc7\u8fdb\u5165\u6210\u672c\u5931\u63a7&#xff1a;\u9884\u7b97\u8017\u5c3d\u4e0e\u6210\u672c\u7206\u70b8\u300d&#xff0c;\u62c6 Agent \u6210\u672c\u5d29\u6e83\u5185\u5e55&#xff0c;\u7acb\u300c\u9884\u7b97\u8017\u5c3d\u2192\u6210\u672c\u7206\u70b8\u2192\u6210\u672c\u5931\u914d\u300d\u5931\u8d25\u6a21\u5f0f\u4e09\u7ea7\u9aa8\u67b6&#xff1a;\u9884\u7b97\u8017\u5c3d\u9636\u591a\u8f6e\u8c03\u7528\u7d2f\u79ef\u6210\u672c\u6b62\u4e8e\u9884\u7b97\u68c0\u6d4b\u7f3a\u5931\u81f4\u62d2\u7b54\u7387 100% \u6210\u672c\u7206\u70b8\u9636\u5355\u8f6e\u6210\u672c\u7a81\u589e\u6b62\u4e8e\u7a81\u589e\u68c0\u6d4b\u7f3a\u5931\u81f4\u68c0\u51fa\u7387 78% \u6f0f\u68c0\u6b8b\u7559 12% \u6210\u672c\u5931\u914d\u9636\u6210\u672c","og_url":"https:\/\/www.wsisp.com\/helps\/92208.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-08-09T09:56:50+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/08\/20260809095648-6a784ee0e50e8.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"24 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/92208.html","url":"https:\/\/www.wsisp.com\/helps\/92208.html","name":"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-08-09T09:56:50+00:00","dateModified":"2026-08-09T09:56:50+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/92208.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/92208.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/92208.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Agent\u6210\u672c\u5931\u63a7\uff1a\u4ece\u9884\u7b97\u8017\u5c3d\u5230\u6210\u672c\u7206\u70b8\uff0c\u4f60\u7684AI\u9879\u76ee\u6b63\u5728\u201c\u70e7\u94b1\u201d\u5417\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/92208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=92208"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/92208\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/92207"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=92208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=92208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=92208"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=92208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}