{"id":117431,"date":"2026-10-24T19:40:33","date_gmt":"2026-10-24T11:40:33","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/117431.html"},"modified":"2026-10-24T19:40:33","modified_gmt":"2026-10-24T11:40:33","slug":"agent%e6%bc%94%e5%8c%96%e5%8f%b2%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e6%a8%a1%e5%9e%8b%e4%bb%8e%e6%b2%a1%e7%a2%b0%e8%bf%87%e4%bd%a0%e7%9a%84%e5%b7%a5%e5%85%b7%ef%bc%8cfunction-calling%e5%8f%aa","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/117431.html","title":{"rendered":"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66"},"content":{"rendered":"<p>\u672c\u7bc7\u662f\u300a\u667a\u80fd\u4f53\u6f14\u5316\u53f2\u300b\u7cfb\u5217\u7b2c 2 \u7bc7 \u7cfb\u5217\u4e3b\u7ebf\u4e0d\u662f&#034;\u67d0\u5e74\u51fa\u73b0\u4e86\u67d0\u6280\u672f&#034;&#xff0c;\u800c\u662f&#034;\u56e0\u4e3a\u4e0a\u4e00\u6b65\u5d29\u4e86&#xff0c;\u6240\u4ee5\u4e0b\u4e00\u6b65\u624d\u51fa\u73b0&#034;\u3002 \u5168\u7cfb\u5217\u5171\u7528\u4e00\u4e2a\u4ece 34 \u884c\u957f\u5230 600 \u884c\u7684 tiny-agent&#xff0c;\u672c\u7bc7\u662f\u5b83\u7684 v0.2\u3002<\/p>\n<hr \/>\n<h3>\u600e\u4e48\u8bfb\u8fd9\u7bc7<\/h3>\n<ul>\n<li>&#x1f6b6; 12 \u5206\u949f\u7248&#xff1a;\u53ea\u770b\u300c\u5d29\u574f\u73b0\u573a\u300d\u300c\u4e00\u53e5\u8bdd\u539f\u7406\u300d\u548c\u6cf3\u9053\u56fe&#xff0c;\u641e\u6e05\u7533\u8bf7\u4e66\u673a\u5236\u3002<\/li>\n<li>&#x1f3c3; 35 \u5206\u949f\u7248&#xff08;\u63a8\u8350&#xff09;&#xff1a;\u52a0\u8bfb\u4e09\u8303\u5f0f\u5bf9\u7167\u3001\u7533\u8bf7\u4e66\u5b57\u6bb5\u62c6\u89e3\u548c v0.2 \u4ee3\u7801&#xff0c;\u4f60\u4f1a\u77e5\u9053\u5de5\u5177\u8be5\u600e\u4e48\u5199\u3001\u5199\u591a\u5c11\u3002<\/li>\n<li>&#x1f93f; \u6df1\u6f5c\u7248&#xff1a;\u987a\u7740 token \u6d4b\u7b97\u6570\u636e\u5f80\u4e0b\u60f3&#xff1a;\u4e3a\u4ec0\u4e48\u5de5\u5177\u53d8\u591a\u4e4b\u540e&#xff0c;\u4e8b\u60c5\u4f1a\u5931\u63a7\u3002<\/li>\n<\/ul>\n<hr \/>\n<h3>01 \u00b7 \u5d29\u574f\u73b0\u573a&#xff1a;\u5b83\u7ed9\u4e86\u4e2a\u5f88\u50cf\u6837\u7684\u6570\u5b57&#xff0c;\u4f46\u90a3\u662f\u7f16\u7684<\/h3>\n<p>\u56de\u5230 2023 \u5e74\u521d\u3002\u4f60\u60f3\u8ba9 GPT \u544a\u8bc9\u4f60\u5317\u4eac\u4eca\u5929\u7684\u5929\u6c14\u3002<\/p>\n<p>\u4f60\u8bd5\u4e86\u5f53\u65f6\u6700\u901a\u884c\u7684\u529e\u6cd5\u2014\u2014\u5728\u63d0\u793a\u8bcd\u91cc\u6073\u6c42\u5b83&#xff1a;<\/p>\n<p>&#034;\u8bf7\u67e5\u8be2\u5317\u4eac\u4eca\u5929\u7684\u5929\u6c14\u3002<br \/>\n\u8bf7\u52a1\u5fc5\u53ea\u8fd4\u56de JSON&#xff0c;\u683c\u5f0f\u5982\u4e0b&#xff1a;{&#034;city&#034;: &#034;&#8230;&#034;, &#034;temp&#034;: \u6570\u5b57, &#034;rain&#034;: true\/false}<br \/>\n\u4e0d\u8981\u8f93\u51fa\u4efb\u4f55\u5176\u4ed6\u6587\u5b57\u3002&#034;<\/p>\n<p>\u5b83\u7167\u505a\u4e86\u3002\u8fd4\u56de {&#034;city&#034;: &#034;\u5317\u4eac&#034;, &#034;temp&#034;: 18, &#034;rain&#034;: true}\u3002\u770b\u8d77\u6765\u5b8c\u7f8e\u3002<\/p>\n<p>\u95ee\u9898\u5728\u4e8e&#xff1a;\u8fd9\u4e2a 18 \u5ea6\u662f\u5b83\u7f16\u7684\u3002<\/p>\n<p>\u5b83\u6ca1\u67e5\u8fc7\u4efb\u4f55\u5929\u6c14 API&#xff0c;\u5b83\u53ea\u662f\u6839\u636e\u8bad\u7ec3\u6570\u636e\u91cc&#034;\u5317\u4eac\u5341\u6708\u5927\u6982\u5341\u51e0\u5ea6&#034;\u7684\u5370\u8c61&#xff0c;\u751f\u6210\u4e86\u4e00\u4e2a\u683c\u5f0f\u6b63\u786e\u3001\u6570\u503c\u5408\u7406\u7684\u7b54\u6848\u3002\u66f4\u8981\u547d\u7684\u662f\u2014\u2014\u4f60\u4ece\u8fd4\u56de\u7ed3\u679c\u4e0a\u5b8c\u5168\u65e0\u6cd5\u533a\u5206\u300c\u771f\u7684\u67e5\u4e86\u300d\u548c\u300c\u7f16\u5f97\u50cf\u300d\u3002<\/p>\n<p>\u8fd9\u5c31\u662f\u7eaf\u8bed\u8a00\u6a21\u578b\u7684\u6839\u672c\u56f0\u5883&#xff1a;\u5b83\u662f\u4e00\u53f0\u53ea\u4f1a\u8f93\u51fa\u6587\u5b57\u7684\u673a\u5668&#xff0c;\u800c\u6587\u5b57\u548c\u73b0\u5b9e\u4e4b\u95f4\u6ca1\u6709\u5fc5\u7136\u8054\u7cfb\u3002<\/p>\n<p>\u800c\u4e14\u5c31\u7b97\u5b83\u771f\u7684\u60f3\u544a\u8bc9\u4f60&#034;\u8bf7\u5e2e\u6211\u8c03\u4e00\u4e0b\u5929\u6c14 API&#034;&#xff0c;\u5b83\u4e5f\u6ca1\u6709\u5634\u628a\u8fd9\u4e2a\u8bf7\u6c42\u8bf4\u51fa\u6765\u2014\u2014\u5b83\u53ea\u80fd\u7ee7\u7eed\u8f93\u51fa\u6587\u5b57\u3002\u4e8e\u662f\u6574\u4e2a 2023 \u5e74\u4e0a\u534a\u5e74&#xff0c;\u5de5\u7a0b\u5e08\u4eec\u90fd\u5728\u8ddf\u4e09\u4ef6\u4e8b\u640f\u6597&#xff1a;<\/p>\n<ul>\n<li>\u683c\u5f0f\u4e0d\u7a33\u5b9a \u2014\u2014 \u6709\u65f6\u8fd4\u56de JSON&#xff0c;\u6709\u65f6\u5728 JSON \u5916\u9762\u5957\u4e00\u53e5&#034;\u597d\u7684&#xff0c;\u8fd9\u662f\u7ed3\u679c&#xff1a;&#034;<\/li>\n<li>\u53c2\u6570\u778e\u7f16 \u2014\u2014 \u4f60\u5b9a\u4e49\u4e86 max_results \u5fc5\u987b\u662f 1-10 \u7684\u6574\u6570&#xff0c;\u5b83\u7ed9\u4f60\u8fd4\u56de &#034;\u5341\u4e2a&#034;<\/li>\n<li>\u5e7b\u89c9\u6267\u884c \u2014\u2014 \u5b83\u58f0\u79f0&#034;\u6211\u5df2\u7ecf\u53d1\u9001\u90ae\u4ef6\u4e86&#034;&#xff0c;\u800c\u5b9e\u9645\u4e0a\u5b83\u6839\u672c\u6ca1\u6709\u53d1\u90ae\u4ef6\u7684\u80fd\u529b<\/li>\n<\/ul>\n<p>\u89e3\u6cd5\u4e0d\u662f&#034;\u628a\u63d0\u793a\u8bcd\u5199\u5f97\u66f4\u597d&#034;&#xff0c;\u800c\u662f\u627f\u8ba4\u4e00\u4ef6\u4e8b&#xff1a;\u6a21\u578b\u4e0d\u5e94\u8be5\u88ab\u8981\u6c42\u6267\u884c&#xff0c;\u5b83\u5e94\u8be5\u88ab\u8981\u6c42\u7533\u8bf7\u3002<\/p>\n<hr \/>\n<h3>02 \u00b7 \u4e00\u53e5\u8bdd\u539f\u7406<\/h3>\n<p>\u5de5\u5177\u8c03\u7528\u4e0d\u662f\u6a21\u578b\u5728\u7528\u5de5\u5177&#xff0c;\u800c\u662f\u6a21\u578b\u5728\u751f\u6210\u4e00\u4efd\u683c\u5f0f\u4e25\u683c\u7684\u8c03\u7528\u7533\u8bf7\u4e66&#xff1b; \u771f\u6b63\u7684\u6267\u884c&#xff0c;\u53d1\u751f\u5728\u6a21\u578b\u4e4b\u5916\u7684\u4f60\u7684\u4ee3\u7801\u91cc\u3002<\/p>\n<p>\u8fd9\u53e5\u8bdd\u542c\u8d77\u6765\u50cf\u6587\u5b57\u6e38\u620f&#xff0c;\u4f46\u5b83\u662f\u6574\u4e2a Agent \u5de5\u5177\u751f\u6001\u7684\u5730\u57fa\u3002\u7406\u89e3\u5b83&#xff0c;\u540e\u9762\u6240\u6709\u4e8b\u60c5&#xff08;\u5305\u62ec MCP\u3001\u5de5\u5177\u6743\u9650\u3001\u201c\u4e3a\u4ec0\u4e48\u5de5\u5177\u4e0d\u80fd\u968f\u4fbf\u7ed9\u201d&#xff09;\u90fd\u80fd\u4e00\u6b21\u60f3\u901a\u3002<\/p>\n<hr \/>\n<h3>03 \u00b7 \u4e00\u6b21\u5b8c\u6574\u5f80\u8fd4&#xff1a;\u8c01\u5728\u5199\u5b57&#xff0c;\u8c01\u5728\u5e72\u6d3b<\/h3>\n<p>     \u4f60\u7684\u4ee3\u7801&#xff08;\u771f\u6b63\u5e72\u6d3b&#xff09;<\/p>\n<p>     \u6a21\u578b&#xff08;\u53ea\u4f1a\u5199\u5b57&#xff09;<\/p>\n<p>      \u4f60\u7684\u4ee3\u7801&#xff08;\u771f\u6b63\u5e72\u6d3b&#xff09;<\/p>\n<p>      \u6a21\u578b&#xff08;\u53ea\u4f1a\u5199\u5b57&#xff09;<\/p>\n<p>  #mermaid-svg-5D9GUZfM6QF3nGVK{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-5D9GUZfM6QF3nGVK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5D9GUZfM6QF3nGVK .error-icon{fill:#552222;}#mermaid-svg-5D9GUZfM6QF3nGVK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5D9GUZfM6QF3nGVK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5D9GUZfM6QF3nGVK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5D9GUZfM6QF3nGVK .marker.cross{stroke:#333333;}#mermaid-svg-5D9GUZfM6QF3nGVK svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5D9GUZfM6QF3nGVK p{margin:0;}#mermaid-svg-5D9GUZfM6QF3nGVK .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-5D9GUZfM6QF3nGVK text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-5D9GUZfM6QF3nGVK .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-5D9GUZfM6QF3nGVK .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-5D9GUZfM6QF3nGVK #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-5D9GUZfM6QF3nGVK .sequenceNumber{fill:white;}#mermaid-svg-5D9GUZfM6QF3nGVK #sequencenumber{fill:#333;}#mermaid-svg-5D9GUZfM6QF3nGVK #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-5D9GUZfM6QF3nGVK .messageText{fill:#333;stroke:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-5D9GUZfM6QF3nGVK .labelText,#mermaid-svg-5D9GUZfM6QF3nGVK .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .loopText,#mermaid-svg-5D9GUZfM6QF3nGVK .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-5D9GUZfM6QF3nGVK .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-5D9GUZfM6QF3nGVK .noteText,#mermaid-svg-5D9GUZfM6QF3nGVK .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-svg-5D9GUZfM6QF3nGVK .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-5D9GUZfM6QF3nGVK .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-5D9GUZfM6QF3nGVK .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-5D9GUZfM6QF3nGVK .actorPopupMenu{position:absolute;}#mermaid-svg-5D9GUZfM6QF3nGVK .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 \/ 0.4));}#mermaid-svg-5D9GUZfM6QF3nGVK .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-5D9GUZfM6QF3nGVK .actor-man circle,#mermaid-svg-5D9GUZfM6QF3nGVK line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-5D9GUZfM6QF3nGVK :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>   \u2460 \u5199\u51fa\u7533\u8bf7\u4e66 tool_call JSON<\/p>\n<p>   \u2461 \u89e3\u6790\u5e76\u771f\u6b63\u6267\u884c get_weather(&#034;\u5317\u4eac&#034;)<\/p>\n<p>   \u2462 \u62ff\u5230\u771f\u5b9e\u7ed3\u679c {&#034;rain&#034;: true}<\/p>\n<p>   \u2463 \u7ed3\u679c\u56de\u586b&#xff08;role&#061;&#034;tool&#034; \u6d88\u606f&#xff09;<\/p>\n<p>   \u5e26\u7740\u7ed3\u679c&#xff0c;\u91cd\u65b0\u601d\u8003&#xff08;\u4e0b\u4e00\u8f6e&#xff09;<\/p>\n<p>\u8fd9\u4e2a\u5206\u79bb\u5e26\u6765\u4e09\u4e2a\u76f4\u63a5\u540e\u679c&#xff0c;\u6bcf\u4e00\u4e2a\u90fd\u5f88\u91cd\u8981&#xff1a;<\/p>\n<li>\u6a21\u578b\u6c38\u8fdc\u4e0d\u4f1a\u771f\u7684\u53d1\u90ae\u4ef6\u3001\u5220\u6570\u636e\u5e93\u3001\u8f6c\u8d26\u3002 \u5b83\u53ea\u80fd\u8bf4&#034;\u6211\u60f3\u53d1\u90ae\u4ef6&#034;\u3002\u4f60\u7684\u4ee3\u7801\u624d\u662f\u6267\u884c\u8005\u2014\u2014\u8fd9\u65e2\u662f\u80fd\u529b\u8fb9\u754c&#xff0c;\u4e5f\u662f\u6700\u540e\u4e00\u9053\u5b89\u5168\u95f8\u95e8\u3002<\/li>\n<li>\u6a21\u578b\u53ef\u4ee5\u8c03\u7528\u4e0d\u5b58\u5728\u7684\u5de5\u5177\u3002 \u5b83\u4f1a\u5199\u51fa {&#034;name&#034;: &#034;send_money&#034;} \u8fd9\u6837\u7684\u7533\u8bf7\u4e66&#xff0c;\u800c\u4f60\u6839\u672c\u6ca1\u5b9a\u4e49\u8fc7\u3002\u8fd9\u53eb\u5de5\u5177\u5e7b\u89c9&#xff0c;\u53d1\u751f\u65f6\u4e0d\u4f1a\u62a5\u9519&#xff0c;\u53ea\u4f1a\u9759\u9ed8\u5730\u8d70\u4f60\u5199\u7684\u515c\u5e95\u5206\u652f\u3002<\/li>\n<li>\u53c2\u6570\u5fc5\u987b\u7531\u4f60\u7684\u4ee3\u7801\u6821\u9a8c\u3002 \u6a21\u578b\u7ed9\u4f60\u7684 arguments \u662f\u4e00\u6bb5\u5b57\u7b26\u4e32&#xff0c;\u4e0d\u662f\u5bf9\u8c61\u3002\u5b83\u53ef\u80fd\u5b57\u6bb5\u7f3a\u5931\u3001\u7c7b\u578b\u9519\u8bef\u3001\u503c\u8d8a\u754c\u3002\u5168\u90e8\u6821\u9a8c\u8d23\u4efb\u5728\u4f60\u3002<\/li>\n<hr \/>\n<h3>04 \u00b7 \u4e09\u6761\u8def&#xff1a;\u4ece&#034;\u6c42\u5b83&#034;\u5230&#034;\u5b83\u7533\u8bf7&#034;<\/h3>\n<p>\u628a 2023 \u5230 2026 \u7684\u5de5\u5177\u63a5\u5165\u65b9\u5f0f\u6392\u6210\u4e00\u5217&#xff0c;\u4f60\u4f1a\u770b\u5230\u4e00\u6761\u6e05\u6670\u7684\u6536\u655b\u8def\u7ebf&#xff1a; <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261024114031-6adc992fdef9e.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/> \u5de5\u5177\u63a5\u5165\u7684\u56db\u6b21\u6f14\u8fdb\u3002\u5173\u952e\u8f6c\u6298\u5728\u7b2c\u4e09\u4e2a&#xff1a;\u4ece\u6b64\u4e0d\u518d\u662f&#034;\u4f60\u6c42\u5b83\u6309\u683c\u5f0f\u8f93\u51fa&#034;&#xff0c;\u800c\u662f\u4f60\u628a\u5de5\u5177\u6e05\u5355\u4ea4\u7ed9\u5b83&#xff0c;\u5b83\u81ea\u5df1\u51b3\u5b9a\u8981\u4e0d\u8981\u7528\u3001\u7528\u54ea\u4e2a\u3002\u8fd9\u4e2a&#034;\u81ea\u5df1\u51b3\u5b9a&#034;&#xff0c;\u5c31\u662f Agent \u7684\u8d77\u70b9\u3002<\/p>\n<table>\n<tr>\u65b9\u5f0f\u65f6\u95f4\u600e\u4e48\u505a\u683c\u5f0f\u53ef\u9760\u6027\u8c01\u51b3\u5b9a\u7528\u4e0d\u7528\u73b0\u5728\u8fd8\u7528\u5417<\/tr>\n<tbody>\n<tr>\n<td>\u6587\u672c\u7ea6\u5b9a<\/td>\n<td>2023 \u4e4b\u524d<\/td>\n<td>\u63d0\u793a\u8bcd\u91cc\u5199&#034;\u8bf7\u8fd4\u56de JSON&#034;<\/td>\n<td>\u4f4e&#xff08;\u7ecf\u5e38\u8dd1\u504f&#xff09;<\/td>\n<td>\u4eba&#xff08;\u5199\u5728 prompt \u91cc&#xff09;<\/td>\n<td>\u57fa\u672c\u6dd8\u6c70<\/td>\n<\/tr>\n<tr>\n<td>\u7ed3\u6784\u5316\u8f93\u51fa<\/td>\n<td>2023 \u4e0a\u534a\u5e74<\/td>\n<td>\u7ea6\u675f\u89e3\u7801 \/ JSON mode<\/td>\n<td>\u9ad8&#xff08;\u8bed\u6cd5\u5c42\u4fdd\u8bc1&#xff09;<\/td>\n<td>\u4eba<\/td>\n<td>\u4ecd\u5728\u7528&#xff0c;\u7528\u4e8e\u62bd\u53d6<\/td>\n<\/tr>\n<tr>\n<td>\u539f\u751f FC<\/td>\n<td>2023.06 \u8d77<\/td>\n<td>tools&#061;[&#8230;] \u5165\u53c2<\/td>\n<td>\u9ad8&#xff08;schema \u7ea6\u675f&#xff09;<\/td>\n<td>\u6a21\u578b\u81ea\u5df1<\/td>\n<td>\u4e3b\u6d41<\/td>\n<\/tr>\n<tr>\n<td>MCP<\/td>\n<td>2024.11 \u8d77<\/td>\n<td>\u6807\u51c6\u534f\u8bae\u6302\u8f7d\u5de5\u5177\u670d\u52a1<\/td>\n<td>\u9ad8<\/td>\n<td>\u6a21\u578b\u81ea\u5df1<\/td>\n<td>\u5feb\u901f\u589e\u957f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u770b\u5012\u6570\u7b2c\u4e8c\u5217&#xff1a;\u524d\u9762\u4e24\u79cd\u65b9\u5f0f&#xff0c;\u7528\u4e0d\u7528\u5de5\u5177\u662f\u4f60\u5199\u5728\u63d0\u793a\u8bcd\u91cc\u7684\u2014\u2014\u672c\u8d28\u8fd8\u662f workflow\u3002\u7b2c\u4e09\u79cd\u5f00\u59cb&#xff0c;\u51b3\u5b9a\u6743\u4ea4\u7ed9\u4e86\u6a21\u578b\u3002\u8fd9\u4e00\u4ea4&#xff0c;\u624d\u6709\u4e86 Agent\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u683c\u5f0f\u4e0d\u80fd\u9760&#034;\u6c42&#034;&#xff1f; \u56e0\u4e3a\u7ea6\u675f\u5fc5\u987b\u53d1\u751f\u5728\u6a21\u578b\u65e0\u6cd5\u8fdd\u53cd\u7684\u5c42\u9762\u3002\u63d0\u793a\u8bcd\u662f\u5efa\u8bae&#xff0c;\u89e3\u7801\u7ea6\u675f\u662f\u89c4\u5219&#xff0c;schema \u662f\u5951\u7ea6\u3002\u5de5\u7a0b\u4e0a\u51e1\u662f\u4f9d\u8d56&#034;\u6a21\u578b\u542c\u8bdd&#034;\u7684\u8bbe\u8ba1&#xff0c;\u90fd\u4f1a\u5728\u67d0\u4e00\u5929\u5931\u6548\u2014\u2014\u5dee\u522b\u53ea\u662f\u54ea\u4e00\u5929\u3002<\/p>\n<p>\u65f6\u95f4\u70b9\u4e3a\u5404\u80fd\u529b\u7684\u516c\u5f00\u53d1\u5e03\u65f6\u95f4&#xff0c;\u5382\u5546\u5b9e\u73b0\u7ec6\u8282\u5b58\u5728\u5dee\u5f02\u3002<\/p>\n<hr \/>\n<h3>05 \u00b7 \u62c6\u5f00\u7533\u8bf7\u4e66&#xff1a;\u5b83\u5230\u5e95\u5199\u4e86\u4ec0\u4e48<\/h3>\n<p>\u6a21\u578b\u60f3\u7528\u5de5\u5177\u65f6&#xff0c;\u8f93\u51fa\u7684\u4e0d\u662f\u666e\u901a\u6587\u672c&#xff0c;\u800c\u662f\u4e00\u4e2a\u7ed3\u6784\u5316\u7684 tool_calls \u6570\u7ec4&#xff1a;<\/p>\n<p><span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token string-property property\">&#034;id&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;call_aB3dEf&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;type&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;function&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string-property property\">&#034;name&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;get_weather&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string-property property\">&#034;arguments&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;{\\\\&#034;city\\\\&#034;: \\\\&#034;\u5317\u4eac\\\\&#034;}&#034;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u7533\u8bf7\u4e66\u5b57\u6bb5\u62c6\u89e3<\/p>\n<table>\n<tr>\u5b57\u6bb5\u542b\u4e49\u4f60\u8981\u5c0f\u5fc3\u7684\u5751<\/tr>\n<tbody>\n<tr>\n<td>id<\/td>\n<td>\u8fd9\u6b21\u8c03\u7528\u7684\u552f\u4e00\u7f16\u53f7<\/td>\n<td>\u56de\u586b\u7ed3\u679c\u65f6\u5fc5\u987b\u539f\u6837\u5e26\u56de&#xff0c;\u5426\u5219\u6a21\u578b\u5bf9\u4e0d\u4e0a\u53f7\u2014\u2014\u591a\u5de5\u5177\u5e76\u884c\u65f6\u5c24\u5176\u5bb9\u6613\u9519<\/td>\n<\/tr>\n<tr>\n<td>function.name<\/td>\n<td>\u5b83\u60f3\u8c03\u7684\u5de5\u5177\u540d<\/td>\n<td>\u53ef\u80fd\u662f\u4f60\u6ca1\u5b9a\u4e49\u8fc7\u7684\u540d\u5b57&#xff08;\u5e7b\u89c9\u8c03\u7528&#xff09;&#xff0c;\u5fc5\u987b\u8d70\u515c\u5e95\u5206\u652f<\/td>\n<\/tr>\n<tr>\n<td>function.arguments<\/td>\n<td>\u53c2\u6570<\/td>\n<td>\u662f JSON \u5b57\u7b26\u4e32\u4e0d\u662f\u5bf9\u8c61&#xff0c;\u5fc5\u987b json.loads&#xff1b;\u53ef\u80fd\u7f3a\u5b57\u6bb5\u3001\u7c7b\u578b\u9519\u3001\u503c\u8d8a\u754c<\/td>\n<\/tr>\n<tr>\n<td>&#xff08;\u9690\u542b&#xff09;<\/td>\n<td>\u5b83\u53ef\u80fd\u4e00\u6b21\u8981\u8c03\u591a\u4e2a<\/td>\n<td>tool_calls \u662f\u6570\u7ec4&#xff0c;\u8981\u5faa\u73af\u5904\u7406&#xff1b;\u5e76\u884c\u8c03\u7528\u7684\u987a\u5e8f\u4e0d\u4fdd\u8bc1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6700\u9634\u7684\u662f\u524d\u4e24\u4e2a\u5751&#xff1a;\u4f60\u5f97\u5047\u8bbe\u6a21\u578b\u7ed9\u4f60\u7684\u7533\u8bf7\u4e66\u662f&#034;\u4e0d\u53ef\u4fe1\u8f93\u5165&#034;\u3002 \u5c31\u50cf\u5904\u7406\u7528\u6237\u8868\u5355\u4e00\u6837\u2014\u2014\u4f60\u4e0d\u4f1a\u628a\u7528\u6237 POST \u8fc7\u6765\u7684\u4e1c\u897f\u76f4\u63a5 eval()&#xff0c;\u4e5f\u4e0d\u8be5\u628a\u6a21\u578b\u7ed9\u7684\u53c2\u6570\u76f4\u63a5 ** \u5c55\u5f00\u5c31\u6254\u8fdb\u51fd\u6570\u3002<\/p>\n<hr \/>\n<h3>06 \u00b7 \u6700\u5c0f\u5b9e\u73b0&#xff1a;v0.2&#xff0c;\u4e09\u53ea\u624b\u52a0\u4e00\u5f20\u5206\u53d1\u53f0<\/h3>\n<p>\u7248\u672c diff&#xff1a; v0.1 \u2192 v0.2 \u00b7 34 \u884c \u2192 46 \u884c<\/p>\n<ul>\n<li>\u5de5\u5177\u4ece 1 \u4e2a\u52a0\u5230 3 \u4e2a&#xff08;run_python \/ read_file \/ search_web&#xff09;<\/li>\n<li>\u65b0\u589e DISPATCH \u5206\u53d1\u8868&#xff1a;\u628a\u5de5\u5177\u540d\u6620\u5c04\u5230\u771f\u5b9e\u51fd\u6570<\/li>\n<li>\u65b0\u589e\u672a\u77e5\u5de5\u5177\u515c\u5e95&#xff1a;\u6a21\u578b\u5199\u51fa\u4e0d\u5b58\u5728\u7684\u5de5\u5177\u540d\u65f6&#xff0c;\u62d2\u7edd\u800c\u4e0d\u662f\u5d29\u6e83<\/li>\n<\/ul>\n<p><span class=\"token comment\"># tiny-agent v0.2 \u2014\u2014 \u7ed9\u5b83\u4e09\u53ea\u624b&#xff0c;\u5916\u52a0\u4e00\u5f20&#034;\u7533\u8bf7\u4e66&#034;\u5904\u7406\u53f0<\/span><br \/>\n<span class=\"token keyword\">import<\/span> os<span class=\"token punctuation\">,<\/span> json<span class=\"token punctuation\">,<\/span> subprocess<br \/>\n<span class=\"token keyword\">from<\/span> openai <span class=\"token keyword\">import<\/span> OpenAI<\/p>\n<p>client <span class=\"token operator\">&#061;<\/span> OpenAI<span class=\"token punctuation\">(<\/span>api_key<span class=\"token operator\">&#061;<\/span>os<span class=\"token punctuation\">.<\/span>environ<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;OPENAI_API_KEY&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u2462 \u5de5\u5177&#xff1a;\u4e09\u53ea\u624b&#xff0c;\u6bcf\u53ea\u90fd\u9644\u4e00\u4efd&#034;\u4f7f\u7528\u8bf4\u660e\u4e66&#034;&#xff08;schema&#xff09;<\/span><br \/>\nTOOLS <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;run_python&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u6267\u884c\u4e00\u6bb5 Python \u4ee3\u7801\u5e76\u8fd4\u56de stdout&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;parameters&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;object&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;properties&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;code&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;string&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8981\u6267\u884c\u7684 Python \u4ee3\u7801&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;required&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;code&#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 punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;read_file&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8bfb\u53d6\u672c\u5730\u6587\u672c\u6587\u4ef6\u5185\u5bb9&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;parameters&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;object&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;properties&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;string&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;required&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;path&#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 punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;function&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;search_web&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8054\u7f51\u641c\u7d22\u5e76\u8fd4\u56de\u7ed3\u679c\u6458\u8981&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;parameters&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;object&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;properties&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;query&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;string&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u641c\u7d22\u5173\u952e\u8bcd&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;integer&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;description&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8fd4\u56de\u6761\u6570&#xff0c;1-10&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;required&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;query&#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 punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">run_python<\/span><span class=\"token punctuation\">(<\/span>code<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    r <span class=\"token operator\">&#061;<\/span> subprocess<span class=\"token punctuation\">.<\/span>run<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;python&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;-c&#034;<\/span><span class=\"token punctuation\">,<\/span> code<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> capture_output<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> text<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> timeout<span class=\"token operator\">&#061;<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>r<span class=\"token punctuation\">.<\/span>stdout <span class=\"token keyword\">or<\/span> r<span class=\"token punctuation\">.<\/span>stderr<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">2000<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">read_file<\/span><span class=\"token punctuation\">(<\/span>path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>path<span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">4000<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">search_web<\/span><span class=\"token punctuation\">(<\/span>query<span class=\"token punctuation\">,<\/span> n<span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> json<span class=\"token punctuation\">.<\/span>dumps<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;results&#034;<\/span><span class=\"token punctuation\">:<\/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>query<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u7684\u7b2c <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token operator\">&#043;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6761\u7ed3\u679c&#034;<\/span><\/span> <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><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u2605 \u5173\u952e&#xff1a;\u771f\u6b63\u52a8\u624b\u7684\u662f\u8fd9\u5f20\u8868&#xff0c;\u6a21\u578b\u53ea\u8d1f\u8d23\u5199\u7533\u8bf7\u4e66<\/span><br \/>\nDISPATCH <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;run_python&#034;<\/span><span class=\"token punctuation\">:<\/span> run_python<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;read_file&#034;<\/span><span class=\"token punctuation\">:<\/span> read_file<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;search_web&#034;<\/span><span class=\"token punctuation\">:<\/span> search_web<span class=\"token punctuation\">}<\/span><\/p>\n<p>GOAL <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u770b\u770b\u5f53\u524d\u76ee\u5f55\u4e0b\u6709\u54ea\u4e9b .py \u6587\u4ef6&#xff0c;\u6570\u4e00\u6570\u4e00\u5171\u591a\u5c11\u884c&#034;<\/span><br \/>\nMAX_STEPS <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">8<\/span><br \/>\nmessages <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;user&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;content&#034;<\/span><span class=\"token punctuation\">:<\/span> GOAL<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> step <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>MAX_STEPS<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    resp <span class=\"token operator\">&#061;<\/span> client<span class=\"token punctuation\">.<\/span>chat<span class=\"token punctuation\">.<\/span>completions<span class=\"token punctuation\">.<\/span>create<span class=\"token punctuation\">(<\/span>model<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;gpt-4o-mini&#034;<\/span><span class=\"token punctuation\">,<\/span> messages<span class=\"token operator\">&#061;<\/span>messages<span class=\"token punctuation\">,<\/span> tools<span class=\"token operator\">&#061;<\/span>TOOLS<span class=\"token punctuation\">)<\/span><br \/>\n    msg <span class=\"token operator\">&#061;<\/span> resp<span class=\"token punctuation\">.<\/span>choices<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>message<br \/>\n    messages<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>msg<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> msg<span class=\"token punctuation\">.<\/span>tool_calls<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;[step <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>step<span class=\"token operator\">&#043;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">] \u6700\u7ec8\u56de\u7b54 -&gt; <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>msg<span class=\"token punctuation\">.<\/span>content<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">break<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> c <span class=\"token keyword\">in<\/span> msg<span class=\"token punctuation\">.<\/span>tool_calls<span class=\"token punctuation\">:<\/span><br \/>\n        fn <span class=\"token operator\">&#061;<\/span> DISPATCH<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">)<\/span><br \/>\n        args <span class=\"token operator\">&#061;<\/span> json<span class=\"token punctuation\">.<\/span>loads<span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>arguments<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token comment\"># \u2605 \u6a21\u578b\u53ef\u80fd\u5199\u51fa\u4e00\u5f20&#034;\u4e0d\u5b58\u5728\u5de5\u5177\u7684\u7533\u8bf7\u4e66&#034;&#xff0c;\u5b88\u95e8\u7684\u662f\u4f60\u7684\u4ee3\u7801<\/span><br \/>\n        result <span class=\"token operator\">&#061;<\/span> fn<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> fn <span class=\"token keyword\">else<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[\u62d2\u7edd] \u6ca1\u6709\u540d\u4e3a <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u7684\u5de5\u5177&#034;<\/span><\/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;[step <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>step<span class=\"token operator\">&#043;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">] <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">(<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>args<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">) -&gt; <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">100]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        messages<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;tool&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;tool_call_id&#034;<\/span><span class=\"token punctuation\">:<\/span> c<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">id<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;content&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u6574\u6bb5\u4ee3\u7801\u771f\u6b63\u4f53\u73b0&#034;\u7533\u8bf7\u4e66&#034;\u673a\u5236\u7684&#xff0c;\u662f\u8fd9\u4e24\u884c&#xff1a;<\/p>\n<p>fn <span class=\"token operator\">&#061;<\/span> DISPATCH<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">)<\/span>                                        <span class=\"token comment\"># \u67e5\u8868&#xff1a;\u5b83\u60f3\u8c03\u8c01&#xff1f;\u771f\u6709\u8fd9\u4e2a\u4eba\u5417&#xff1f;<\/span><br \/>\nresult <span class=\"token operator\">&#061;<\/span> fn<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> fn <span class=\"token keyword\">else<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[\u62d2\u7edd] \u6ca1\u6709\u540d\u4e3a <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>c<span class=\"token punctuation\">.<\/span>function<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u7684\u5de5\u5177&#034;<\/span><\/span>   <span class=\"token comment\"># \u6709\u5c31\u5e72&#xff0c;\u6ca1\u6709\u5c31\u62d2<\/span><\/p>\n<p>\u6a21\u578b\u8f93\u51fa\u7684\u5de5\u5177\u540d&#xff0c;\u53ea\u662f\u4e00\u6839\u7528\u6765\u67e5\u8868\u7684\u5b57\u7b26\u4e32\u3002 \u4f60\u5728 DISPATCH \u91cc\u653e\u4ec0\u4e48&#xff0c;\u5b83\u624d\u6709\u4ec0\u4e48&#xff1b;\u5b83\u5199\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u540d\u5b57&#xff0c;\u4f60\u80fd\u62e6\u5f97\u4f4f\u3002\u8fd9\u5c31\u662f&#034;\u7533\u8bf7\u4e66&#034;\u4e09\u4e2a\u5b57\u7684\u5168\u90e8\u542b\u4e49\u3002<\/p>\n<p>\u987a\u5e26\u8bf4\u4e00\u53e5&#xff1a;run_python \u8fd9\u4e2a\u5de5\u5177\u7b49\u4e8e\u7ed9\u6a21\u578b\u5f00\u4e86\u4e00\u4e2a shell\u3002\u5982\u679c\u4f60\u771f\u628a\u5b83\u7528\u5728\u751f\u4ea7\u73af\u5883&#xff0c;\u5fc5\u987b\u52a0\u6c99\u7bb1&#xff08;\u8d85\u65f6\u3001\u5185\u5b58\u9650\u5236\u3001\u7981\u7528\u7f51\u7edc\u3001\u53ea\u8bfb\u6302\u8f7d&#xff09;\u3002\u8fd9\u662f P8 \u7684\u91cd\u70b9\u3002<\/p>\n<hr \/>\n<h3>07 \u00b7 \u4e00\u4e2a\u9690\u60a3&#xff1a;\u5de5\u5177\u8d8a\u591a&#xff0c;\u6bcf\u4e00\u8f6e\u8d8a\u8d35<\/h3>\n<p>\u73b0\u5728\u6709\u4e86\u7533\u8bf7\u4e66\u673a\u5236&#xff0c;\u4e00\u4e2a\u81ea\u7136\u60f3\u6cd5\u662f&#xff1a;\u90a3\u6211\u591a\u7ed9\u70b9\u5de5\u5177\u4e0d\u5c31\u597d\u4e86&#xff1f;<\/p>\n<p>\u6162\u7740\u3002\u5de5\u5177\u6e05\u5355&#xff08;schema&#xff09;\u662f\u8981\u585e\u8fdb\u6bcf\u4e00\u8f6e\u8bf7\u6c42\u91cc\u7684\u2014\u2014\u5b83\u4e0d\u662f\u53d1\u4e00\u6b21\u5c31\u5b8c\u4e86&#xff0c;\u800c\u662f\u5faa\u73af\u8dd1\u591a\u5c11\u8f6e&#xff0c;\u5c31\u91cd\u590d\u53d1\u9001\u591a\u5c11\u904d\u3002<\/p>\n<p>\u6309\u4e24\u7c7b\u771f\u5b9e schema \u5b9e\u6d4b&#xff08;\u811a\u672c\u53ef\u590d\u73b0&#xff09;&#xff1a;<\/p>\n<table>\n<tr>\u5de5\u5177\u6570\u7cbe\u7b80\u578b \/ \u8f6e\u8be6\u7ec6\u578b \/ \u8f6e\u8be6\u7ec6\u578b \u00d7 20 \u8f6e\u7d2f\u79ef<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>74<\/td>\n<td>233<\/td>\n<td>4,660<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>370<\/td>\n<td>1,165<\/td>\n<td>23,300<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>740<\/td>\n<td>2,330<\/td>\n<td>46,600<\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td>1,480<\/td>\n<td>4,660<\/td>\n<td>93,200<\/td>\n<\/tr>\n<tr>\n<td>30<\/td>\n<td>2,220<\/td>\n<td>6,990<\/td>\n<td>139,800<\/td>\n<\/tr>\n<tr>\n<td>50<\/td>\n<td>3,700<\/td>\n<td>11,650<\/td>\n<td>233,000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4e24\u6761\u7ebf\u90fd\u968f\u5de5\u5177\u6570\u7ebf\u6027\u589e\u957f&#xff0c;\u4f46\u8be6\u7ec6\u578b\u7684\u659c\u7387\u662f\u7cbe\u7b80\u578b\u7684 3 \u500d\u591a\u3002\u66f4\u5173\u952e\u7684\u662f&#xff1a;\u8fd9\u662f\u6bcf\u4e00\u8f6e\u90fd\u8981\u4ed8\u7684\u6210\u672c\u2014\u2014\u8dd1 20 \u8f6e&#xff0c;\u5c31\u8981\u4ed8 20 \u6b21\u3002<\/p>\n<p>50 \u4e2a\u8be6\u7ec6\u578b\u5de5\u5177&#xff0c;\u8dd1 20 \u8f6e\u5faa\u73af &#061; 233,000 token\u3002 \u8fd9\u4e2a\u6570\u5b57\u5df2\u7ecf\u8d85\u8fc7 128K \u4e0a\u4e0b\u6587\u7a97\u53e3\u7684\u4e00\u534a&#xff0c;\u800c\u8fd9 23 \u4e07 token \u91cc\u4e00\u4e2a\u5b57\u90fd\u4e0d\u662f\u4efb\u52a1\u5185\u5bb9&#xff0c;\u5168\u662f\u91cd\u590d\u53d1\u9001\u7684\u5de5\u5177\u8bf4\u660e\u4e66\u3002\u8fd9\u5c31\u662f\u540e\u6765&#034;\u5de5\u5177\u592a\u591a\u5bfc\u81f4\u8ba4\u77e5\u8fc7\u8f7d&#034;\u7684\u91cf\u5316\u5f62\u6001\u2014\u2014\u4e5f\u662f P5&#xff08;\u62c6\u667a\u80fd\u4f53&#xff09;\u548c P6&#xff08;MCP \u5ef6\u8fdf\u7ed1\u5b9a&#xff09;\u8981\u89e3\u51b3\u7684\u6838\u5fc3\u95ee\u9898\u3002<\/p>\n<p>\u6240\u4ee5\u5de5\u5177\u4e0d\u662f\u8d8a\u591a\u8d8a\u597d&#xff0c;\u8fd9\u91cc\u6709\u6761\u7ecf\u9a8c\u7ebf&#xff1a;\u5355\u4e2a Agent \u6302\u8f7d 5-15 \u4e2a\u5de5\u5177\u6bd4\u8f83\u5065\u5eb7&#xff0c;\u8d85\u8fc7 20 \u4e2a\u5c31\u8981\u8003\u8651\u62c6\u4e86\u3002<\/p>\n<hr \/>\n<h3>08 \u00b7 \u73b0\u5b9e\u5bf9\u7167&#xff1a;\u9ad8\u7ba1\u4e0e\u52a9\u7406<\/h3>\n<p>\u7533\u8bf7\u4e66\u673a\u5236\u5728\u73b0\u5b9e\u91cc\u6709\u6781\u5176\u7cbe\u786e\u7684\u5bf9\u5e94&#xff1a;\u4e00\u4e2a\u53ea\u4f1a\u7b7e\u5b57\u7684\u9ad8\u7ba1&#xff0c;\u548c\u4e00\u4e2a\u8d1f\u8d23\u8dd1\u817f\u7684\u52a9\u7406\u3002<\/p>\n<table>\n<tr>\u4ee3\u7801\u91cc\u529e\u516c\u5ba4\u91cc\u4e3a\u4ec0\u4e48\u8fd9\u4e48\u8bbe\u8ba1<\/tr>\n<tbody>\n<tr>\n<td>\u5de5\u5177 schema<\/td>\n<td>\u52a9\u7406\u9012\u4e0a\u6765\u7684\u6807\u51c6\u7533\u8bf7\u5355\u6a21\u677f<\/td>\n<td>\u683c\u5f0f\u56fa\u5b9a&#xff0c;\u624d\u77e5\u9053\u8be5\u586b\u4ec0\u4e48<\/td>\n<\/tr>\n<tr>\n<td>tool_call<\/td>\n<td>\u9ad8\u7ba1\u5728\u7533\u8bf7\u5355\u4e0a\u7b7e\u5b57\u6279\u51c6<\/td>\n<td>\u4ed6\u6279\u7684\u662f&#034;\u53bb\u529e\u8fd9\u4ef6\u4e8b&#034;&#xff0c;\u4e0d\u662f\u81ea\u5df1\u53bb\u529e<\/td>\n<\/tr>\n<tr>\n<td>DISPATCH \u8868<\/td>\n<td>\u52a9\u7406\u62ff\u7740\u6279\u6761\u53bb\u8dd1\u817f<\/td>\n<td>\u771f\u6b63\u6253\u8f66\u3001\u8ba2\u9152\u5e97\u3001\u53d1\u5feb\u9012\u7684\u662f\u52a9\u7406<\/td>\n<\/tr>\n<tr>\n<td>\u7ed3\u679c\u56de\u586b<\/td>\n<td>\u52a9\u7406\u56de\u6765\u6c47\u62a5\u7ed3\u679c<\/td>\n<td>\u9ad8\u7ba1\u770b\u5230\u7ed3\u679c&#xff0c;\u624d\u80fd\u51b3\u5b9a\u4e0b\u4e00\u6b65<\/td>\n<\/tr>\n<tr>\n<td>\u672a\u77e5\u5de5\u5177\u88ab\u62d2<\/td>\n<td>\u7533\u8bf7\u5355\u4e0a\u5199\u4e86\u4e2a\u516c\u53f8\u4e0d\u5b58\u5728\u7684\u90e8\u95e8<\/td>\n<td>\u884c\u653f\u76f4\u63a5\u6253\u56de&#xff0c;\u800c\u4e0d\u662f\u786c\u7740\u5934\u76ae\u53bb\u627e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8fd9\u4e2a\u7c7b\u6bd4\u80fd\u89e3\u91ca\u4e00\u4e2a\u8bbe\u8ba1\u56f0\u60d1&#xff1a;\u4e3a\u4ec0\u4e48\u4e0d\u8ba9\u6a21\u578b\u76f4\u63a5\u6267\u884c&#xff1f;<\/p>\n<p>\u56e0\u4e3a\u9ad8\u7ba1\u81ea\u5df1\u53bb\u8dd1\u817f&#xff0c;\u516c\u53f8\u5c31\u4e71\u4e86\u3002\u8ba9\u7b7e\u5b57\u6743\u548c\u6267\u884c\u6743\u5206\u79bb&#xff0c;\u4f60\u624d\u80fd&#xff1a;<\/p>\n<ul>\n<li>\u5ba1\u8ba1 \u2014\u2014 \u6240\u6709\u7533\u8bf7\u5355\u90fd\u7559\u6863&#xff0c;\u8c01\u6279\u7684\u3001\u6279\u4e86\u4ec0\u4e48\u3001\u82b1\u4e86\u591a\u5c11<\/li>\n<li>\u62e6\u622a \u2014\u2014 \u7533\u8bf7\u5355\u4e0a\u5199\u4e86&#034;\u8f6c 100 \u4e07&#034;&#xff0c;\u884c\u653f\u53ef\u4ee5\u8bf4\u8fd9\u4e2a\u8981\u4e8c\u7ea7\u5ba1\u6279<\/li>\n<li>\u66ff\u6362 \u2014\u2014 \u6362\u4e2a\u52a9\u7406&#xff08;\u6362\u4e2a\u5b9e\u73b0&#xff09;&#xff0c;\u9ad8\u7ba1\u7684\u7b7e\u5b57\u65b9\u5f0f\u4e0d\u7528\u53d8<\/li>\n<li>\u9650\u6743 \u2014\u2014 \u52a9\u7406\u6709\u95e8\u7981\u5361&#xff0c;\u9ad8\u7ba1\u6ca1\u6709&#xff0c;\u4e5f\u4e0d\u9700\u8981<\/li>\n<\/ul>\n<p>\u8fd9\u56db\u6761\u5728 Agent \u5de5\u7a0b\u91cc\u90fd\u6709\u5bf9\u5e94\u7269&#xff1a;\u65e5\u5fd7\u3001\u9ad8\u5371\u64cd\u4f5c\u4eba\u5de5\u5ba1\u6279\u3001\u5de5\u5177\u5b9e\u73b0\u70ed\u66ff\u6362\u3001\u6700\u5c0f\u6743\u9650\u6c99\u7bb1\u3002\u5b83\u4eec\u5168\u90fd\u5efa\u7acb\u5728&#034;\u6a21\u578b\u4e0d\u6267\u884c&#034;\u8fd9\u4e2a\u524d\u63d0\u4e0a\u3002<\/p>\n<p>\u53cd\u8fc7\u6765\u8bf4&#xff0c;\u5982\u679c\u4f60\u770b\u5230\u67d0\u4e2a\u65b9\u6848\u5ba3\u79f0&#034;\u8ba9\u6a21\u578b\u76f4\u63a5\u64cd\u4f5c\u6570\u636e\u5e93&#034;\u2014\u2014\u4e0d\u7528\u770b\u4e86&#xff0c;\u5b83\u653e\u5f03\u4e86\u4e0a\u9762\u5168\u90e8\u56db\u6761\u3002<\/p>\n<hr \/>\n<h3>09 \u00b7 \u4e0b\u4e00\u7bc7&#xff1a;\u5b83\u6709\u624b\u4e86&#xff0c;\u4f46\u53ea\u4f1a\u7528\u4e00\u6b21<\/h3>\n<p>v0.2 \u91cc\u7684 MAX_STEPS &#061; 8 \u5df2\u7ecf\u6084\u6084\u57cb\u4e86\u4e2a\u5faa\u73af\u3002\u4f46\u8bf7\u6ce8\u610f\u4e00\u4e2a\u5c34\u5c2c\u7684\u4e8b\u5b9e&#xff1a;\u6a21\u578b\u6bcf\u4e00\u8f6e\u53ea\u80fd\u770b\u5230&#034;\u4e0a\u4e00\u8f6e\u7684\u7533\u8bf7\u4e66 &#043; \u4e0a\u4e00\u8f6e\u7684\u7ed3\u679c&#034;&#xff0c;\u5b83\u5e76\u6ca1\u6709\u5728&#034;\u63a8\u8fdb&#034;\u4e00\u4e2a\u4efb\u52a1\u3002<\/p>\n<p>\u4e0b\u4e00\u7bc7&#xff0c;\u6211\u4eec\u8ba9\u8fd9\u4e2a\u5faa\u73af\u771f\u6b63\u8f6c\u8d77\u6765&#xff1a;P3\u300awhile True \u7684\u5a01\u529b\u4e0e\u6050\u6016\u300b\u3002\u4f60\u4f1a\u770b\u5230 ReAct \u95ed\u73af\u600e\u4e48\u628a\u4e00\u95ee\u4e00\u7b54\u53d8\u6210\u6301\u7eed\u884c\u52a8&#xff0c;\u4ee5\u53ca\u2014\u2014\u4e3a\u4ec0\u4e48 2023 \u5e74\u90a3\u6279 Agent \u4f1a\u70e7\u6389\u51e0\u767e\u7f8e\u5143\u3001\u8dd1\u51e0\u4e2a\u5c0f\u65f6&#xff0c;\u6700\u540e\u4ea4\u51fa\u4e00\u4efd\u7a7a\u767d\u3002\u540c\u65f6\u6211\u4eec\u4f1a\u7b97\u51fa\u4e00\u6761\u5f88\u5c11\u6709\u4eba\u753b\u51fa\u6765\u7684\u66f2\u7ebf&#xff1a;\u6b65\u6570\u6da8 3 \u500d&#xff0c;token \u6da8 9 \u500d\u3002<\/p>\n<p>\u601d\u8003\u9898&#xff1a;\u4f60\u7684 Agent \u73b0\u5728\u6302\u4e86\u51e0\u4e2a\u5de5\u5177&#xff1f;\u5982\u679c\u628a\u5de5\u5177\u63cf\u8ff0\u5199\u5f97\u518d\u8be6\u7ec6\u4e00\u500d&#xff08;\u4e3a\u4e86\u8ba9\u5b83\u7528\u5f97\u66f4\u51c6&#xff09;&#xff0c;\u4f60\u7684\u6bcf\u8f6e\u6210\u672c\u4f1a\u6da8\u591a\u5c11&#xff1f;\u8fd9\u7b14\u8d26\u503c\u5f97\u5417&#xff1f;<\/p>\n<h3>\u6b22\u8fce\u5728\u8bc4\u8bba\u533a\u804a\u804a\u3002<\/h3>\n<h3>\u7cfb\u5217\u5bfc\u822a<\/h3>\n<table>\n<tr>\u7f16\u53f7\u7bc7\u76ee\u72b6\u6001<\/tr>\n<tbody>\n<tr>\n<td>P1<\/td>\n<td>Agent\u6f14\u5316\u53f2&#xff08;\u4e00&#xff09;\u5265\u6389\u8425\u9500\u8bdd\u672f\u540e&#xff0c;\u667a\u80fd\u4f53\u53ea\u5269 34 \u884c\u4ee3\u7801<\/td>\n<td>\u5df2\u53d1\u5e03<\/td>\n<\/tr>\n<tr>\n<td>P2<\/td>\n<td>\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177&#xff1a;Function Calling \u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66<\/td>\n<td>\u672c\u7bc7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<p>\u672c\u7bc7\u8d44\u4ea7<\/p>\n<ul>\n<li>tiny-agent-v0.2.py \u2014\u2014 46 \u884c&#xff0c;\u4e09\u5de5\u5177 &#043; \u5206\u53d1\u53f0&#xff0c;\u53ef\u76f4\u63a5\u6539\u9020\u81ea\u7528<\/li>\n<li>calc_metrics.py \u2014\u2014 \u672c\u7bc7 token \u6d4b\u7b97\u811a\u672c&#xff0c;\u53c2\u6570\u53ef\u6539&#xff0c;\u7ed3\u679c\u53ef\u590d\u73b0<\/li>\n<li>\u6d4b\u7b97\u53e3\u5f84&#xff1a;JSON \u7d27\u51d1\u5e8f\u5217\u5316\u540e\u6309 4 \u82f1\u6587\u5b57\u7b26 \u2248 1 token<\/li>\n<\/ul>\n<hr \/>\n<p>\u672c\u6587\u4e3a\u76d8\u5b50\u5de5\u5177\u7ad9\u751f\u6001\u539f\u521b\u6280\u672f\u4e13\u9898\u7cfb\u5217&#xff0c;\u8f6c\u8f7d\u8bf7\u6ce8\u660e\u51fa\u5904\u3002 <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261024114032-6adc99300d2dc.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>\u914d\u5957\u4ee3\u7801tiny-agent-v0.2.py&#xff08;36 \u884c&#xff09;,\u53ef\u4ee5\u5728\u8d44\u6599\u4e0b\u8f7d\u5904\u76f4\u63a5\u4e0b\u8f7d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7bc7\u662f\u300a\u667a\u80fd\u4f53\u6f14\u5316\u53f2\u300b\u7cfb\u5217\u7b2c 2 \u7bc7 \u7cfb\u5217\u4e3b\u7ebf\u4e0d\u662f\\&#8221;\u67d0\u5e74\u51fa\u73b0\u4e86\u67d0\u6280\u672f\\&#8221;&#xff0c;\u800c\u662f\\&#8221;\u56e0\u4e3a\u4e0a\u4e00\u6b65\u5d29\u4e86&#xff0c;\u6240\u4ee5\u4e0b\u4e00\u6b65\u624d\u51fa\u73b0\\&#8221;\u3002 \u5168\u7cfb\u5217\u5171\u7528\u4e00\u4e2a\u4ece 34 \u884c\u957f\u5230 600 \u884c\u7684 tiny-agent&#xff0c;\u672c\u7bc7\u662f\u5b83\u7684 v0.2\u3002 \u600e\u4e48\u8bfb\u8fd9\u7bc7<br \/>\n&#x1f6b6; 12 \u5206\u949f\u7248&#xff1a;\u53ea\u770b\u300c\u5d29\u574f\u73b0\u573a\u300d\u300c\u4e00\u53e5\u8bdd\u539f\u7406\u300d\u548c\u6cf3\u9053\u56fe&#xff0c;\u641e\u6e05\u7533\u8bf7\u4e66\u673a\u5236\u3002&#x1f3c3; 35 \u5206\u949f\u7248&#xff08;\u63a8\u8350&#xff09;&#xff1a;\u52a0\u8bfb\u4e09\u8303\u5f0f\u5bf9\u7167<\/p>\n","protected":false},"author":2,"featured_media":117429,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[868,74,50,4735,2983],"topic":[],"class_list":["post-117431","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-868","tag-agent","tag-50","tag-4735","tag-2983"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \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\/117431.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u672c\u7bc7\u662f\u300a\u667a\u80fd\u4f53\u6f14\u5316\u53f2\u300b\u7cfb\u5217\u7b2c 2 \u7bc7 \u7cfb\u5217\u4e3b\u7ebf\u4e0d\u662f&quot;\u67d0\u5e74\u51fa\u73b0\u4e86\u67d0\u6280\u672f&quot;&#xff0c;\u800c\u662f&quot;\u56e0\u4e3a\u4e0a\u4e00\u6b65\u5d29\u4e86&#xff0c;\u6240\u4ee5\u4e0b\u4e00\u6b65\u624d\u51fa\u73b0&quot;\u3002 \u5168\u7cfb\u5217\u5171\u7528\u4e00\u4e2a\u4ece 34 \u884c\u957f\u5230 600 \u884c\u7684 tiny-agent&#xff0c;\u672c\u7bc7\u662f\u5b83\u7684 v0.2\u3002 \u600e\u4e48\u8bfb\u8fd9\u7bc7 &#x1f6b6; 12 \u5206\u949f\u7248&#xff1a;\u53ea\u770b\u300c\u5d29\u574f\u73b0\u573a\u300d\u300c\u4e00\u53e5\u8bdd\u539f\u7406\u300d\u548c\u6cf3\u9053\u56fe&#xff0c;\u641e\u6e05\u7533\u8bf7\u4e66\u673a\u5236\u3002&#x1f3c3; 35 \u5206\u949f\u7248&#xff08;\u63a8\u8350&#xff09;&#xff1a;\u52a0\u8bfb\u4e09\u8303\u5f0f\u5bf9\u7167\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/117431.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-24T11:40:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261024114031-6adc992fdef9e.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=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/117431.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/117431.html\",\"name\":\"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-24T11:40:33+00:00\",\"dateModified\":\"2026-10-24T11:40:33+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/117431.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/117431.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/117431.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66\"}]},{\"@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\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \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\/117431.html","og_locale":"zh_CN","og_type":"article","og_title":"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u672c\u7bc7\u662f\u300a\u667a\u80fd\u4f53\u6f14\u5316\u53f2\u300b\u7cfb\u5217\u7b2c 2 \u7bc7 \u7cfb\u5217\u4e3b\u7ebf\u4e0d\u662f\"\u67d0\u5e74\u51fa\u73b0\u4e86\u67d0\u6280\u672f\"&#xff0c;\u800c\u662f\"\u56e0\u4e3a\u4e0a\u4e00\u6b65\u5d29\u4e86&#xff0c;\u6240\u4ee5\u4e0b\u4e00\u6b65\u624d\u51fa\u73b0\"\u3002 \u5168\u7cfb\u5217\u5171\u7528\u4e00\u4e2a\u4ece 34 \u884c\u957f\u5230 600 \u884c\u7684 tiny-agent&#xff0c;\u672c\u7bc7\u662f\u5b83\u7684 v0.2\u3002 \u600e\u4e48\u8bfb\u8fd9\u7bc7 &#x1f6b6; 12 \u5206\u949f\u7248&#xff1a;\u53ea\u770b\u300c\u5d29\u574f\u73b0\u573a\u300d\u300c\u4e00\u53e5\u8bdd\u539f\u7406\u300d\u548c\u6cf3\u9053\u56fe&#xff0c;\u641e\u6e05\u7533\u8bf7\u4e66\u673a\u5236\u3002&#x1f3c3; 35 \u5206\u949f\u7248&#xff08;\u63a8\u8350&#xff09;&#xff1a;\u52a0\u8bfb\u4e09\u8303\u5f0f\u5bf9\u7167","og_url":"https:\/\/www.wsisp.com\/helps\/117431.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-24T11:40:33+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261024114031-6adc992fdef9e.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/117431.html","url":"https:\/\/www.wsisp.com\/helps\/117431.html","name":"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-24T11:40:33+00:00","dateModified":"2026-10-24T11:40:33+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/117431.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/117431.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/117431.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Agent\u6f14\u5316\u53f2\uff08\u4e8c\uff09\uff1a\u6a21\u578b\u4ece\u6ca1\u78b0\u8fc7\u4f60\u7684\u5de5\u5177\uff0cFunction Calling\u53ea\u662f\u4e00\u4efd\u7533\u8bf7\u4e66"}]},{"@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\/117431","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=117431"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/117431\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/117429"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=117431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=117431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=117431"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=117431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}