{"id":3847,"date":"2026-08-19T11:33:42","date_gmt":"2026-08-19T03:33:42","guid":{"rendered":"https:\/\/ai.zhousir.top\/?p=3847"},"modified":"2026-08-19T11:33:42","modified_gmt":"2026-08-19T03:33:42","slug":"langchain%e6%a1%86%e6%9e%b6%e4%b9%8btools%ef%bc%9a%e7%bb%99-agent-%e8%a3%85%e4%b8%8a%e6%89%8b%e8%84%9a","status":"publish","type":"post","link":"https:\/\/ai.zhousir.top\/?p=3847","title":{"rendered":"LangChain\u6846\u67b6\u4e4bTools\uff1a\u7ed9 Agent \u88c5\u4e0a\u624b\u811a"},"content":{"rendered":"<section id=\"wenyan\" style=\"font-family: system-ui, 'Apple Color Emoji', 'Segoe UI', 'Segoe UI Symbol', 'Noto Sans', Roboto, sans-serif; line-height: 1.75; font-size: 16px; color: #000000; caret-color: #000000;\" data-provider=\"WenYan\">\n<blockquote style=\"margin: 20px 0px; display: block; font-size: 0.9em; overflow: auto; border-left: 3px solid #ef7060; color: #6a737d; padding: 10px 10px 10px 20px; background: #fff9f9;\">\n<p style=\"margin: 1em 0px;\">\u4e0a\u7bc7\u4f60\u628a Prompt \u6a21\u677f\u3001LCEL \u548c\u7ed3\u6784\u5316\u8f93\u51fa\u8dd1\u901a\u4e86\u2014\u2014\u5927\u8111\u4f1a\u8bf4\u8bdd\u3001\u4f1a\u6309\u5b57\u6bb5\u5410\u7ed3\u679c\u3002\u4f46\u65c5\u6e38\u52a9\u624b\u8fd8\u8981\u67e5\u5929\u6c14\u3001\u7b97\u884c\u7a0b\u3001\u641c\u8d44\u6599\u3002\u8fd9\u7bc7\u7cfb\u7edf\u8bb2 <strong>Tools<\/strong>\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">@tool<\/code> \u600e\u4e48\u5b9a\u4e49\uff0c\u4e00\u8f6e\u8c03\u7528\u4e0e\u591a\u6b65\u5faa\u73af\u6709\u4f55\u5dee\u522b\uff0c\u591a\u5de5\u5177\u5982\u4f55\u5206\u5305\u5de5\u7a0b\u5316\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u5c0f\u660e\u7684\u5de5\u5177\u5168\u5806\u5728\u4e00\u4e2a\u6587\u4ef6\u91cc<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u5c0f\u660e\u8ddf\u7740\u5feb\u901f\u5165\u95e8\u7bc7\u5199\u4e86 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">get_weather<\/code> \u548c <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">add<\/code>\uff0c\u540c\u4e8b\u53c8\u8981\u300c\u641c\u4e00\u4e0b\u4ec0\u4e48\u662f LCEL\u300d\u3002\u4ed6\u7ee7\u7eed\u5f80\u540c\u4e00\u4e2a <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools.py<\/code> \u91cc\u585e\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">get_weather<\/span>(<span class=\"hljs-params\">...<\/span>):\u00a0...\n\n<span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">add<\/span>(<span class=\"hljs-params\">...<\/span>):\u00a0...\n\n<span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">mock_search<\/span>(<span class=\"hljs-params\">...<\/span>):\u00a0...\n\n<span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">book_ticket<\/span>(<span class=\"hljs-params\">...<\/span>):\u00a0...\u00a0\u00a0\u00a0<span class=\"hljs-comment\" style=\"color: #657b83;\">#\u00a0\u8d8a\u6765\u8d8a\u591a<\/span>\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u6587\u4ef6\u8fc7\u4e09\u767e\u884c\uff0csystem_prompt \u5199\u6210\u300c\u5929\u6c14\u7528 A\uff0c\u7b97\u672f\u7528 B\uff0c\u641c\u7d22\u7528 C\u2026\u2026\u300d\u4e00\u957f\u4e32\u3002\u6539\u641c\u7d22\u903b\u8f91\u65f6\u8fd8\u603b\u8bef\u4f24\u5929\u6c14\u3002\u4e00\u8f6e\u8c03\u7528\u9047\u5230\u300c\u5148\u67e5\u5929\u6c14\u518d\u7b97\u6570\u300d\u53c8\u4e0d\u591f\u7528\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u5c0f\u660e\u53bb\u627e\u8001\u5f20\uff1a&#8221;\u624b\u811a\u6211\u4f1a\u88c5\uff0c\u4f46\u600e\u4e48\u957f\u6210\u4e00\u53ea\u624b\u3001\u518d\u957f\u6210\u5de5\u5177\u7bb1\uff1f&#8221;<\/p>\n<p style=\"margin: 1em 0px;\">\u8001\u5f20\u8bf4\uff1a&#8221;\u4e09\u5c42\u770b\uff1a<\/p>\n<ol style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: decimal;\">\n<li>\n<section><strong>\u5355\u5de5\u5177\u534f\u8bae<\/strong> \u2014\u2014 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">@tool<\/code> + schema<\/section>\n<\/li>\n<li>\n<section><strong>\u591a\u6b65\u5faa\u73af<\/strong> \u2014\u2014 \u624b\u5199 loop \u6216 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">create_agent<\/code><\/section>\n<\/li>\n<li>\n<section><strong>\u5206\u5305<\/strong> \u2014\u2014 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools\/<\/code> \u76ee\u5f55 + <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">TOOLS<\/code> \u5217\u8868&#8221;<\/section>\n<\/li>\n<\/ol>\n<hr \/>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4ec0\u4e48\u662f Tools\uff08Agent \u7684\u624b\u811a\uff09<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u8001\u5f20\u5728\u767d\u677f\u4e0a\u5199\u5bfc\u56fe\u539f\u8bdd\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\u5b8c\u6574\u00a0Agent\u00a0\u81f3\u5c11\u4e24\u4ef6\u5957\uff1a\n\u00a0\u00a0\u6a21\u578b\u00a0=\u00a0\u5927\u8111\u00a0\u2192\u00a0\u63a8\u7406\u3001\u89c4\u5212\n\u00a0\u00a0\u5de5\u5177\u00a0=\u00a0\u624b\u811a\u00a0\u2192\u00a0\u6267\u884c\u3001\u4e0e\u5916\u754c\u4ea4\u4e92\n\n@tool\u00a0\u4ea4\u7ed9\u6a21\u578b\u7684\u4e09\u4ef6\u4e8b\uff1a\n\u00a0\u00a0\u540d\u79f0\u00a0=\u00a0\u51fd\u6570\u540d\n\u00a0\u00a0\u8f93\u5165\u00a0=\u00a0\u51fd\u6570\u5165\u53c2\n\u00a0\u00a0\u4f5c\u7528\u00a0=\u00a0\u51fd\u6570\u6ce8\u91ca\uff08docstring\uff09\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">&#8220;\u8c03\u7528\u65b9\u5f0f\u8fd1\u4f3c\u666e\u901a\u51fd\u6570\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">get_weather.invoke({\\\"city\\\": \\\"\u676d\u5dde\\\"})<\/code>\u3002<br \/>\nLangChain \u8fd8\u6709\u4e0d\u5c11<strong>\u9884\u5b9a\u4e49\u5916\u90e8\u5de5\u5177<\/strong>\uff0c\u5b98\u7f51\u96c6\u6210\u5217\u8868\u53ef\u6309\u9700\u63a5\uff1b\u672c\u8bfe\u5148\u628a\u672c\u5730 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">@tool<\/code> \u4e0e\u5206\u5305\u5403\u900f\u3002&#8221;<\/p>\n<table style=\"border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; text-align: left; overflow: auto; display: table; overflow-wrap: break-word; word-break: break-all; height: 163px;\" width=\"679\">\n<thead>\n<tr>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u9636\u6bb5<\/th>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u4f60\u5f97\u5230\u4ec0\u4e48<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u5b9a\u4e49 + \u4e00\u8f6e<\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u770b\u6e05 bind_tools \u2192 tool_calls \u2192 ToolMessage<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u591a\u6b65 agent-loop<\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u591a\u5de5\u5177\u76f4\u5230\u65e0 tool_calls\uff1b\u6216 create_agent<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">multi-tools \u5206\u5305<\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code>tools\/*.py<\/code> + \u7edf\u4e00 <code>TOOLS<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4ee3\u7801\u62c6\u89e3\uff1a\u4ece @tool \u5230\u5de5\u5177\u7bb1<\/span><\/h2>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">1. \u5b9a\u4e49\u5de5\u5177\uff1a\u540d\u79f0\u3001\u5165\u53c2\u3001\u6ce8\u91ca<\/h3>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools.py<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">from<\/span>\u00a0langchain.tools\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">import<\/span>\u00a0tool\n\n\n<span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">get_weather<\/span>(<span class=\"hljs-params\">city:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span><\/span>)\u00a0-&gt;\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>:\n\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"\"\u67e5\u8be2\u57ce\u5e02\u5929\u6c14\uff08\u6a21\u62df\u6570\u636e\uff09\u3002\"\"\"<\/span>\n\u00a0\u00a0data\u00a0=\u00a0{\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u5317\u4eac\"<\/span>:\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u6674\uff0c15\u00b0C\uff0c\u4e1c\u98ce3\u7ea7\"<\/span>,\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u4e0a\u6d77\"<\/span>:\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u591a\u4e91\uff0c18\u00b0C\uff0c\u5357\u98ce2\u7ea7\"<\/span>,\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u676d\u5dde\"<\/span>:\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u5c0f\u96e8\uff0c17\u00b0C\uff0c\u4e1c\u5317\u98ce2\u7ea7\"<\/span>,\n\u00a0\u00a0}\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0data.get(city,\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">f\"<span class=\"hljs-subst\" style=\"color: #93a1a1;\">{city}<\/span>\uff1a\u6674\uff0c20\u00b0C\uff08\u6a21\u62df\uff09\"<\/span>)\n\n\nTOOLS\u00a0=\u00a0[get_weather]\nTOOL_MAP\u00a0=\u00a0{t.name:\u00a0t\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0t\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0TOOLS}\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">main.py<\/code> \u9884\u89c8 schema\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-built_in\" style=\"color: #2aa198;\">print<\/span>(get_weather.name,\u00a0get_weather.description)\n<span class=\"hljs-built_in\" style=\"color: #2aa198;\">print<\/span>(get_weather.args)\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">&#8220;\u6a21\u578b\u770b\u89c1\u7684\u4e0d\u662f\u4f60\u7684 Python \u6e90\u7801\u7ec6\u8282\uff0c\u800c\u662f\u8fd9\u5957 schema\u3002\u6ce8\u91ca\u5199\u7cca\uff0c\u5b83\u5c31\u9009\u7cca\u3002&#8221;<\/p>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">2. \u4e00\u8f6e\u5de5\u5177\u8c03\u7528\uff08\u770b\u6e05\u534f\u8bae\uff09<\/h3>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">agent.py<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">run_one_tool_round<\/span>(<span class=\"hljs-params\">question:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span><\/span>)\u00a0-&gt;\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>:\n\u00a0\u00a0model\u00a0=\u00a0get_chat_model(temperature=<span class=\"hljs-number\" style=\"color: #cb4b16;\">0<\/span>)\n\u00a0\u00a0model_with_tools\u00a0=\u00a0model.bind_tools(TOOLS)\n\n\u00a0\u00a0messages\u00a0=\u00a0[HumanMessage(content=question)]\n\u00a0\u00a0ai\u00a0=\u00a0model_with_tools.invoke(messages)\n\u00a0\u00a0messages.append(ai)\n\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">if<\/span>\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">not<\/span>\u00a0ai.tool_calls:\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0ai.content\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">or<\/span>\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"<\/span>\n\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0tc\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0ai.tool_calls:\n\u00a0\u00a0\u00a0\u00a0name,\u00a0args\u00a0=\u00a0tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"name\"<\/span>],\u00a0tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"args\"<\/span>]\n\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0TOOL_MAP[name].invoke(args)\n\u00a0\u00a0\u00a0\u00a0messages.append(ToolMessage(content=<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>(result),\u00a0tool_call_id=tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"id\"<\/span>]))\n\n\u00a0\u00a0final\u00a0=\u00a0model.invoke(messages)\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0final.content\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">or<\/span>\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"<\/span>\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">&#8220;\u8282\u594f\u56fa\u5b9a\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">bind_tools<\/code> \u2192 \u53ef\u80fd\u4ea7\u751f <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tool_calls<\/code> \u2192 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">TOOL_MAP[...].invoke<\/code> \u2192 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">ToolMessage<\/code> \u56de\u586b \u2192 \u518d invoke \u51fa\u81ea\u7136\u8bed\u8a00\u3002<br \/>\n\u4e00\u8f6e\u7248\u9002\u5408\u5b66\u534f\u8bae\uff1b\u591a\u6b65\u4efb\u52a1\u4f1a\u4e0d\u591f&#8221;<\/p>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">3. agent-loop\uff1a\u591a\u6b65\u76f4\u5230\u7ed3\u675f<\/h3>\n<p style=\"margin: 1em 0px;\">\u4e24\u4e2a\u5de5\u5177\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">get_weather<\/span>(<span class=\"hljs-params\">city:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span><\/span>)\u00a0-&gt;\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>:\n\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"\"\u67e5\u8be2\u57ce\u5e02\u5929\u6c14\uff08\u6a21\u62df\uff09\u3002\"\"\"<\/span>\n\u00a0\u00a0...\n\n<span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">add<\/span>(<span class=\"hljs-params\">a:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">float<\/span>,\u00a0b:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">float<\/span><\/span>)\u00a0-&gt;\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>:\n\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"\"\u8ba1\u7b97\u4e24\u6570\u4e4b\u548c\u3002\"\"\"<\/span>\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>(a\u00a0+\u00a0b)\n\n\nTOOLS\u00a0=\u00a0[get_weather,\u00a0add]\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u624b\u5199\u5faa\u73af\u6838\u5fc3\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0step\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">range<\/span>(<span class=\"hljs-number\" style=\"color: #cb4b16;\">1<\/span>,\u00a0max_steps\u00a0+\u00a0<span class=\"hljs-number\" style=\"color: #cb4b16;\">1<\/span>):\n\u00a0\u00a0ai\u00a0=\u00a0model_with_tools.invoke(messages)\n\u00a0\u00a0messages.append(ai)\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">if<\/span>\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">not<\/span>\u00a0ai.tool_calls:\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0ai.content\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">or<\/span>\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"<\/span>\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0tc\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0ai.tool_calls:\n\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0TOOL_MAP[tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"name\"<\/span>]].invoke(tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"args\"<\/span>])\n\u00a0\u00a0\u00a0\u00a0messages.append(ToolMessage(content=<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>(result),\u00a0tool_call_id=tc[<span class=\"hljs-string\" style=\"color: #859900;\">\"id\"<\/span>]))\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u6846\u67b6\u7248\uff08\u5feb\u901f\u5165\u95e8\u7bc7\u5df2\u89c1\uff09\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">agent\u00a0=\u00a0create_agent(\n\u00a0\u00a0get_chat_model(temperature=<span class=\"hljs-number\" style=\"color: #cb4b16;\">0<\/span>),\n\u00a0\u00a0tools=TOOLS,\n\u00a0\u00a0system_prompt=<span class=\"hljs-string\" style=\"color: #859900;\">\"\u4f60\u662f\u52a9\u624b\u3002\u9700\u8981\u67e5\u5929\u6c14\u6216\u505a\u52a0\u6cd5\u65f6\u5fc5\u987b\u8c03\u7528\u5de5\u5177\uff0c\u4e0d\u8981\u7f16\u9020\u3002\"<\/span>,\n)\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">&#8220;\u505c\u6b62\u6761\u4ef6\uff1a\u65e0 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tool_calls<\/code> \u2192 \u7ed3\u675f\uff1b\u624b\u5199\u7248\u8fd8\u6709 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">max_steps<\/code> \u5f3a\u5236\u6536\u5c3e\u3002\u9a8c\u6536\u9898\uff1a\u300c\u5317\u4eac\u5929\u6c14\u600e\u4e48\u6837\uff1f\u518d\u7b97 10+20\u3002\u300d\u2014\u2014\u81f3\u5c11\u4e24\u4e2a\u5de5\u5177\u3002&#8221;<\/p>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">4. multi-tools\uff1a\u5206\u5305\u5de5\u7a0b\u5316<\/h3>\n<p style=\"margin: 1em 0px;\">\u76ee\u5f55\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">multi-tools\/\n\u00a0\u00a0tools\/\n\u00a0\u00a0weather.py\n\u00a0\u00a0calculator.py\n\u00a0\u00a0search.py\n\u00a0\u00a0__init__.py\u00a0\u00a0\u2190\u00a0\u6c47\u603b\u00a0TOOLS\n\u00a0\u00a0agent.py\n\u00a0\u00a0main.py\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools\/weather.py<\/code> \u6ce8\u91ca\u5199\u6e05<strong>\u4f55\u65f6\u7528<\/strong>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-meta\" style=\"color: #d33682;\">@tool<\/span>\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">get_weather<\/span>(<span class=\"hljs-params\">city:\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span><\/span>)\u00a0-&gt;\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">str<\/span>:\n\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\"\"\u67e5\u8be2\u4e2d\u56fd\u57ce\u5e02\u5f53\u524d\u5929\u6c14\uff08\u6a21\u62df\u6570\u636e\uff09\u3002\u7528\u6237\u95ee\u5929\u6c14\u3001\u6c14\u6e29\u3001\u4e0b\u96e8\u65f6\u4f7f\u7528\u3002\"\"\"<\/span>\n\u00a0\u00a0...\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools\/__init__.py<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">from<\/span>\u00a0tools.calculator\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">import<\/span>\u00a0calculator\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">from<\/span>\u00a0tools.search\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">import<\/span>\u00a0mock_search\n<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">from<\/span>\u00a0tools.weather\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">import<\/span>\u00a0get_weather\n\nTOOLS\u00a0=\u00a0[get_weather,\u00a0calculator,\u00a0mock_search]\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">agent.py<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">def<\/span>\u00a0<span class=\"hljs-title function_\" style=\"color: #268bd2;\">build_agent<\/span>():\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">return<\/span>\u00a0create_agent(\n\u00a0\u00a0\u00a0\u00a0get_chat_model(temperature=<span class=\"hljs-number\" style=\"color: #cb4b16;\">0<\/span>),\n\u00a0\u00a0\u00a0\u00a0tools=TOOLS,\n\u00a0\u00a0\u00a0\u00a0system_prompt=(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u4f60\u662f\u52a9\u7406\u3002\u5929\u6c14\u7528\u00a0get_weather\uff0c\u7b97\u672f\u7528\u00a0calculator\uff0c\"<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"\u5176\u5b83\u67e5\u8d44\u6599\u7528\u00a0mock_search\u3002\u4e0d\u8981\u7f16\u9020\u5de5\u5177\u7ed3\u679c\u3002\"<\/span>\n\u00a0\u00a0\u00a0\u00a0),\n\u00a0\u00a0)\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">&#8220;\u6269\u5c55\u53e3\u8bc0\uff1a<strong>\u65b0\u589e\u6587\u4ef6 \u2192 \u5199\u5165 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">TOOLS<\/code><\/strong>\u3002system_prompt \u53ea\u505a\u8def\u7531\u63d0\u793a\uff0c\u7ec6\u8282\u4ecd\u9760\u6bcf\u4e2a\u5de5\u5177\u7684 docstring\u3002&#8221;<\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">ask<\/code> \u91cc\u904d\u5386\u6d88\u606f\u6253\u5370\u8c03\u7528\u8f68\u8ff9\uff0c\u6392\u969c\u5f88\u9999\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs language-python\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"><span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0m\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0result[<span class=\"hljs-string\" style=\"color: #859900;\">\"messages\"<\/span>]:\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">if<\/span>\u00a0name\u00a0==\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"AIMessage\"<\/span>\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">and<\/span>\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">getattr<\/span>(m,\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"tool_calls\"<\/span>,\u00a0<span class=\"hljs-literal\" style=\"color: #cb4b16;\">None<\/span>):\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">for<\/span>\u00a0tc\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">in<\/span>\u00a0m.tool_calls:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">print<\/span>(<span class=\"hljs-string\" style=\"color: #859900;\">f\"\u00a0\u00a0[\u8c03\u7528]\u00a0<span class=\"hljs-subst\" style=\"color: #93a1a1;\">{tc[<span class=\"hljs-string\" style=\"color: #859900;\">'name'<\/span>]}<\/span>(<span class=\"hljs-subst\" style=\"color: #93a1a1;\">{tc[<span class=\"hljs-string\" style=\"color: #859900;\">'args'<\/span>]}<\/span>)\"<\/span>)\n\u00a0\u00a0<span class=\"hljs-keyword\" style=\"color: #6c71c4;\">if<\/span>\u00a0name\u00a0==\u00a0<span class=\"hljs-string\" style=\"color: #859900;\">\"ToolMessage\"<\/span>:\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-built_in\" style=\"color: #2aa198;\">print<\/span>(<span class=\"hljs-string\" style=\"color: #859900;\">f\"\u00a0\u00a0[\u7ed3\u679c]\u00a0<span class=\"hljs-subst\" style=\"color: #93a1a1;\">{m.content}<\/span>\"<\/span>)\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u5c0f\u660e\u590d\u8ff0\uff1a&#8221;<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">@tool<\/code> \u4ea4 schema\uff1b\u4e00\u8f6e\u770b\u534f\u8bae\uff1b\u5faa\u73af\u5e72\u591a\u6b65\uff1b\u591a\u4e86\u5c31\u6309\u6587\u4ef6\u5206\u5305\uff0c\u6e05\u5355\u8fdb <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">TOOLS<\/code>\u3002&#8221;<\/p>\n<hr \/>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u603b\u7ed3<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u8001\u5f20\u8bf4\uff1a&#8221;\u7b2c\u516d\u7bc7\u53ea\u529e\u4e00\u4ef6\u4e8b\u2014\u2014\u628a\u624b\u811a\u4ece\u300c\u80fd\u7528\u300d\u5347\u7ea7\u5230\u300c\u597d\u7ba1\u300d\u3002&#8221;<\/p>\n<p style=\"margin: 1em 0px;\">&#8220;\u4e09\u4e2a\u6838\u5fc3\u7406\u89e3\uff1a<\/p>\n<ol style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: decimal;\">\n<li>\n<section><strong><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">@tool<\/code> = schema \u5de5\u5382<\/strong> \u2014\u2014 \u540d\u79f0\u3001\u5165\u53c2\u3001\u6ce8\u91ca\u4ea4\u7ed9\u6a21\u578b<\/section>\n<\/li>\n<li>\n<section><strong>\u4e00\u8f6e\u5b66\u534f\u8bae\uff0c\u591a\u6b65\u624d\u53eb Agent<\/strong> \u2014\u2014 \u65e0 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tool_calls<\/code> \u7ed3\u675f\uff1b\u6846\u67b6\u53ef\u7528 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">create_agent<\/code><\/section>\n<\/li>\n<li>\n<section><strong>\u591a\u5de5\u5177\u5fc5\u5206\u5305<\/strong> \u2014\u2014 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">tools\/*.py<\/code> + <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">TOOLS<\/code> \u6e05\u5355\uff0csystem_prompt \u505a\u8def\u7531&#8221;<\/section>\n<\/li>\n<\/ol>\n<p style=\"margin: 1em 0px;\">LangChain \u652f\u7ebf\u8fdb\u5ea6\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\u2026\u00a0\u2192\u00a0Prompts\u00a0\/\u00a0LCEL\u00a0\/\u00a0\u7ed3\u6784\u5316\u8f93\u51fa\n\u00a0\u00a0\u00a0\u00a0\u2193\nTools\u00a0\u4e0e\u00a0Tool\u00a0Agent\uff08\u672c\u7bc7\uff09\n\u00a0\u00a0\u00a0\u00a0\u2193\nMemory\u00a0\u2192\u00a0AI\u79c1\u53a8\u5b9e\u6218\u00a0\u2192\u00a0Runtime\u00a0\u2192\u00a0\u2026\n<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u5c0f\u660e\u8bf4\uff1a&#8221;\u4e0b\u4e00\u7bc7\u8be5\u7ed9 Agent \u88c5\u8bb0\u5fc6\u4e86\u2014\u2014\u4e0d\u7136\u6bcf\u8f6e\u90fd\u50cf\u5931\u5fc6\u3002&#8221;<\/p>\n<p style=\"margin: 1em 0px;\">&#8220;\u5bf9\u3002\u4e0b\u4e00\u7bc7\uff1a<strong>Memory\uff1a\u77ed\u671f \/ \u6301\u4e45\u5316 \/ \u7ba1\u7406\u7b56\u7565<\/strong>\u3002&#8221;<\/p>\n<blockquote style=\"margin: 20px 0px; display: block; font-size: 0.9em; overflow: auto; border-left: 3px solid #ef7060; color: #6a737d; padding: 10px 10px 10px 20px; background: #fff9f9;\">\n<p style=\"margin: 1em 0px;\"><strong>\u6a21\u578b\u662f\u5927\u8111\uff0c\u5de5\u5177\u662f\u624b\u811a\uff1b@tool \u8ba9\u6a21\u578b\u770b\u5f97\u89c1\u624b\u811a\u8bf4\u660e\u4e66\uff0c\u5206\u5305\u8ba9\u4f60\u8fd8\u6562\u7ee7\u7eed\u52a0\u624b\u3002<\/strong><\/p>\n<\/blockquote>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u7bc7\u4f60\u628a Prompt \u6a21\u677f\u3001LCEL \u548c\u7ed3\u6784\u5316\u8f93\u51fa\u8dd1\u901a\u4e86\u2014\u2014\u5927\u8111\u4f1a\u8bf4\u8bdd\u3001\u4f1a\u6309\u5b57\u6bb5\u5410\u7ed3\u679c\u3002\u4f46\u65c5\u6e38\u52a9\u624b\u8fd8\u8981\u67e5\u5929\u6c14 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3848,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[163,165],"tags":[167,168,170],"_links":{"self":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3847"}],"collection":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3847"}],"version-history":[{"count":1,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3847\/revisions"}],"predecessor-version":[{"id":3849,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3847\/revisions\/3849"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/media\/3848"}],"wp:attachment":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}