{"id":112982,"date":"2026-10-05T10:18:20","date_gmt":"2026-10-05T02:18:20","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/112982.html"},"modified":"2026-10-05T10:18:20","modified_gmt":"2026-10-05T02:18:20","slug":"%e4%ba%91%e5%87%bd%e6%95%b0%e8%ae%a1%e7%ae%97fc%e5%ae%9a%e6%97%b6%e8%8e%b7%e5%8f%96%e5%a4%a9%e6%b0%94%ef%bc%8c%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90%e5%a4%a9%e6%b0%94%e6%8f%92%e7%94%bb%e5%8d%a1%e7%89%87","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/112982.html","title":{"rendered":"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668"},"content":{"rendered":"<p id=\"u312da1e2\">\u6bcf\u5929\u65e9\u4e0a\u4e5d\u70b9&#xff0c;\u9489\u9489\u7fa4\u91cc\u51c6\u65f6\u51fa\u73b0\u4e00\u5f20\u7cbe\u7f8e\u7684\u5929\u6c14\u56fe\u6587\u5361\u7247\u2014\u2014\u57ce\u5e02\u5730\u6807\u5fae\u7f29\u6a21\u578b\u63d2\u753b\u642d\u914d\u5b9e\u65f6\u5929\u6c14\u4fe1\u606f&#xff0c;\u65e2\u6709\u5b9e\u7528\u4ef7\u503c&#xff0c;\u53c8\u8d4f\u5fc3\u60a6\u76ee\u3002<\/p>\n<p id=\"u71ded907\">\u652f\u6491\u8fd9\u4e00\u5207\u7684&#xff0c;\u6ca1\u6709\u670d\u52a1\u5668\u3001\u6ca1\u6709\u57df\u540d\u3001\u6ca1\u6709\u6570\u636e\u5e93&#xff0c;\u4e5f\u6ca1\u6709\u4efb\u4f55\u5e38\u9a7b\u8fdb\u7a0b\u3002\u80cc\u540e\u4ec5\u6709\u4e00\u6bb5\u8fd0\u884c\u5728\u4e91\u51fd\u6570\u8ba1\u7b97&#xff08;Function Compute&#xff0c;\u7b80\u79f0FC&#xff09;\u4e2d\u7684 Python \u4ee3\u7801&#xff0c;\u6bcf\u5929\u88ab\u5b9a\u65f6\u4efb\u52a1\u5524\u9192\u4e00\u6b21&#xff0c;\u6267\u884c\u5341\u51e0\u79d2\u540e\u4fbf\u91cd\u65b0\u8fdb\u5165\u4f11\u7720\u72b6\u6001\u3002<\/p>\n<h4 id=\"yMPDD\">\u9879\u76ee\u7b80\u4ecb<\/h4>\n<p id=\"uf922489a\">\u672c\u9879\u76ee\u57fa\u4e8e\u4e91\u51fd\u6570\u8ba1\u7b97 FC (Serverless) \u5b9e\u73b0\u96f6\u670d\u52a1\u5668\u8fd0\u7ef4\u81ea\u52a8\u5316\u5929\u6c14\u63a8\u9001&#xff0c;\u65e0\u9700\u8d2d\u4e70\u670d\u52a1\u5668\u3001\u57df\u540d\u3001\u6570\u636e\u5e93&#xff0c;\u4f9d\u9760\u4e8b\u4ef6\u9a71\u52a8\u6a21\u5f0f&#xff0c;\u5b9a\u65f6\u5524\u9192\u6267\u884c\u4ee3\u7801&#xff0c;\u6267\u884c\u5b8c\u6bd5\u81ea\u52a8\u4f11\u7720\u3002<\/p>\n<p id=\"ud50a36cf\">\u7a0b\u5e8f\u5b9a\u65f6\u4ece Open\u2011Meteo \u514d\u8d39\u5929\u6c14 API \u62c9\u53d6\u76ee\u6807\u57ce\u5e02\u5b9e\u65f6\u6c14\u8c61\u6570\u636e&#xff1b;\u8c03\u7528\u901a\u4e49 Qwen\u2011Image\u20112.1\u2011Pro \u5927\u6a21\u578b&#xff0c;\u7ed3\u5408\u57ce\u5e02\u5730\u6807\u3001\u5b9e\u65f6\u5929\u6c14\u81ea\u52a8\u751f\u6210\u7b49\u8ddd\u5fae\u7f29\u98ce\u683c\u5929\u6c14\u63d2\u753b&#xff1b;\u751f\u6210\u56fe\u7247\u4e0a\u4f20\u81f3 OSS \u5bf9\u8c61\u5b58\u50a8\u505a\u6301\u4e45\u5316\u4fdd\u5b58&#xff1b;\u6700\u540e\u901a\u8fc7\u9489\u9489\u81ea\u5b9a\u4e49\u673a\u5668\u4eba&#xff0c;\u5c06\u5929\u6c14\u56fe\u6587\u5361\u7247\u63a8\u9001\u81f3\u6307\u5b9a\u9489\u9489\u7fa4\u804a\u3002<\/p>\n<h4 id=\"ITAja\">\u6280\u672f\u6808<\/h4>\n<table id=\"EuGjg\">\n<tbody>\n<tr>\n<td>\n<p id=\"u8824f95d\">\u7ec4\u4ef6<\/p>\n<\/td>\n<td>\n<p id=\"ub180ce15\">\u7528\u9014<\/p>\n<\/td>\n<td>\n<p id=\"u267e8950\">\u8d39\u7528<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u179a8a23\">\u4e91\u51fd\u6570\u8ba1\u7b97 FC <\/p>\n<\/td>\n<td>\n<p id=\"uee78f1a6\">\u51fd\u6570\u8ba1\u7b97&#xff0c;\u627f\u8f7d\u4ee3\u7801\u903b\u8f91<\/p>\n<\/td>\n<td>\n<p id=\"uca8833b9\">\u53ef\u4ee5\u76f4\u63a5\u514d\u8d39\u98863\u4e2a\u6708\u7684\u51fd\u6570\u8ba1\u7b97\u989d\u5ea6<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u571499ba\">Open\u2011Meteo API<\/p>\n<\/td>\n<td>\n<p id=\"u2058de01\">\u83b7\u53d6\u5b9e\u65f6\u5929\u6c14\u6570\u636e<\/p>\n<\/td>\n<td>\n<p id=\"u8951e14e\">\u514d\u8d39<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u1c4e964b\">\u901a\u4e49\u767e\u70bc&#xff08;Qwen-xxx&#xff09;<\/p>\n<\/td>\n<td>\n<p id=\"u645cbd1f\">\u751f\u6210\u7b80\u77ed\u51fa\u884c\u7a7f\u8863\u63d0\u793a<\/p>\n<\/td>\n<td>\n<p id=\"ucc9a0693\">\u6d88\u8017\u6781\u5c11 token&#xff0c;\u8fd1\u4e4e\u514d\u8d39<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u20ccafd0\">qwen-image-2.1-pro<\/p>\n<\/td>\n<td>\n<p id=\"ua32c9182\">\u6839\u636e\u5929\u6c14\u81ea\u52a8\u751f\u6210\u63d2\u753b<\/p>\n<\/td>\n<td>\n<p id=\"u0b6ed808\">0.25\u5143\/\u5f20<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ued02aef4\">OSS<\/p>\n<\/td>\n<td>\n<p id=\"u998c0c23\">\u6682\u5b58\u751f\u6210\u7684\u56fe\u7247<\/p>\n<\/td>\n<td>\n<p id=\"ufb2b892c\">\u51e0\u5206\u94b1\/\u6708<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u793588f7\">\u9489\u9489\u81ea\u5b9a\u4e49\u673a\u5668\u4eba<\/p>\n<\/td>\n<td>\n<p id=\"u6e0d41be\">\u63a8\u9001\u56fe\u6587\u5361\u7247\u5230\u7fa4\u804a<\/p>\n<\/td>\n<td>\n<p id=\"uf3bcb414\">\u514d\u8d39<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 id=\"VtLPP\">\u4e00\u3001\u67b6\u6784\u4e0e\u6570\u636e\u6d41<\/h4>\n<h5 id=\"iwegV\">1.1\u6574\u4f53\u67b6\u6784<\/h5>\n<p id=\"u8e9c3dc7\">\u89e6\u53d1\u5668\u5c42&#xff1a;\u4e91\u51fd\u6570\u8ba1\u7b97 FC \u5b9a\u65f6\u89e6\u53d1\u5668&#xff08;Cron \u5b9a\u65f6&#xff09;\u4f5c\u4e3a\u5165\u53e3&#xff0c;\u5230\u8bbe\u5b9a\u65f6\u95f4\u81ea\u52a8\u89e6\u53d1\u51fd\u6570\u6267\u884c&#xff1b;\u65f6\u533a\u914d\u7f6e\u4e3a Asia\/Shanghai \u5317\u4eac\u65f6\u95f4\u3002<\/p>\n<p id=\"u1d1b0506\">\u6570\u636e\u83b7\u53d6\u5c42&#xff1a;\u51fd\u6570\u8c03\u7528 Open\u2011Meteo \u5f00\u653e\u5929\u6c14 API&#xff0c;\u4f20\u5165\u76ee\u6807\u57ce\u5e02\u7ecf\u7eac\u5ea6&#xff0c;\u62ff\u5230\u5b9e\u65f6\u5929\u6c14\u7f16\u7801\u3001\u6e29\u5ea6\u3001\u98ce\u901f\u98ce\u5411\u539f\u59cb JSON \u6570\u636e&#xff1b;\u5185\u90e8\u5b8c\u6210\u5929\u6c14\u7f16\u7801\u6620\u5c04\u4e3a\u4e2d\u6587\u5929\u6c14\u63cf\u8ff0\u3002<\/p>\n<p id=\"u0707b253\">AI \u751f\u6210\u5c42&#xff1a;\u7ed3\u5408\u57ce\u5e02\u5730\u6807\u5e93\u3001\u5b9e\u65f6\u5929\u6c14&#xff0c;\u7ec4\u88c5 AI \u7ed8\u753b Prompt&#xff0c;\u5185\u7f6e\u654f\u611f\u8bcd\u66ff\u6362\u903b\u8f91\u89c4\u907f\u5185\u5bb9\u5ba1\u6838\u62e6\u622a&#xff1b;\u8c03\u7528\u901a\u4e49\u767e\u70bc Qwen\u2011Image\u20112.1\u2011Pro \u63a5\u53e3\u751f\u6210 16:9 \u6a2a\u7248\u5fae\u7f29\u57ce\u5e02\u63d2\u753b\u3002<\/p>\n<p id=\"u6234d416\">\u8d44\u6e90\u5b58\u50a8\u5c42&#xff1a;AI \u8fd4\u56de\u4e34\u65f6\u6709\u6548\u671f\u56fe\u7247&#xff0c;\u4e0b\u8f7d\u5230 FC \u672c\u5730\u4e34\u65f6\u76ee\u5f55&#xff0c;\u505a\u56fe\u7247\u538b\u7f29\u5904\u7406&#xff0c;\u4e0a\u4f20OSS&#xff0c;\u8bbe\u7f6e\u5bf9\u8c61\u516c\u5171\u8bfb ACL&#xff0c;\u751f\u6210\u6c38\u4e45\u516c\u7f51\u8bbf\u95ee\u56fe\u7247\u94fe\u63a5\u3002<\/p>\n<p id=\"ua3ad3af6\">\u6d88\u606f\u63a8\u9001\u5c42&#xff1a;\u4f7f\u7528\u9489\u9489\u673a\u5668\u4eba Webhook&#043;HMAC\u2011SHA256 \u52a0\u7b7e&#xff0c;\u7ec4\u88c5 Markdown \u6d88\u606f\u4f53&#xff0c;\u628a OSS \u56fe\u7247\u94fe\u63a5 &#043; \u5929\u6c14\u6587\u672c\u63a8\u9001\u5230\u9489\u9489\u7fa4\u3002<\/p>\n<h5 id=\"KvSh6\">1.2 \u6570\u636e\u6d41\u6d41\u7a0b\u56fe<\/h5>\n<p>FC\u5b9a\u65f6\u89e6\u53d1\u5668(09:00)<br \/>\n        \u2193<br \/>\n\u8bfb\u53d6\u73af\u5883\u53d8\u91cfCITY\u83b7\u53d6\u76ee\u6807\u57ce\u5e02 \u2192 CITY_COORDS\u5b57\u5178\u8bfb\u53d6\u57ce\u5e02\u7ecf\u7eac\u5ea6<br \/>\n        \u2193<br \/>\n\u8c03\u7528Open\u2011Meteo API\u83b7\u53d6\u539f\u59cb\u5929\u6c14\u6570\u636e<br \/>\n        \u2193<br \/>\nWEATHER_CODE_MAP\u89e3\u6790\u4e3a\u4e2d\u6587\u5929\u6c14\u3001\u6e29\u5ea6\u3001\u98ce\u5411\u98ce\u529b<br \/>\n        \u2193<br \/>\nLANDMARKS_DB\u8bfb\u53d6\u57ce\u5e02\u5730\u6807 &#043; WEATHER_EFFECT_MAP\u5339\u914d\u5929\u6c14\u753b\u9762\u6548\u679c<br \/>\n        \u2193<br \/>\n\u654f\u611f\u8bcd\u8fc7\u6ee4sanitize_prompt()\u751f\u6210\u6700\u7ec8AI\u7ed8\u753bPrompt<br \/>\n        \u2193<br \/>\n\u8c03\u7528qwen\u2011image\u20112.1\u2011pro\u751f\u6210\u63d2\u753b&#xff0c;\u4e0b\u8f7d\u56fe\u7247\u81f3FC \/tmp\u4e34\u65f6\u76ee\u5f55<br \/>\n        \u2193<br \/>\n\u56fe\u7247\u538b\u7f29 \u2192 \u4e0a\u4f20OSS&#xff0c;\u8bbe\u7f6epublic\u2011read\u6743\u9650&#xff0c;\u83b7\u53d6\u516c\u7f51\u56fe\u7247URL<br \/>\n        \u2193<br \/>\n\u9489\u9489\u673a\u5668\u4eba\u52a0\u7b7e\u7b7e\u540d&#xff0c;\u7ec4\u88c5markdown\u6d88\u606f<br \/>\n        \u2193<br \/>\nPOST\u8bf7\u6c42\u63a8\u9001\u9489\u9489\u7fa4\u804a<br \/>\n        \u2193<br \/>\n\u6267\u884c\u5b8c\u6210&#xff0c;FC\u5b9e\u4f8b\u4f11\u7720&#xff1b;\u53d1\u751f\u5f02\u5e38\u8f93\u51fa\u9519\u8bef\u65e5\u5fd7\u8fd4\u56de500\u9519\u8bef<\/p>\n<h4 id=\"fC84r\">\u4e8c\u3001\u524d\u7f6e\u51c6\u5907<\/h4>\n<h5 id=\"omHca\">2.1 \u5929\u6c14 API<\/h5>\n<p id=\"u475d297a\">\u65b9\u6848 &#xff1a;Open-Meteo<\/p>\n<p id=\"u023eb7e9\">\u5982\u679c\u4f60\u8fde\u6ce8\u518c\u90fd\u4e0d\u60f3\u6ce8\u518c&#xff0c;Open-Meteo \u662f\u5b8c\u5168\u514d\u8d39\u3001\u65e0\u9700 Key \u7684\u5929\u6c14 API&#xff0c;\u652f\u6301\u5168\u7403\u7ecf\u7eac\u5ea6\u67e5\u8be2&#xff0c;\u8fd4\u56de JSON \u683c\u5f0f\u3002<\/p>\n<h5 id=\"Z53HF\">2.2 \u901a\u4e49\u767e\u70bc API Key<\/h5>\n<p id=\"uc3f6800d\">\u767b\u5f55\u4e91\u8d26\u53f7&#xff0c;\u8fdb\u5165 \u4e91\u767e\u70bc\u63a7\u5236\u53f0&#xff1a;https:\/\/bailian.console.aliyun.com<\/p>\n<p id=\"uf2a1fcf4\">\u53f3\u4e0a\u89d2\u786e\u8ba4\u5730\u57df&#xff0c;\u5efa\u8bae\u9009 \u534e\u53172&#xff08;\u5317\u4eac&#xff09;&#xff1b;\u65b0\u7528\u6237\u5982\u679c\u6ca1\u6709\u5f00\u901a&#xff0c;\u70b9\u201c\u7acb\u5373\u5f00\u901a\u201d\u5373\u53ef\u3002<\/p>\n<p id=\"uac84cab0\">\u5de6\u4fa7\u83dc\u5355\u8fdb\u5165 API-Key \/ \u5bc6\u94a5\u7ba1\u7406\u3002<\/p>\n<p id=\"uef2d53fb\">\u70b9\u51fb \u521b\u5efa API Key\u3002<\/p>\n<p id=\"u8cb72c4d\">\u5f39\u7a97\u91cc&#xff1a;\u5f52\u5c5e\u8d26\u53f7 \u4e3b\u8d26\u53f7&#xff0c;\u5f52\u5c5e\u4e1a\u52a1\u7a7a\u95f4 \u9ed8\u8ba4\u4e1a\u52a1\u7a7a\u95f4&#xff0c;\u6743\u9650 \u5168\u90e8&#xff0c;\u63cf\u8ff0&#xff1a;\u586b \u5929\u6c14\u5361\u7247 \u65b9\u4fbf\u8bc6\u522b<\/p>\n<p id=\"u40c91540\">\u70b9\u51fb \u786e\u5b9a \u540e&#xff0c;\u4f1a\u5f39\u51fa\u5b8c\u6574 API Key&#xff0c;\u7acb\u523b\u590d\u5236\u4fdd\u5b58\u3002<\/p>\n<p id=\"u621a52f2\">\u5173\u95ed\u5f39\u7a97\u540e\u5c31\u4e0d\u80fd\u518d\u770b\u5230\u660e\u6587\u4e86&#xff0c;\u53ea\u80fd\u91cd\u65b0\u521b\u5efa\u3002<\/p>\n<p id=\"u5d27330a\">\u56de\u5230 FC \u51fd\u6570&#xff0c;\u628a\u73af\u5883\u53d8\u91cf DASHSCOPE_API_KEY \u586b\u6210\u8fd9\u4e2a sk- \u5f00\u5934\u7684\u503c\u3002<\/p>\n<p id=\"u25cb90ae\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1117\" id=\"UDfTa\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021808-6ac308e09bb04.png\" width=\"1919\" \/><\/p>\n<p id=\"u46702c23\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"790\" id=\"euZpw\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021809-6ac308e17050f.png\" width=\"1919\" \/><\/p>\n<h5 id=\"lTked\">2.3 qwen-image-2.1-pro\u56fe\u7247\u751f\u6210<\/h5>\n<p id=\"u4cf6423b\">\u767b\u5f55https:\/\/bailian.console.aliyun.com\/cn-beijing\/model\/market\/detail\/qwen-image-2.0<\/p>\n<p id=\"u69a387e6\">\u5de6\u4fa7\u5bfc\u822a\u680f\u8fdb\u5165 \u6a21\u578b\u5e7f\u573a \u6216 \u5e94\u7528\u4e2d\u5fc3&#xff0c;\u641c\u7d22&#034;qwen-image-2.1-pro&#034;\u3002<\/p>\n<p id=\"ucd8c1c0a\">\u70b9\u51fb\u6a21\u578b\u5361\u7247&#xff0c;\u786e\u8ba4\u5df2\u5f00\u901a\u670d\u52a1&#xff1b;\u5982\u672a\u5f00\u901a&#xff0c;\u70b9\u51fb&#034;\u7acb\u5373\u5f00\u901a&#034;\u5373\u53ef&#xff08;\u4e0e\u767e\u70bc API Key \u5171\u7528\u540c\u4e00\u4e2a\u8d26\u53f7&#xff0c;\u65e0\u9700\u989d\u5916\u6ce8\u518c&#xff09;\u3002<\/p>\n<p id=\"u326b95a4\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"560\" id=\"Ir5zO\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021809-6ac308e1ec2cc.png\" width=\"1886\" \/><\/p>\n<p id=\"u2e0f1b44\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"668\" id=\"yyoHx\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021810-6ac308e25a13f.png\" width=\"1890\" \/><\/p>\n<p id=\"u2418f9a7\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"852\" id=\"TI6tR\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021811-6ac308e3ac9da.png\" width=\"1634\" \/><\/p>\n<p id=\"u71e11d32\">\u5145\u503c\u5f00\u901a\u4ed8\u8d39&#xff08;\u63a8\u8350&#xff09;<\/p>\n<p id=\"u89055f0f\">\u8fdb\u5165\u300c\u6a21\u578b\u5e7f\u573a\u300d\u2192 \u627e\u5230 qwen-image-2.1-pro<\/p>\n<p id=\"u88f8f263\">\u70b9\u51fb\u5f00\u901a\u4ed8\u8d39&#xff0c;\u7ed9\u8d26\u6237\u5145\u70b9\u94b1&#xff08;\u6309\u91cf\u8ba1\u8d39&#xff0c;\u6bcf\u6b21\u751f\u56fe\u51e0\u6bdb\u94b1&#xff09;<\/p>\n<p id=\"u094aed79\">\u6216\u8005\u5728\u63a7\u5236\u53f0\u91cc\u627e\u5230\u300c\u914d\u989d\u7ba1\u7406\u300d&#xff0c;\u628a\u300c\u4ec5\u4f7f\u7528\u514d\u8d39\u989d\u5ea6\u300d\u5173\u6389<\/p>\n<p id=\"u344cf562\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"758\" id=\"u470667c4\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021812-6ac308e4b2fc9.png\" width=\"1872\" \/><\/p>\n<h5 id=\"Bzaap\">2.4 OSS Bucket<\/h5>\n<p id=\"u7781f2ad\">\u7531\u4e8e\u901a\u4e49\u5343\u95ee&#xff08;Qwen-Image&#xff09;\u751f\u6210\u7684\u56fe\u7247\u4e34\u65f6\u94fe\u63a5\u6709\u6548\u671f\u8f83\u77ed&#xff08;\u901a\u5e38\u53ea\u6709 24 \u5c0f\u65f6&#xff09;&#xff0c;\u6211\u4eec\u9700\u8981\u5c06\u8fd9\u4e9b\u751f\u6210\u7684\u5929\u6c14\u63d2\u753b\u5361\u7247\u4fdd\u5b58\u5230\u4e00\u4e2a\u6c38\u4e45\u4e14\u53ef\u5b89\u5168\u8bbf\u95ee\u7684\u4e91\u5b58\u50a8\u4e2d\u3002OSS&#xff08;\u5bf9\u8c61\u5b58\u50a8&#xff09;\u662f\u627f\u8f7d\u8fd9\u4e00\u4efb\u52a1\u7684\u6700\u4f73\u9009\u62e9\u3002<\/p>\n<h6 id=\"YLkXJ\">\u521b\u5efa Bucket&#xff08;\u5b58\u50a8\u7a7a\u95f4&#xff09;<\/h6>\n<p id=\"u6a349dc5\">\u767b\u5f55 OSS \u63a7\u5236\u53f0https:\/\/oss.console.aliyun.com\/<\/p>\n<p id=\"uee1a43bd\">\u70b9\u51fb\u5de6\u4e0a\u89d2\u7684 Bucket \u5217\u8868 \u2192 \u521b\u5efa Bucket\u3002<\/p>\n<p id=\"u5680c05e\">Bucket \u540d\u79f0&#xff1a;\u5efa\u8bae\u8d77\u4e00\u4e2a\u6613\u8bb0\u7684\u540d\u79f0&#xff0c;\u4f8b\u5982 weather&#8211;oss\u3002<\/p>\n<p id=\"u4e82387a\">\u5730\u57df&#xff08;Region&#xff09;&#xff1a;\u8fd9\u662f\u6700\u5173\u952e\u7684\u4e00\u6b65\u3002\u8bf7\u52a1\u5fc5\u9009\u62e9\u4e0e\u4f60\u4e4b\u524d\u521b\u5efa\u7684 FC&#xff08;\u51fd\u6570\u8ba1\u7b97&#xff09;\u76f8\u540c\u7684\u5730\u57df&#xff08;\u4f8b\u5982 FC \u9009\u7684\u662f\u676d\u5dde&#xff0c;OSS \u4e5f\u5fc5\u987b\u9009\u676d\u5dde&#xff09;\u3002\u540c\u5730\u57df\u5185\u7f51\u4f20\u8f93\u4e0d\u4ec5\u514d\u6536\u6d41\u91cf\u8d39&#xff0c;\u800c\u4e14\u901f\u5ea6\u6700\u5feb\u3001\u6781\u5176\u7a33\u5b9a\u3002<\/p>\n<p id=\"ud5ff110b\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"595\" id=\"ux2DZ\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021813-6ac308e53f8cc.png\" width=\"1124\" \/><\/p>\n<h6 id=\"X6X1b\">\u8bbe\u7f6e\u8bbf\u95ee\u6743\u9650&#xff08;ACL&#xff09;<\/h6>\n<p id=\"u32580c6e\">\u5728\u521b\u5efa Bucket \u7684\u8bbe\u7f6e\u9875\u9762&#xff0c;\u5c06 \u8bfb\u5199\u6743\u9650&#xff08;ACL&#xff09; \u8bbe\u7f6e\u4e3a \u516c\u5171\u8bfb\u3002<\/p>\n<p id=\"u5a5a1cee\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"378\" id=\"t0BD1\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021813-6ac308e5816b3.png\" width=\"1128\" \/><\/p>\n<h6 id=\"yXHJF\">\u8bb0\u5f55\u5173\u952e\u8fde\u63a5\u4fe1\u606f<\/h6>\n<p id=\"u4fdcaba4\">\u521b\u5efa\u6210\u529f\u540e&#xff0c;\u8fdb\u5165\u8be5 Bucket \u7684 \u6982\u89c8 \u9875\u9762&#xff0c;\u4f60\u9700\u8981\u8bb0\u4e0b\u4ee5\u4e0b\u4e24\u4e2a\u6838\u5fc3\u53c2\u6570&#xff08;\u540e\u7eed\u914d\u7f6e FC \u73af\u5883\u53d8\u91cf\u65f6\u4f1a\u7528\u5230&#xff09;&#xff1a;<\/p>\n<p id=\"uc8114082\">\u5916\u7f51\u8bbf\u95ee&#xff1a;\u590d\u5236\u4ee5 .aliyuncs.com \u7ed3\u5c3e\u7684\u5916\u7f51\u8bbf\u95ee\u57df\u540d&#xff08;\u4f8b\u5982 oss-cn-hangzhou.aliyuncs.com&#xff09;\u3002<\/p>\n<p id=\"u27672a10\">Bucket \u540d\u79f0&#xff1a;\u5373\u4f60\u521a\u521a\u521b\u5efa\u7684\u540d\u79f0&#xff08;\u4f8b\u5982 weather&#8211;oss&#xff09;<\/p>\n<p id=\"ud3f04155\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"335\" id=\"CrqA3\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021813-6ac308e5af046.png\" width=\"975\" \/><\/p>\n<h5 id=\"lyZoc\">2.5 \u9489\u9489\u81ea\u5b9a\u4e49\u673a\u5668\u4eba<\/h5>\n<p id=\"u09f4b606\">1. \u7fa4\u804a \u2192 \u7fa4\u8bbe\u7f6e \u2192 \u667a\u80fd\u7fa4\u52a9\u624b \u2192 \u6dfb\u52a0\u673a\u5668\u4eba \u2192 \u81ea\u5b9a\u4e49&#xff08;\u901a\u8fc7 Webhook \u63a5\u5165&#xff09;<\/p>\n<p id=\"u1c6e2f9e\">2. \u5b89\u5168\u8bbe\u7f6e\u5efa\u8bae\u540c\u65f6\u5f00\u542f\u4e24\u9879&#xff1a;<\/p>\n<p id=\"ud02b342f\">\u25e6 \u52a0\u7b7e&#xff1a;\u62ff\u5230\u4ee5 SEC \u5f00\u5934\u7684 secret&#xff0c;\u4ee3\u7801\u91cc\u7528 HMAC-SHA256 \u7b97\u7b7e\u540d<\/p>\n<p id=\"u96d60a85\">\u25e6 \u81ea\u5b9a\u4e49\u5173\u952e\u8bcd&#xff1a;\u586b\u4e00\u4e2a\u8bcd&#xff08;\u5982 \u5929\u6c14&#xff09;&#xff0c;\u6b64\u540e\u6bcf\u6761\u6d88\u606f\u6b63\u6587\u91cc\u5fc5\u987b\u5305\u542b\u8fd9\u4e2a\u8bcd&#xff0c;\u5426\u5219\u63a5\u53e3\u8fd4\u56de\u6210\u529f\u4f46\u7fa4\u91cc\u4ec0\u4e48\u90fd\u4e0d\u51fa\u73b0\u2014\u2014\u8fd9\u662f\u6700\u5e38\u89c1\u7684\u300c\u5047\u6210\u529f\u300d<\/p>\n<p id=\"u7f74f69d\">3. \u8bb0\u4e0b Webhook URL \u548c secret<\/p>\n<p id=\"u91eed73c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"813\" id=\"afVjm\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021813-6ac308e5c962c.png\" width=\"1469\" \/><\/p>\n<h4 id=\"uXn7j\">\u4e09\u3001\u6838\u5fc3\u4eae\u70b9&#xff1a;\u5929\u6c14\u56fe\u7247 Prompt \u81ea\u52a8\u5339\u914d<\/h4>\n<h5 id=\"hPHDX\">3.1 Prompt \u6a21\u677f<\/h5>\n<p id=\"u9cb8bce5\">\u4e3a\u4e86\u8ba9 AI \u751f\u6210\u7684\u6587\u5b57\u51c6\u786e&#xff0c;\u53ef\u4ee5\u5bf9\u56fe\u7247\u91cc\u7684\u539f\u6a21\u677f\u505a\u5fae\u8c03\u3002<\/p>\n<p>\u4ee5\u6e05\u6670\u768445\u5ea6\u4fef\u89c6\u89d2\u5ea6&#xff0c;\u5c55\u793a\u4e00\u4e2a\u7b49\u8ddd\u5fae\u7f29\u6a21\u578b\u573a\u666f\u3002<br \/>\n\u753b\u9762\u5305\u542b&#xff1a;[\u5730\u6807A] \u548c [\u5730\u6807B]&#xff0c;\u6784\u56fe\u5c45\u4e2d\u3002<br \/>\n\u573a\u666f\u4e2d\u5de7\u5999\u878d\u5408 [\u5929\u6c14\u72b6\u6001] \u6548\u679c&#xff0c;\u6c1b\u56f4\u67d4\u548c&#xff0c;\u5448\u73b0\u57ce\u5e02\u4e0e\u5929\u6c14\u7684\u81ea\u7136\u4e92\u52a8\u611f\u3002<br \/>\n\u4f7f\u7528\u57fa\u4e8e\u7269\u7406\u7684\u771f\u5b9e\u6e32\u67d3&#xff08;PBR&#xff09;\u548c\u903c\u771f\u7684\u5149\u7167\u6548\u679c&#xff0c;\u642d\u914d\u7eaf\u8272\u80cc\u666f&#xff0c;\u6574\u4f53\u753b\u9762\u6e05\u6670\u7b80\u6d01\u3002<br \/>\n\u56fe\u7247\u6b63\u4e0a\u65b9\u5c55\u793a\u6587\u5b57&#xff1a;\u201c{city} {weather} {temp}\u2103\u201d<\/p>\n<h5 id=\"jIGEc\">3.2 \u5b8c\u6574\u4ee3\u7801<\/h5>\n<p id=\"ufd780e45\">\u6574\u5408\u597d\u7684\u5b8c\u6574 index.py&#xff0c;\u5df2\u5199\u6b7b\u8d35\u9633&#xff0c;\u5e76\u914d\u7f6e\u4e86\u4f60\u6307\u5b9a\u7684 6 \u4e2a\u5730\u6807&#xff0c;\u76f4\u63a5\u590d\u5236\u66ff\u6362\u5373\u53ef\u3002<\/p>\n<p>import subprocess<br \/>\nsubprocess.call(<br \/>\n    &#039;pip install dashscope oss2 requests -t \/tmp -q &#039;<br \/>\n    &#039;-i https:\/\/mirrors.ctyun.cn\/pypi\/simple\/ &#039;<br \/>\n    &#039;&#8211;trusted-host mirrors.ctyun.cn&#039;,<br \/>\n    shell&#061;True<br \/>\n)<br \/>\nimport sys<br \/>\nsys.path.append(&#039;\/tmp&#039;)<br \/>\nimport dashscope<\/p>\n<p>import requests<br \/>\nimport oss2<br \/>\nimport time<br \/>\nimport hmac<br \/>\nimport hashlib<br \/>\nimport base64<br \/>\nimport urllib.parse<br \/>\nimport os<br \/>\nfrom datetime import date, datetime<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 0. \u4f9d\u8d56\u5e93\u81ea\u52a8\u5b89\u88c5<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ntry:<br \/>\n    from PIL import Image, ImageDraw, ImageFont<br \/>\nexcept ImportError:<br \/>\n    print(&#034;[INFO] \u6b63\u5728\u5b89\u88c5\u56fe\u50cf\u5904\u7406\u4f9d\u8d56\u5e93 (Pillow)&#8230;&#034;)<br \/>\n    os.system(f&#034;{sys.executable} -m pip install Pillow&#034;)<br \/>\n    from PIL import Image, ImageDraw, ImageFont<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 1. \u6838\u5fc3\u914d\u7f6e\u4e0e\u5730\u6807\u5b57\u5178<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nLANDMARKS_DB &#061; {<br \/>\n    # \u4e00\u7ebf\u57ce\u5e02<br \/>\n    &#034;\u5317\u4eac&#034;: [&#034;\u6545\u5bab&#034;, &#034;\u5929\u5b89\u5e7f\u573a&#034;, &#034;\u5929\u575b&#034;, &#034;\u9890\u548c\u56ed&#034;, &#034;\u9e1f\u5de2&#034;],<br \/>\n    &#034;\u4e0a\u6d77&#034;: [&#034;\u4e1c\u65b9\u660e\u73e0&#034;, &#034;\u5916\u6ee9&#034;, &#034;\u8c6b\u56ed&#034;, &#034;\u4e0a\u6d77\u4e2d\u5fc3\u5927\u53a6&#034;, &#034;\u8fea\u58eb\u5c3c\u57ce\u5821&#034;, &#034;\u9759\u5b89\u5bfa&#034;],<br \/>\n    &#034;\u5e7f\u5dde&#034;: [&#034;\u5e7f\u5dde\u5854&#034;, &#034;\u9648\u5bb6\u7960&#034;, &#034;\u9547\u6d77\u697c&#034;, &#034;\u73e0\u6c5f\u65b0\u57ce&#034;, &#034;\u8d8a\u79c0\u516c\u56ed\u4e94\u7f8a\u77f3\u50cf&#034;],<br \/>\n    &#034;\u6df1\u5733&#034;: [&#034;\u5e73\u5b89\u91d1\u878d\u4e2d\u5fc3&#034;, &#034;\u5e02\u6c11\u4e2d\u5fc3&#034;, &#034;\u4e16\u754c\u4e4b\u7a97&#034;, &#034;\u5927\u6885\u6c99&#034;, &#034;\u5730\u738b\u5927\u53a6&#034;],<br \/>\n    # \u65b0\u4e00\u7ebf<br \/>\n    &#034;\u6210\u90fd&#034;: [&#034;\u5929\u5e9c\u718a\u732b\u5854&#034;, &#034;\u5bbd\u7a84\u5df7\u5b50&#034;, &#034;\u9526\u91cc&#034;, &#034;\u592a\u53e4\u91cc&#034;, &#034;\u675c\u752b\u8349\u5802&#034;],<br \/>\n    &#034;\u91cd\u5e86&#034;: [&#034;\u6d2a\u5d16\u6d1e&#034;, &#034;\u89e3\u653e\u7891&#034;, &#034;\u6765\u798f\u58eb&#034;, &#034;\u957f\u6c5f\u7d22\u9053&#034;, &#034;\u674e\u5b50\u575d\u8f7b\u8f68&#034;],<br \/>\n    &#034;\u676d\u5dde&#034;: [&#034;\u897f\u6e56\u96f7\u5cf0\u5854&#034;, &#034;\u94b1\u6c5f\u65b0\u57ce&#034;, &#034;\u7075\u9690\u5bfa&#034;, &#034;\u5927\u8fd0\u6cb3\u62f1\u5bb8\u6865&#034;],<br \/>\n    &#034;\u6b66\u6c49&#034;: [&#034;\u9ec4\u9e64\u697c&#034;, &#034;\u4e1c\u6e56&#034;, &#034;\u957f\u6c5f\u5927\u6865&#034;, &#034;\u695a\u6cb3\u6c49\u8857&#034;, &#034;\u9f9f\u5c71\u7535\u89c6\u5854&#034;],<br \/>\n    &#034;\u897f\u5b89&#034;: [&#034;\u5927\u96c1\u5854&#034;, &#034;\u57ce\u5899&#034;, &#034;\u949f\u697c&#034;, &#034;\u5927\u5510\u4e0d\u591c\u57ce&#034;, &#034;\u5927\u660e\u5bab&#034;],<br \/>\n    &#034;\u5357\u4eac&#034;: [&#034;\u592b\u5b50\u5e99&#034;, &#034;\u4e2d\u5c71\u9675&#034;, &#034;\u9e21\u9e23\u5bfa&#034;, &#034;\u7d2b\u5cf0\u5927\u53a6&#034;, &#034;\u660e\u57ce\u5899&#034;],<br \/>\n    &#034;\u5929\u6d25&#034;: [&#034;\u5929\u6d25\u4e4b\u773c&#034;, &#034;\u4e94\u5927\u9053&#034;, &#034;\u4e16\u7eaa\u949f&#034;, &#034;\u6d25\u6e7e\u5e7f\u573a&#034;],<br \/>\n    &#034;\u82cf\u5dde&#034;: [&#034;\u4e1c\u65b9\u4e4b\u95e8&#034;, &#034;\u62d9\u653f\u56ed&#034;, &#034;\u5e73\u6c5f\u8def&#034;, &#034;\u5bd2\u5c71\u5bfa&#034;],<br \/>\n    &#034;\u90d1\u5dde&#034;: [&#034;\u4e8c\u4e03\u7eaa\u5ff5\u5854&#034;, &#034;\u5927\u7389\u7c73\u697c&#034;, &#034;\u4e2d\u539f\u798f\u5854&#034;, &#034;\u5c11\u6797\u5bfa&#034;],<br \/>\n    &#034;\u957f\u6c99&#034;: [&#034;\u6a58\u5b50\u6d32\u4f1f\u4eba\u96d5\u50cf&#034;, &#034;\u5cb3\u9e93\u5c71&#034;, &#034;IFS\u56fd\u91d1\u4e2d\u5fc3&#034;, &#034;\u592a\u5e73\u8001\u8857&#034;],<br \/>\n    &#034;\u4e1c\u839e&#034;: [&#034;\u864e\u95e8\u70ae\u53f0&#034;, &#034;\u6c11\u76c8\u56fd\u8d38\u4e2d\u5fc3&#034;, &#034;\u677e\u5c71\u6e56&#034;],<br \/>\n    &#034;\u9752\u5c9b&#034;: [&#034;\u6808\u6865&#034;, &#034;\u4e94\u56db\u5e7f\u573a&#034;, &#034;\u516b\u5927\u5173&#034;, &#034;\u5965\u5e06\u4e2d\u5fc3&#034;],<br \/>\n    &#034;\u6c88\u9633&#034;: [&#034;\u6c88\u9633\u6545\u5bab&#034;, &#034;\u5f69\u7535\u5854&#034;, &#034;\u5927\u5e05\u5e9c&#034;, &#034;\u76db\u4eac\u5927\u5267\u9662&#034;],<br \/>\n    &#034;\u5408\u80a5&#034;: [&#034;\u5927\u8700\u5c71&#034;, &#034;\u5929\u9e45\u6e56&#034;, &#034;\u6e21\u6c5f\u7eaa\u5ff5\u9986&#034;, &#034;\u5408\u80a5\u5927\u5267\u9662&#034;],<br \/>\n    &#034;\u4f5b\u5c71&#034;: [&#034;\u7956\u5e99&#034;, &#034;\u5cad\u5357\u5929\u5730&#034;, &#034;\u5343\u706f\u6e56&#034;],<br \/>\n    # \u4e8c\u7ebf\u57ce\u5e02<br \/>\n    &#034;\u5b81\u6ce2&#034;: [&#034;\u5929\u4e00\u9601&#034;, &#034;\u5357\u5858\u8001\u8857&#034;, &#034;\u5b81\u6ce2\u8d22\u5bcc\u4e2d\u5fc3&#034;, &#034;\u8001\u5916\u6ee9&#034;],<br \/>\n    &#034;\u6606\u660e&#034;: [&#034;\u6ec7\u6c60&#034;, &#034;\u897f\u5c71\u9f99\u95e8&#034;, &#034;\u91d1\u9a6c\u78a7\u9e21\u574a&#034;, &#034;\u53cc\u5854&#034;],<br \/>\n    &#034;\u798f\u5dde&#034;: [&#034;\u4e09\u574a\u4e03\u5df7&#034;, &#034;\u9547\u6d77\u697c&#034;, &#034;\u6d77\u5ce1\u660e\u73e0\u5e7f\u573a&#034;],<br \/>\n    &#034;\u53a6\u95e8&#034;: [&#034;\u9f13\u6d6a\u5c7f\u65e5\u5149\u5ca9&#034;, &#034;\u53cc\u5b50\u5854&#034;, &#034;\u5357\u666e\u9640\u5bfa&#034;, &#034;\u73af\u5c9b\u8def&#034;],<br \/>\n    &#034;\u54c8\u5c14\u6ee8&#034;: [&#034;\u5723\u7d22\u83f2\u4e9a\u6559\u5802&#034;, &#034;\u4e2d\u592e\u5927\u8857&#034;, &#034;\u51b0\u96ea\u5927\u4e16\u754c&#034;],<br \/>\n    &#034;\u957f\u6625&#034;: [&#034;\u4f2a\u6ee1\u7687\u5bab\u535a\u7269\u9662&#034;, &#034;\u51c0\u6708\u6f6d&#034;, &#034;\u957f\u5f71\u4e16\u7eaa\u57ce&#034;],<br \/>\n    &#034;\u77f3\u5bb6\u5e84&#034;: [&#034;\u6cb3\u5317\u535a\u7269\u9662&#034;, &#034;\u7535\u89c6\u5854&#034;, &#034;\u6b63\u5b9a\u53e4\u57ce&#034;],<br \/>\n    &#034;\u592a\u539f&#034;: [&#034;\u664b\u7960&#034;, &#034;\u53cc\u5854\u5bfa&#034;, &#034;\u4e94\u4e00\u5e7f\u573a&#034;, &#034;\u8499\u5c71\u5927\u4f5b&#034;],<br \/>\n    &#034;\u8d35\u9633&#034;: [&#034;\u9ed4\u7075\u5c71&#034;, &#034;\u7532\u79c0\u697c&#034;, &#034;\u53cc\u5b50\u5854&#034;, &#034;\u82b1\u679c\u56ed\u767d\u5bab&#034;, &#034;\u6587\u660c\u9601&#034;, &#034;\u4e1c\u5c71\u5bfa&#034;],<br \/>\n    &#034;\u5357\u5b81&#034;: [&#034;\u4e1c\u76df\u5546\u52a1\u533a&#034;, &#034;\u9752\u79c0\u5c71&#034;, &#034;\u4e09\u8857\u4e24\u5df7&#034;],<br \/>\n    &#034;\u5e38\u5dde&#034;: [&#034;\u73af\u7403\u6e2f&#034;, &#034;\u5929\u5b81\u5bfa&#034;, &#034;\u897f\u592a\u6e56&#034;],<br \/>\n    &#034;\u5357\u901a&#034;: [&#034;\u72fc\u5c71&#034;, &#034;\u4e2d\u5357\u57ce&#034;, &#034;\u5357\u901a\u5927\u5267\u9662&#034;],<br \/>\n    &#034;\u6cc9\u5dde&#034;: [&#034;\u5f00\u5143\u5bfa&#034;, &#034;\u897f\u8857&#034;, &#034;\u6d1b\u9633\u6865&#034;, &#034;\u87f3\u57d4&#034;],<br \/>\n    &#034;\u6f4d\u574a&#034;: [&#034;\u98ce\u7b5d\u535a\u7269\u9986&#034;, &#034;\u5341\u7b0f\u56ed&#034;, &#034;\u5bcc\u534e\u6e38\u4e50\u56ed&#034;],<br \/>\n    &#034;\u70df\u53f0&#034;: [&#034;\u70df\u53f0\u5c71\u706f\u5854&#034;, &#034;\u84ec\u83b1\u9601&#034;, &#034;\u517b\u9a6c\u5c9b&#034;],<br \/>\n    &#034;\u7ecd\u5174&#034;: [&#034;\u9c81\u8fc5\u6545\u91cc&#034;, &#034;\u6c88\u56ed&#034;, &#034;\u5170\u4ead&#034;, &#034;\u8fea\u8361\u6e56&#034;],<br \/>\n    &#034;\u5609\u5174&#034;: [&#034;\u5357\u6e56\u7ea2\u8239&#034;, &#034;\u4e4c\u9547&#034;, &#034;\u6708\u6cb3\u5386\u53f2\u8857\u533a&#034;],<br \/>\n    &#034;\u5f90\u5dde&#034;: [&#034;\u4e91\u9f99\u6e56&#034;, &#034;\u695a\u738b\u9675&#034;, &#034;\u6237\u90e8\u5c71&#034;],<br \/>\n    &#034;\u60e0\u5dde&#034;: [&#034;\u60e0\u5dde\u897f\u6e56&#034;, &#034;\u53cc\u6708\u6e7e&#034;, &#034;\u5408\u6c5f\u697c&#034;],<br \/>\n    &#034;\u73e0\u6d77&#034;: [&#034;\u6e14\u5973\u96d5\u50cf&#034;, &#034;\u65e5\u6708\u8d1d\u5927\u5267\u9662&#034;, &#034;\u6a2a\u7434\u957f\u9686&#034;],<br \/>\n    &#034;\u4e2d\u5c71&#034;: [&#034;\u4e2d\u5c71\u7eaa\u5ff5\u516c\u56ed&#034;, &#034;\u5c90\u6c5f\u6865&#034;, &#034;\u5174\u4e2d\u5e7f\u573a&#034;],<br \/>\n    &#034;\u4fdd\u5b9a&#034;: [&#034;\u53e4\u83b2\u82b1\u6c60&#034;, &#034;\u76f4\u96b6\u53e4\u7f72&#034;, &#034;\u4fdd\u5b9a\u535a\u7269\u9986&#034;],<br \/>\n    &#034;\u5170\u5dde&#034;: [&#034;\u4e2d\u5c71\u6865&#034;, &#034;\u767d\u5854\u5c71&#034;, &#034;\u9ec4\u6cb3\u6bcd\u4eb2\u96d5\u50cf&#034;],<br \/>\n    &#034;\u53f0\u5dde&#034;: [&#034;\u5929\u53f0\u5c71&#034;, &#034;\u6c5f\u5357\u957f\u57ce&#034;, &#034;\u4e1c\u8f89\u9601&#034;],<br \/>\n    &#034;\u6e29\u5dde&#034;: [&#034;\u6c5f\u5fc3\u5c7f&#034;, &#034;\u4e94\u9a6c\u8857&#034;, &#034;\u96c1\u8361\u5c71&#034;],<br \/>\n    &#034;\u4e4c\u9c81\u6728\u9f50&#034;: [&#034;\u56fd\u9645\u5927\u5df4\u624e&#034;, &#034;\u7ea2\u5c71\u516c\u56ed&#034;, &#034;\u4e2d\u5929\u5e7f\u573a&#034;],<br \/>\n    &#034;\u6d1b\u9633&#034;: [&#034;\u9f99\u95e8\u77f3\u7a9f&#034;, &#034;\u5e94\u5929\u95e8&#034;, &#034;\u660e\u5802\u5929\u5802&#034;, &#034;\u767d\u9a6c\u5bfa&#034;],<br \/>\n    &#034;\u8944\u9633&#034;: [&#034;\u5510\u57ce&#034;, &#034;\u53e4\u9686\u4e2d&#034;, &#034;\u8944\u9633\u53e4\u57ce\u5899&#034;],<br \/>\n    &#034;\u5b9c\u660c&#034;: [&#034;\u4e09\u5ce1\u666f\u533a&#034;, &#034;\u4e09\u5ce1\u4eba\u5bb6&#034;, &#034;\u897f\u9675\u5ce1&#034;],<br \/>\n    &#034;\u6ca7\u5dde&#034;: [&#034;\u94c1\u72ee\u5b50&#034;, &#034;\u5927\u8fd0\u6cb3\u535a\u7269\u9986&#034;],<br \/>\n    &#034;\u90af\u90f8&#034;: [&#034;\u4e1b\u53f0\u516c\u56ed&#034;, &#034;\u5e7f\u5e9c\u53e4\u57ce&#034;],<br \/>\n}<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# \u654f\u611f\u8bcd\u8fc7\u6ee4\u6620\u5c04 (AI \u751f\u56fe API \u5185\u5bb9\u5ba1\u6838\u767d\u540d\u5355)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nSENSITIVE_WORD_MAP &#061; {<br \/>\n    &#034;\u5929\u5b89\u95e8&#034;: &#034;\u5929\u5b89\u5e7f\u573a&#034;,<br \/>\n    &#034;\u6e21\u6c5f\u6218\u5f79&#034;: &#034;\u6e21\u6c5f&#034;,<br \/>\n    &#034;\u76f4\u96b6\u603b\u7763\u7f72&#034;: &#034;\u76f4\u96b6\u53e4\u7f72&#034;,<br \/>\n    &#034;\u4e09\u5ce1\u5927\u575d&#034;: &#034;\u4e09\u5ce1\u666f\u533a&#034;,<br \/>\n}<\/p>\n<p>def sanitize_prompt(text):<br \/>\n    &#034;&#034;&#034;\u8fc7\u6ee4\u654f\u611f\u8bcd&#xff0c;\u907f\u514d AI \u751f\u56fe API \u5185\u5bb9\u5ba1\u6838\u62e6\u622a&#034;&#034;&#034;<br \/>\n    for sensitive, safe in SENSITIVE_WORD_MAP.items():<br \/>\n        text &#061; text.replace(sensitive, safe)<br \/>\n    return text<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# \u57ce\u5e02\u7ecf\u7eac\u5ea6\u5b57\u5178 (\u7528\u4e8e Open-Meteo API)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nCITY_COORDS &#061; {<br \/>\n    &#034;\u5317\u4eac&#034;: (39.9042, 116.4074),<br \/>\n    &#034;\u4e0a\u6d77&#034;: (31.2304, 121.4737),<br \/>\n    &#034;\u5e7f\u5dde&#034;: (23.1291, 113.2644),<br \/>\n    &#034;\u6df1\u5733&#034;: (22.5431, 114.0579),<br \/>\n    &#034;\u6210\u90fd&#034;: (30.5728, 104.0668),<br \/>\n    &#034;\u91cd\u5e86&#034;: (29.5630, 106.5516),<br \/>\n    &#034;\u676d\u5dde&#034;: (30.2741, 120.1551),<br \/>\n    &#034;\u6b66\u6c49&#034;: (30.5928, 114.3055),<br \/>\n    &#034;\u897f\u5b89&#034;: (34.3416, 108.9398),<br \/>\n    &#034;\u5357\u4eac&#034;: (32.0603, 118.7969),<br \/>\n    &#034;\u5929\u6d25&#034;: (39.3434, 117.3616),<br \/>\n    &#034;\u82cf\u5dde&#034;: (31.2989, 120.5853),<br \/>\n    &#034;\u90d1\u5dde&#034;: (34.7466, 113.6253),<br \/>\n    &#034;\u957f\u6c99&#034;: (28.2282, 112.9388),<br \/>\n    &#034;\u4e1c\u839e&#034;: (23.0205, 113.7518),<br \/>\n    &#034;\u9752\u5c9b&#034;: (36.0671, 120.3826),<br \/>\n    &#034;\u6c88\u9633&#034;: (41.8057, 123.4315),<br \/>\n    &#034;\u5408\u80a5&#034;: (31.8206, 117.2272),<br \/>\n    &#034;\u4f5b\u5c71&#034;: (23.0218, 113.1219),<br \/>\n    &#034;\u5b81\u6ce2&#034;: (29.8683, 121.5440),<br \/>\n    &#034;\u6606\u660e&#034;: (25.0389, 102.7183),<br \/>\n    &#034;\u798f\u5dde&#034;: (26.0745, 119.2965),<br \/>\n    &#034;\u53a6\u95e8&#034;: (24.4798, 118.0894),<br \/>\n    &#034;\u54c8\u5c14\u6ee8&#034;: (45.8038, 126.5340),<br \/>\n    &#034;\u957f\u6625&#034;: (43.8171, 125.3235),<br \/>\n    &#034;\u77f3\u5bb6\u5e84&#034;: (38.0428, 114.5149),<br \/>\n    &#034;\u592a\u539f&#034;: (37.8706, 112.5489),<br \/>\n    &#034;\u8d35\u9633&#034;: (26.6470, 106.8426),<br \/>\n    &#034;\u5357\u5b81&#034;: (22.8170, 108.3665),<br \/>\n    &#034;\u5e38\u5dde&#034;: (31.8122, 119.9692),<br \/>\n    &#034;\u5357\u901a&#034;: (31.9932, 120.8985),<br \/>\n    &#034;\u6cc9\u5dde&#034;: (24.8740, 118.6757),<br \/>\n    &#034;\u6f4d\u574a&#034;: (36.7093, 119.1015),<br \/>\n    &#034;\u70df\u53f0&#034;: (37.4638, 121.4478),<br \/>\n    &#034;\u7ecd\u5174&#034;: (30.0003, 120.5820),<br \/>\n    &#034;\u5609\u5174&#034;: (30.7467, 120.7507),<br \/>\n    &#034;\u5f90\u5dde&#034;: (34.2044, 117.2808),<br \/>\n    &#034;\u60e0\u5dde&#034;: (23.1115, 114.4152),<br \/>\n    &#034;\u73e0\u6d77&#034;: (22.2711, 113.5767),<br \/>\n    &#034;\u4e2d\u5c71&#034;: (22.5228, 113.3826),<br \/>\n    &#034;\u4fdd\u5b9a&#034;: (38.8738, 115.4645),<br \/>\n    &#034;\u5170\u5dde&#034;: (36.0586, 103.8348),<br \/>\n    &#034;\u53f0\u5dde&#034;: (28.6569, 121.4209),<br \/>\n    &#034;\u6e29\u5dde&#034;: (28.0006, 120.6718),<br \/>\n    &#034;\u4e4c\u9c81\u6728\u9f50&#034;: (43.8256, 87.6168),<br \/>\n    &#034;\u6d1b\u9633&#034;: (34.6197, 112.4539),<br \/>\n    &#034;\u8944\u9633&#034;: (32.0400, 112.1352),<br \/>\n    &#034;\u5b9c\u660c&#034;: (30.7099, 111.2810),<br \/>\n    &#034;\u6ca7\u5dde&#034;: (38.3122, 116.8485),<br \/>\n    &#034;\u90af\u90f8&#034;: (36.6142, 114.5396),<br \/>\n}<\/p>\n<p># WMO \u5929\u6c14\u4ee3\u7801\u8f6c\u4e2d\u6587\u63cf\u8ff0<br \/>\nWEATHER_CODE_MAP &#061; {<br \/>\n    0: &#034;\u6674&#034;, 1: &#034;\u6674&#034;, 2: &#034;\u591a\u4e91&#034;, 3: &#034;\u9634&#034;,<br \/>\n    45: &#034;\u9634&#034;, 48: &#034;\u9634&#034;,<br \/>\n    51: &#034;\u5c0f\u96e8&#034;, 53: &#034;\u5c0f\u96e8&#034;, 55: &#034;\u5c0f\u96e8&#034;, 56: &#034;\u5c0f\u96e8&#034;, 57: &#034;\u5c0f\u96e8&#034;,<br \/>\n    61: &#034;\u5c0f\u96e8&#034;, 63: &#034;\u4e2d\u96e8&#034;, 65: &#034;\u5927\u96e8&#034;, 66: &#034;\u5c0f\u96e8&#034;, 67: &#034;\u5c0f\u96e8&#034;,<br \/>\n    71: &#034;\u5c0f\u96ea&#034;, 73: &#034;\u4e2d\u96ea&#034;, 75: &#034;\u5927\u96ea&#034;, 77: &#034;\u5c0f\u96ea&#034;,<br \/>\n    80: &#034;\u5c0f\u96e8&#034;, 81: &#034;\u4e2d\u96e8&#034;, 82: &#034;\u5927\u96e8&#034;,<br \/>\n    85: &#034;\u5c0f\u96ea&#034;, 86: &#034;\u4e2d\u96ea&#034;,<br \/>\n    95: &#034;\u9634&#034;, 96: &#034;\u5c0f\u96e8&#034;, 99: &#034;\u5c0f\u96e8&#034;,<br \/>\n}<\/p>\n<p># \u98ce\u5411\u89d2\u5ea6\u8f6c\u4e2d\u6587\u65b9\u5411<br \/>\nWIND_DIR_MAP &#061; [<br \/>\n    (11.25, &#034;\u5317&#034;), (33.75, &#034;\u4e1c\u5317&#034;), (56.25, &#034;\u4e1c&#034;), (78.75, &#034;\u4e1c\u5357&#034;),<br \/>\n    (101.25, &#034;\u5357&#034;), (123.75, &#034;\u897f\u5357&#034;), (146.25, &#034;\u897f&#034;), (168.75, &#034;\u897f\u5317&#034;),<br \/>\n    (180, &#034;\u5317&#034;),<br \/>\n]<\/p>\n<p>def deg_to_wind_dir(deg):<br \/>\n    for limit, direction in reversed(WIND_DIR_MAP):<br \/>\n        if deg &gt;&#061; limit:<br \/>\n            return direction<br \/>\n    return &#034;\u5317&#034;<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# WEATHER_EFFECT_MAP (AI\u7ed8\u753b\u5929\u6c14\u6548\u679c)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nWEATHER_EFFECT_MAP &#061; {<br \/>\n    &#034;\u6674&#034;: &#034;\u6674\u6717\u5fae\u7f29\u57ce\u5e02&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u9633\u5149\u659c\u5c04&#xff0c;\u5f3a\u70c8\u7684\u5149\u5f71\u5bf9\u6bd4&#xff0c;\u6a21\u578b\u6750\u8d28\u5448\u73b0\u6e29\u6696\u7684\u54d1\u5149\u5851\u6599\u8d28\u611f&#034;,<br \/>\n    &#034;\u591a\u4e91&#034;: &#034;\u591a\u4e91\u5fae\u7f29\u57ce\u5e02&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u67d4\u548c\u7684\u6563\u5c04\u5149&#xff0c;\u5929\u7a7a\u5e26\u6709\u7ec6\u817b\u7684\u6a21\u578b\u4e91\u6735&#xff0c;\u8272\u5f69\u6e05\u65b0\u6de1\u96c5&#034;,<br \/>\n    &#034;\u9634&#034;: &#034;\u9634\u5929\u5fae\u7f29\u57ce\u5e02&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u6f2b\u53cd\u5c04\u81ea\u7136\u5149&#xff0c;\u51b7\u8272\u8c03\u6a21\u578b\u6750\u8d28&#xff0c;\u5e26\u6709\u4e00\u70b9\u6e7f\u6da6\u7684\u54d1\u5149\u611f&#034;,<br \/>\n    &#034;\u5c0f\u96e8&#034;: &#034;\u5fae\u7f29\u57ce\u5e02\u4e0b\u7740\u5c0f\u96e8&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u6a21\u578b\u8def\u9762\u6709\u7ec6\u817b\u7684\u6c34\u6e0d\u53cd\u5149&#xff0c;\u6726\u80e7\u7684\u96e8\u96fe\u6c1b\u56f4&#034;,<br \/>\n    &#034;\u5927\u96e8&#034;: &#034;\u5fae\u7f29\u57ce\u5e02\u66b4\u96e8&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u96e8\u6ef4\u6e05\u6670\u53ef\u89c1&#xff0c;\u6a21\u578b\u5730\u9762\u79ef\u6c34\u53cd\u5149\u5f3a\u70c8&#xff0c;\u6e7f\u6da6\u7684\u7a7a\u6c14\u611f&#034;,<br \/>\n    &#034;\u96ea&#034;: &#034;\u5fae\u7f29\u57ce\u5e02\u96ea\u666f&#xff0c;\u5fae\u8ddd\u955c\u5934&#xff0c;\u6a21\u578b\u5c4b\u9876\u548c\u6811\u679d\u8986\u76d6\u7ec6\u817b\u8584\u96ea&#xff0c;\u67d4\u548c\u7684\u51b7\u8272\u5149\u7167&#xff0c;\u552f\u7f8e\u5b81\u9759&#034;,<br \/>\n}<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 2. \u83b7\u53d6\u5b9e\u65f6\u5929\u6c14 (Open-Meteo \u96f6\u914d\u7f6e\u7248)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef get_weather(city&#061;&#034;\u8d35\u9633&#034;):<br \/>\n    print(f&#034;[INFO] \u6b63\u5728\u901a\u8fc7 Open-Meteo \u83b7\u53d6 {city} \u7684\u5929\u6c14\u4fe1\u606f&#8230;&#034;)<\/p>\n<p>    # \u67e5\u627e\u57ce\u5e02\u7ecf\u7eac\u5ea6<br \/>\n    coords &#061; CITY_COORDS.get(city)<br \/>\n    if not coords:<br \/>\n        print(f&#034;[WARNING] \u672a\u627e\u5230\u57ce\u5e02 {city} \u7684\u7ecf\u7eac\u5ea6&#xff0c;\u5c1d\u8bd5\u4f7f\u7528\u9ed8\u8ba4\u5750\u6807&#034;)<br \/>\n        coords &#061; (26.6470, 106.8426)  # \u8d35\u9633\u9ed8\u8ba4<\/p>\n<p>    latitude, longitude &#061; coords<\/p>\n<p>    weather_url &#061; &#034;https:\/\/api.open-meteo.com\/v1\/forecast&#034;<br \/>\n    params &#061; {<br \/>\n        &#034;latitude&#034;: latitude,<br \/>\n        &#034;longitude&#034;: longitude,<br \/>\n        &#034;current_weather&#034;: &#034;true&#034;,<br \/>\n        &#034;timezone&#034;: &#034;Asia\/Shanghai&#034;,<br \/>\n    }<\/p>\n<p>    try:<br \/>\n        w_resp &#061; requests.get(weather_url, params&#061;params, timeout&#061;10)<br \/>\n        w_resp.raise_for_status()<br \/>\n        data &#061; w_resp.json()<\/p>\n<p>        cw &#061; data.get(&#034;current_weather&#034;, {})<br \/>\n        temp &#061; str(int(round(cw.get(&#034;temperature&#034;, 18))))<br \/>\n        windspeed &#061; cw.get(&#034;windspeed&#034;, 0)<br \/>\n        winddir &#061; cw.get(&#034;winddirection&#034;, 0)<br \/>\n        weathercode &#061; cw.get(&#034;weathercode&#034;, 3)<\/p>\n<p>        # \u5929\u6c14\u63cf\u8ff0<br \/>\n        weather_text &#061; WEATHER_CODE_MAP.get(weathercode, &#034;\u9634&#034;)<br \/>\n        # \u98ce\u5411<br \/>\n        wind_dir &#061; deg_to_wind_dir(winddir)<br \/>\n        wind_text &#061; f&#034;{wind_dir}\u98ce {windspeed}km\/h&#034;<\/p>\n<p>        return {<br \/>\n            &#034;city&#034;: city,<br \/>\n            &#034;weather&#034;: weather_text,<br \/>\n            &#034;temp&#034;: temp,<br \/>\n            &#034;wind&#034;: wind_text,<br \/>\n        }<br \/>\n    except Exception as e:<br \/>\n        print(f&#034;[ERROR] Open-Meteo \u5929\u6c14\u83b7\u53d6\u5931\u8d25: {e}&#034;)<\/p>\n<p>    # \u964d\u7ea7\u8fd4\u56de\u9ed8\u8ba4\u503c<br \/>\n    return {<br \/>\n        &#034;city&#034;: city,<br \/>\n        &#034;weather&#034;: &#034;\u591a\u4e91&#034;,<br \/>\n        &#034;temp&#034;: &#034;18&#034;,<br \/>\n        &#034;wind&#034;: &#034;\u65e0\u6301\u7eed\u98ce 2\u7ea7&#034;,<br \/>\n    }<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 3. \u52a8\u6001\u751f\u6210 AI \u7ed8\u753b Prompt<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef build_ai_image_prompt(weather_data):<br \/>\n    city &#061; weather_data[&#034;city&#034;]<br \/>\n    weather_cond &#061; weather_data[&#034;weather&#034;]<\/p>\n<p>    if city in LANDMARKS_DB:<br \/>\n        landmarks_list &#061; LANDMARKS_DB[city]<br \/>\n        landmarks_text &#061; &#034;\u3001&#034;.join(landmarks_list)<br \/>\n    else:<br \/>\n        landmarks_text &#061; f&#034;{city}\u57ce\u5e02\u5730\u6807&#034;<\/p>\n<p>    weather_effect &#061; WEATHER_EFFECT_MAP.get(<br \/>\n        weather_cond, &#034;\u5fae\u8ddd\u955c\u5934\u4e0b\u7684\u57ce\u5e02\u5fae\u7f29\u6a21\u578b&#034;<br \/>\n    )<\/p>\n<p>    prompt &#061; (<br \/>\n        f&#034;\u4ee5\u6e05\u6670\u768445\u5ea6\u4fef\u89c6\u89d2\u5ea6&#xff0c;\u5c55\u793a\u4e00\u4e2a\u7b49\u8ddd\u5fae\u7f29\u6a21\u578b\u573a\u666f\u3002&#034;<br \/>\n        f&#034;\u753b\u9762\u6bd4\u4f8b\u5fc5\u987b\u662f16:9\u6a2a\u5c4f\u5bbd\u5e45\u3002&#034;<br \/>\n        f&#034;\u753b\u9762\u5305\u542b&#xff1a;[{landmarks_text}]&#xff0c;\u6784\u56fe\u5c45\u4e2d\u3002&#034;<br \/>\n        f&#034;\u573a\u666f\u4e2d\u5de7\u5999\u878d\u5408 [{weather_effect}] \u6548\u679c&#xff0c;\u6c1b\u56f4\u67d4\u548c&#xff0c;\u5448\u73b0\u57ce\u5e02\u4e0e\u5929\u6c14\u7684\u81ea\u7136\u4e92\u52a8\u611f\u3002&#034;<br \/>\n        f&#034;\u4f7f\u7528\u57fa\u4e8e\u7269\u7406\u7684\u771f\u5b9e\u6e32\u67d3&#xff08;PBR&#xff09;\u548c\u903c\u771f\u7684\u5149\u7167\u6548\u679c&#xff0c;\u642d\u914d\u7eaf\u8272\u80cc\u666f&#xff0c;\u6574\u4f53\u753b\u9762\u6e05\u6670\u7b80\u6d01\u3002&#034;<br \/>\n        f&#034;\u753b\u9762\u4e2d\u4e0d\u8981\u51fa\u73b0\u4efb\u4f55\u6587\u5b57\u3002&#034;<br \/>\n    )<br \/>\n    # \u8fc7\u6ee4\u654f\u611f\u8bcd&#xff0c;\u907f\u514d AI \u751f\u56fe API \u5185\u5bb9\u5ba1\u6838\u62e6\u622a<br \/>\n    prompt &#061; sanitize_prompt(prompt)<\/p>\n<p>    # \u3010\u8c03\u8bd5\u7528\u3011\u6253\u5370\u5b9e\u9645\u53d1\u9001\u7ed9AI\u7684prompt&#xff0c;\u65b9\u4fbf\u6392\u67e5\u7eff\u7f51\u62e6\u622a\u95ee\u9898<br \/>\n    print(f&#034;[DEBUG] \u5b9e\u9645\u53d1\u9001\u7684AI\u7ed8\u753bPrompt: {prompt}&#034;)<\/p>\n<p>    return prompt<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 4. \u8c03\u7528 Qwen-Image \u751f\u6210\u56fe\u7247 (\u9002\u914d\u767e\u70bcAPI)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef gen_image(prompt):<br \/>\n    # \u83b7\u53d6\u73af\u5883\u53d8\u91cf<br \/>\n    api_key &#061; os.environ.get(&#034;DASHSCOPE_API_KEY&#034;, &#034;&#034;)<br \/>\n    base_url &#061; os.environ.get(&#034;DASHSCOPE_BASE_URL&#034;, &#034;https:\/\/dashscope.aliyuncs.com&#034;)<\/p>\n<p>    if not api_key:<br \/>\n        print(&#034;[ERROR] \u7f3a\u5c11 DASHSCOPE_API_KEY \u73af\u5883\u53d8\u91cf&#034;)<br \/>\n        return None<\/p>\n<p>    # \u4f7f\u7528 multimodal-generation \u63a5\u53e3<br \/>\n    url &#061; f&#034;{base_url}\/api\/v1\/services\/aigc\/multimodal-generation\/generation&#034;<\/p>\n<p>    headers &#061; {<br \/>\n        &#034;Content-Type&#034;: &#034;application\/json&#034;,<br \/>\n        &#034;Authorization&#034;: f&#034;Bearer {api_key}&#034;<br \/>\n    }<\/p>\n<p>    payload &#061; {<br \/>\n        &#034;model&#034;: &#034;qwen-image-2.1-pro&#034;,<br \/>\n        &#034;input&#034;: {<br \/>\n            &#034;messages&#034;: [<br \/>\n                {<br \/>\n                    &#034;role&#034;: &#034;user&#034;,<br \/>\n                    &#034;content&#034;: [<br \/>\n                        {<br \/>\n                            &#034;text&#034;: prompt<br \/>\n                        }<br \/>\n                    ]<br \/>\n                }<br \/>\n            ]<br \/>\n        },<br \/>\n        &#034;parameters&#034;: {<br \/>\n            &#034;prompt_extend&#034;: True,<br \/>\n            &#034;size&#034;: &#034;1280*720&#034;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    print(f&#034;[INFO] \u6b63\u5728\u8c03\u7528 qwen-image-2.1-pro \u751f\u6210\u5fae\u7f29\u6a21\u578b\u63d2\u753b&#8230;&#034;)<br \/>\n    print(f&#034;[INFO] API\u5730\u5740: {url}&#034;)<\/p>\n<p>    try:<br \/>\n        resp &#061; requests.post(url, headers&#061;headers, json&#061;payload, timeout&#061;120)<br \/>\n        print(f&#034;[INFO] \u54cd\u5e94\u72b6\u6001\u7801: {resp.status_code}&#034;)<br \/>\n        print(f&#034;[INFO] \u54cd\u5e94\u5185\u5bb9: {resp.text[:800]}&#034;)<\/p>\n<p>        result &#061; resp.json()<\/p>\n<p>        # \u63d0\u53d6\u56fe\u7247URL<br \/>\n        img_url &#061; None<\/p>\n<p>        # \u683c\u5f0f: output.choices[0].message.content[0].image<br \/>\n        try:<br \/>\n            choices &#061; result.get(&#034;output&#034;, {}).get(&#034;choices&#034;, [])<br \/>\n            if choices:<br \/>\n                content_list &#061; choices[0].get(&#034;message&#034;, {}).get(&#034;content&#034;, [])<br \/>\n                for item in content_list:<br \/>\n                    if item.get(&#034;image&#034;):<br \/>\n                        img_url &#061; item[&#034;image&#034;]<br \/>\n                        break<br \/>\n        except Exception:<br \/>\n            pass<\/p>\n<p>        # \u5907\u7528\u683c\u5f0f<br \/>\n        if not img_url:<br \/>\n            try:<br \/>\n                choices &#061; result.get(&#034;output&#034;, {}).get(&#034;choices&#034;, [])<br \/>\n                if choices:<br \/>\n                    content_list &#061; choices[0].get(&#034;message&#034;, {}).get(&#034;content&#034;, [])<br \/>\n                    for item in content_list:<br \/>\n                        if item.get(&#034;image_url&#034;):<br \/>\n                            img_url &#061; item[&#034;image_url&#034;]<br \/>\n                            break<br \/>\n            except Exception:<br \/>\n                pass<\/p>\n<p>        if img_url:<br \/>\n            print(f&#034;[INFO] \u83b7\u53d6\u5230\u56fe\u7247URL: {img_url[:80]}&#8230;&#034;)<br \/>\n            r &#061; requests.get(img_url, timeout&#061;30)<br \/>\n            local_path &#061; &#034;\/tmp\/weather_bg.png&#034;<br \/>\n            with open(local_path, &#034;wb&#034;) as f:<br \/>\n                f.write(r.content)<br \/>\n            print(f&#034;[SUCCESS] \u56fe\u7247\u5df2\u751f\u6210\u5e76\u4fdd\u5b58: {local_path}&#034;)<br \/>\n            return local_path<br \/>\n        else:<br \/>\n            print(f&#034;[ERROR] \u672a\u80fd\u4ece\u54cd\u5e94\u4e2d\u63d0\u53d6\u56fe\u7247URL&#034;)<br \/>\n            print(f&#034;[ERROR] \u5b8c\u6574\u54cd\u5e94: {result}&#034;)<\/p>\n<p>    except requests.exceptions.Timeout:<br \/>\n        print(&#034;[ERROR] \u8bf7\u6c42\u8d85\u65f6&#xff0c;AI\u751f\u6210\u53ef\u80fd\u9700\u8981\u8f83\u957f\u65f6\u95f4&#034;)<br \/>\n    except Exception as e:<br \/>\n        print(f&#034;[ERROR] AI\u751f\u56fe\u5f02\u5e38: {e}&#034;)<\/p>\n<p>    return None<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 5. Python \u81ea\u52a8\u53e0\u52a0\u5929\u6c14\u6587\u5b57\u6392\u7248 (\u900f\u660e\u65e0\u80cc\u666f\u7248)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef add_text_to_image(image_path, weather_data):<br \/>\n    # \u4e0d\u5728\u56fe\u7247\u4e0a\u53e0\u52a0\u6587\u5b57&#xff0c;\u76f4\u63a5\u8fd4\u56de\u539f\u56fe<br \/>\n    print(&#034;[INFO] \u8df3\u8fc7\u56fe\u7247\u6587\u5b57\u53e0\u52a0&#xff0c;\u4f7f\u7528\u7eafAI\u753b\u9762&#034;)<br \/>\n    return image_path<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 6. \u4e0a\u4f20 OSS &amp; \u63a8\u9001\u9489\u9489<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef send_to_dingtalk(local_path, weather_data):<br \/>\n    try:<br \/>\n        # 1. \u538b\u7f29\u56fe\u7247\u5927\u5c0f<br \/>\n        img &#061; Image.open(local_path)<br \/>\n        w, h &#061; img.size<br \/>\n        max_width &#061; 1200<br \/>\n        if w &gt; max_width:<br \/>\n            ratio &#061; max_width \/ float(w)<br \/>\n            new_w &#061; max_width<br \/>\n            new_h &#061; int(h * ratio)<br \/>\n            img &#061; img.resize((new_w, new_h), Image.LANCZOS)<br \/>\n            print(f&#034;[INFO] \u56fe\u7247\u5df2\u538b\u7f29\u81f3 {new_w}x{new_h}&#034;)<br \/>\n        # \u4fdd\u5b58\u538b\u7f29\u540e\u7684\u56fe\u7247<br \/>\n        small_path &#061; &#034;\/tmp\/weather_final_small.png&#034;<br \/>\n        img.save(small_path, optimize&#061;True)<br \/>\n        print(f&#034;[INFO] \u538b\u7f29\u540e\u56fe\u7247\u5927\u5c0f: {os.path.getsize(small_path) \/ 1024:.0f} KB&#034;)<br \/>\n    except Exception as e:<br \/>\n        print(f&#034;[WARNING] \u56fe\u7247\u538b\u7f29\u5931\u8d25&#xff0c;\u5c1d\u8bd5\u4e0a\u4f20\u539f\u56fe: {e}&#034;)<br \/>\n        small_path &#061; local_path<\/p>\n<p>    # 2. \u4e0a\u4f20\u5230 OSS<br \/>\n    oss_auth &#061; oss2.Auth(<br \/>\n        os.environ.get(&#034;OSS_ACCESS_KEY_ID&#034;, &#034;YOUR_OSS_KEY_ID&#034;),<br \/>\n        os.environ.get(&#034;OSS_ACCESS_KEY_SECRET&#034;, &#034;YOUR_OSS_KEY_SECRET&#034;),<br \/>\n    )<br \/>\n    bucket_name &#061; os.environ.get(&#034;OSS_BUCKET&#034;, &#034;your-bucket-name&#034;)<br \/>\n    endpoint &#061; os.environ.get(&#034;OSS_ENDPOINT&#034;, &#034;oss-cn-xxx-internal.aliyuncs.com&#034;)<br \/>\n    public_endpoint &#061; endpoint.replace(&#034;-internal&#034;, &#034;&#034;)<\/p>\n<p>    bucket &#061; oss2.Bucket(<br \/>\n        oss_auth,<br \/>\n        public_endpoint,<br \/>\n        bucket_name<br \/>\n    )<\/p>\n<p>    oss_key &#061; f&#034;weather{date.today().strftime(&#039;%Y%m%d&#039;)}_{int(time.time())}.png&#034;<\/p>\n<p>    # \u3010\u5173\u952e\u4fee\u6539\u3011\u4e0a\u4f20\u65f6\u8bbe\u7f6e\u8be5\u6587\u4ef6\u4e3a&#034;\u516c\u5171\u8bfb&#034;\u6743\u9650<br \/>\n    bucket.put_object_from_file(<br \/>\n        oss_key, small_path,<br \/>\n        headers&#061;{&#039;x-oss-object-acl&#039;: &#039;public-read&#039;}<br \/>\n    )<\/p>\n<p>    # 3. \u62fc\u63a5\u516c\u7f51\u8bbf\u95ee URL<br \/>\n    img_url &#061; f&#034;https:\/\/{bucket_name}.{public_endpoint}\/{oss_key}&#034;<br \/>\n    print(f&#034;[INFO] OSS \u516c\u7f51\u5730\u5740: {img_url}&#034;)<\/p>\n<p>    # 4. \u751f\u6210\u9489\u9489\u7b7e\u540d<br \/>\n    webhook &#061; os.environ.get(&#034;DING_WEBHOOK&#034;, &#034;YOUR_DINGTALK_WEBHOOK&#034;)<br \/>\n    secret &#061; os.environ.get(&#034;DING_WEBHOOK_SECRET&#034;, &#034;YOUR_DINGTALK_SECRET&#034;)<\/p>\n<p>    ts &#061; str(round(time.time() * 1000))<br \/>\n    hmac_code &#061; hmac.HMAC(<br \/>\n        secret.encode(&#034;utf-8&#034;),<br \/>\n        (ts &#043; &#034;\\\\n&#034; &#043; secret).encode(&#034;utf-8&#034;),<br \/>\n        digestmod&#061;hashlib.sha256,<br \/>\n    ).digest()<br \/>\n    sign &#061; urllib.parse.quote_plus(base64.b64encode(hmac_code))<br \/>\n    send_url &#061; f&#034;{webhook}&amp;timestamp&#061;{ts}&amp;sign&#061;{sign}&#034;<\/p>\n<p>    # 5. \u4f7f\u7528 &#034;markdown&#034; \u683c\u5f0f\u53d1\u9001\u6d88\u606f&#xff08;\u56fe\u7247\u76f4\u63a5\u5728\u7fa4\u91cc\u5c55\u793a&#xff09;<br \/>\n    payload &#061; {<br \/>\n        &#034;msgtype&#034;: &#034;markdown&#034;,<br \/>\n        &#034;markdown&#034;: {<br \/>\n            &#034;title&#034;: f&#034;{weather_data[&#039;city&#039;]} \u5b9e\u65f6\u5929\u6c14&#034;,<br \/>\n            &#034;text&#034;: f&#034;![]({img_url})&#034; &#043; &#034;\\\\n\\\\n&#034;<br \/>\n                    f&#034;{weather_data[&#039;city&#039;]} {weather_data[&#039;weather&#039;]} {weather_data[&#039;temp&#039;]}\u2103  {weather_data[&#039;wind&#039;]}&#034;<br \/>\n        },<br \/>\n    }<\/p>\n<p>    # \u3010\u8c03\u8bd5\u3011\u6253\u5370\u5173\u952e\u53c2\u6570<br \/>\n    print(f&#034;[DEBUG] \u9489\u9489webhook\u524d\u7f00: {webhook[:50]}&#8230;&#034;)<br \/>\n    print(f&#034;[DEBUG] \u9489\u9489secret\u957f\u5ea6: {len(secret)}&#034;)<br \/>\n    print(f&#034;[DEBUG] \u7b7e\u540dtimestamp: {ts}&#034;)<br \/>\n    print(f&#034;[DEBUG] \u7b7e\u540dsign\u524d30\u5b57\u7b26: {sign[:30]}&#8230;&#034;)<br \/>\n    print(f&#034;[DEBUG] \u5b8c\u6574\u53d1\u9001URL: {send_url[:80]}&#8230;&#034;)<br \/>\n    print(f&#034;[DEBUG] \u63a8\u9001payload: {payload}&#034;)<\/p>\n<p>    r &#061; requests.post(send_url, json&#061;payload, timeout&#061;10)<br \/>\n    result &#061; r.json()<br \/>\n    print(<br \/>\n        &#034;[SUCCESS] \u9489\u9489\u63a8\u9001\u6210\u529f&#034;<br \/>\n        if result.get(&#034;errcode&#034;) &#061;&#061; 0<br \/>\n        else f&#034;[ERROR] \u9489\u9489\u63a8\u9001\u5931\u8d25: {result}&#034;<br \/>\n    )<\/p>\n<p># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n# 7. FC \u5165\u53e3\u51fd\u6570 (\u4e3b\u6d41\u7a0b)<br \/>\n# &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\ndef handler(event, context):<br \/>\n    try:<br \/>\n        target_city &#061; os.environ.get(&#034;CITY&#034;, &#034;\u8d35\u9633&#034;)<\/p>\n<p>        if isinstance(event, dict) and event.get(&#034;city&#034;):<br \/>\n            target_city &#061; event[&#034;city&#034;]<\/p>\n<p>        weather_data &#061; get_weather(target_city)<br \/>\n        print(f&#034;[INFO] \u6b63\u5728\u4e3a {weather_data[&#039;city&#039;]} \u751f\u6210\u6a2a\u5c4f\u5929\u6c14\u6d77\u62a5&#8230;&#034;)<\/p>\n<p>        prompt &#061; build_ai_image_prompt(weather_data)<\/p>\n<p>        bg_path &#061; gen_image(prompt)<br \/>\n        if not bg_path:<br \/>\n            raise Exception(&#034;AI\u751f\u56fe\u5931\u8d25&#034;)<\/p>\n<p>        final_path &#061; add_text_to_image(bg_path, weather_data)<br \/>\n        send_to_dingtalk(final_path, weather_data)<\/p>\n<p>        return {<br \/>\n            &#034;code&#034;: 200,<br \/>\n            &#034;msg&#034;: f&#034;\u5df2\u6210\u529f\u63a8\u9001 {weather_data[&#039;city&#039;]} \u7684\u6a2a\u5c4f\u5929\u6c14\u6d77\u62a5&#034;,<br \/>\n        }<br \/>\n    except Exception as e:<br \/>\n        print(f&#034;[FATAL ERROR]: {e}&#034;)<br \/>\n        return {&#034;code&#034;: 500, &#034;msg&#034;: str(e)}<\/p>\n<h5 id=\"akZfP\">3.4 \u66f4\u6362\u5730\u6807\u5b57\u5178<\/h5>\n<p>LANDMARKS_DB &#061; {<br \/>\n    &#034;\u8d35\u9633&#034;: [&#034;\u9ed4\u7075\u5c71&#034;, &#034;\u7532\u79c0\u697c&#034;, &#034;\u53cc\u5b50\u5854&#034;, &#034;\u82b1\u679c\u56ed\u767d\u5bab&#034;, &#034;\u6587\u660c\u9601&#034;, &#034;\u4e1c\u5c71\u5bfa&#034;],<br \/>\n}<\/p>\n<h4 id=\"yKTiX\">\u56db\u3001FC \u63a7\u5236\u53f0<\/h4>\n<h5 id=\"LwoCK\">4.1 \u600e\u4e48\u64cd\u4f5c<\/h5>\n<p id=\"u6982cb8a\">\u5730\u5740&#xff1a;https:\/\/free.aliyun.com\/?spm&#061;5176.30385154.J_RIoiIhIPOvZIGUchbo3zM.2.24c76381i3MmYr&amp;productCode&#061;fc<\/p>\n<p id=\"u97921c9a\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"787\" id=\"r9B5i\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021814-6ac308e626f4f.png\" width=\"1525\" \/><\/p>\n<p id=\"u3322f780\">\u6253\u5f00 FC \u63a7\u5236\u53f0\u5730\u5740&#xff1a;https:\/\/fcnext.console.aliyun.com\/cn-hangzhou\/sandbox-instances<\/p>\n<p id=\"uc4683d6c\">\u300c\u4e91\u51fd\u6570\u300d \u6807\u7b7e\u9875<\/p>\n<p id=\"ud5c79a43\">\u70b9\u51fb\u9875\u9762\u5de6\u4e0a\u89d2\u7684\u90a3\u4e2a\u84dd\u8272\u7684 \u300c\u521b\u5efa\u51fd\u6570\u300d \u6309\u94ae\u3002<\/p>\n<p id=\"u545673d2\">\u70b9\u8fdb\u53bb\u4e4b\u540e&#xff0c;\u9009\u62e9 \u201c\u521b\u5efa\u4e8b\u4ef6\u51fd\u6570\u201d\u3002<\/p>\n<p id=\"ubed8d8c3\">\u628a\u201c\u51fd\u6570\u540d\u79f0\u201d\u968f\u4fbf\u586b\u4e00\u4e2a&#xff0c;\u6bd4\u5982\u53eb weather-push\u3002<\/p>\n<p id=\"ueec56e06\">\u8fd0\u884c\u73af\u5883\u9009\u62e9 Python 3.10\u3002<\/p>\n<p id=\"ucf1e607e\">\u7801\u4e0a\u4f20\u65b9\u5f0f&#xff1a;\u9ed8\u8ba4\u9009\u201c\u4f7f\u7528\u793a\u4f8b\u4ee3\u7801\u201d\u5c31\u884c&#xff0c;\u6211\u4eec\u5148\u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u51fd\u6570&#xff0c;\u4ee3\u7801\u56de\u5934\u518d\u7c98\u8d34\u8fdb\u53bb\u3002<\/p>\n<p id=\"u4d66fc0e\">\u8bf7\u6c42\u5904\u7406\u7a0b\u5e8f&#xff1a;index.handler \u8fd9\u4e2a\u4e0d\u7528\u52a8&#xff0c;\u6b63\u597d\u5bf9\u5e94\u6211\u4eec Python \u4ee3\u7801\u7684\u5165\u53e3\u3002<\/p>\n<p id=\"u27950d0e\">\u6267\u884c\u8d85\u65f6\u65f6\u95f4&#xff1a; 300\u79d2<\/p>\n<p id=\"u67b6d62c\">\u70b9\u51fb\u5e95\u90e8\u7684 \u201c\u521b\u5efa\u201d\u3002<\/p>\n<p id=\"ube277b17\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"652\" id=\"qBV68\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021814-6ac308e67a046.png\" width=\"1687\" \/><\/p>\n<p id=\"ude31117b\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"698\" id=\"FcKQu\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021814-6ac308e6ecb4f.png\" width=\"1871\" \/><\/p>\n<p id=\"uc73571aa\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"801\" id=\"TvnNw\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021815-6ac308e7689ec.png\" width=\"1750\" \/><\/p>\n<p id=\"ue9013919\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"961\" id=\"NbjBD\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021815-6ac308e7e8886.png\" width=\"1880\" \/><\/p>\n<p id=\"u4c334fb5\">\u627e\u5230\u4ee3\u7801\u7f16\u8f91\u5668\u4e0a\u65b9\u7684\u6807\u7b7e\u9875&#xff08;\u5c31\u5728\u6587\u4ef6\u5217\u8868 index.py \u65c1\u8fb9&#xff09;&#xff0c;\u70b9\u51fb\u6253\u5f00 index.py \u6587\u4ef6\u3002<\/p>\n<p id=\"u9e3c0d04\">\u5168\u9009 index.py \u91cc\u7684\u6240\u6709\u4ee3\u7801&#xff0c;\u5e76\u5220\u9664\u6389\u3002<\/p>\n<p id=\"u7bda4a50\">\u628a\u4e4b\u524d\u51c6\u5907\u597d\u7684\u90a3\u6bb5\u5b8c\u6574\u7684\u5929\u6c14\u63a8\u9001\u4ee3\u7801&#xff0c;\u590d\u5236\u5e76\u7c98\u8d34\u5230\u8fd9\u4e2a\u7a7a\u767d\u533a\u57df\u91cc\u3002<\/p>\n<p id=\"u7c553a8a\">\u7c98\u8d34\u5b8c\u540e&#xff0c;\u70b9\u51fb\u4ee3\u7801\u7f16\u8f91\u5668\u4e0a\u65b9&#xff08;\u5927\u6982\u5728\u201c\u4e0a\u4f20\u4ee3\u7801\u201d\u6309\u94ae\u65c1\u8fb9&#xff09;\u7684 \u300c\u90e8\u7f72\u4ee3\u7801\u300d \u6309\u94ae\u3002<\/p>\n<p id=\"u2aa332fc\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"758\" id=\"FYKIm\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021816-6ac308e88f716.png\" width=\"1802\" \/><\/p>\n<p id=\"ud3dfbf34\">\u627e\u5230\u9875\u9762\u7684\u53f3\u4e0a\u89d2&#xff0c;\u70b9\u51fb\u90a3\u4e2a\u914d\u7f6e&#xff0c;\u9ad8\u7ea7\u914d\u7f6e &#8211; -&gt; \u300c\u7f16\u8f91\u5c42\u300d<\/p>\n<p id=\"u2504a261\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"941\" id=\"AOeON\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021817-6ac308e91c34c.png\" width=\"1797\" \/><\/p>\n<p id=\"u28a6e87a\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"888\" id=\"n9qY0\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021817-6ac308e9c0908.png\" width=\"1905\" \/><\/p>\n<p id=\"udfa7a374\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"498\" id=\"q8g6m\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021818-6ac308ea9601f.png\" width=\"1797\" \/><\/p>\n<p id=\"u97dbd98d\">\u70b9\u51fb\u6dfb\u52a0&#xff08;\u5b98\u65b9\u516c\u5171\u5c42&#xff09;<\/p>\n<p>Python 3.10 OSS<br \/>\nPandas 2<\/p>\n<p id=\"uc7521bed\">Python 3.10 OSS&#xff1a;OSS \u662f\u201c\u5bf9\u8c61\u5b58\u50a8\u670d\u52a1\u201d&#xff0c;Python 3.10 OSS \u8fd9\u4e2a\u5de5\u5177\u5305\u91cc\u9762&#xff0c;\u5df2\u7ecf\u88c5\u597d\u4e86\u8ba9 Python \u8bed\u8a00&#xff08;3.10\u7248\u672c&#xff09;\u53bb\u8fde\u63a5\u548c\u8bfb\u5199\u8fd9\u4e2a U\u76d8\u7684\u5fc5\u8981\u5e93&#xff08;\u6bd4\u5982\u6211\u4eec\u4ee3\u7801\u91cc\u7684 oss2 \u5e93&#xff09;\u3002<\/p>\n<p id=\"u7a5466b6\">Pandas 2 \u662f\u56e0\u4e3a Pandas \u5305\u6bd4\u8f83\u5927&#xff0c;\u91cc\u9762\u987a\u5e26\u585e\u4e86\u5f88\u591a\u5176\u4ed6\u7684\u7cfb\u7edf\u57fa\u7840\u4f9d\u8d56\u5e93\u3002<\/p>\n<p id=\"u357e92a3\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"212\" id=\"L8qvF\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021818-6ac308eae8037.png\" width=\"1851\" \/><\/p>\n<h5 id=\"ktfwQ\">4.2 FC \u73af\u5883\u53d8\u91cf\u914d\u7f6e\u8868<\/h5>\n<p id=\"u63951233\">\u627e\u5230\u9875\u9762\u7684\u53f3\u4e0a\u89d2&#xff0c;\u70b9\u51fb\u90a3\u4e2a\u914d\u7f6e&#xff0c;\u9ad8\u7ea7\u914d\u7f6e &#8211; -&gt; \u300c\u7f16\u8f91\u73af\u5883\u53d8\u91cf\u300d<\/p>\n<p id=\"u0c7f3b53\">\u5728\u300c\u73af\u5883\u53d8\u91cf\u300d\u533a\u57df&#xff0c;\u70b9\u51fb \u300c&#043; \u6dfb\u52a0\u53d8\u91cf\u300d<\/p>\n<p id=\"u776b406c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"927\" id=\"f7GF7\" src=\"2026-10-05m3gbnvtjn23.png\" width=\"1869\" \/><\/p>\n<p id=\"u3acf1ed7\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"918\" id=\"SRm9U\" src=\"2026-10-05ahnl0b3atj4.png\" width=\"1911\" \/><\/p>\n<p id=\"u0349374c\">FC \u73af\u5883\u53d8\u91cf&#xff0c;\u76f4\u63a5\u5728 FC \u63a7\u5236\u53f0\u7684\u73af\u5883\u53d8\u91cf\u9875\u9762\u914d\u7f6e\u5c31\u884c\u3002<\/p>\n<table id=\"YEWnN\">\n<tbody>\n<tr>\n<td>\n<p id=\"uca1ac422\">\u73af\u5883\u53d8\u91cf Key<\/p>\n<\/td>\n<td>\n<p id=\"u0876b150\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u80a22ffb\">DASHSCOPE_API_KEY<\/p>\n<\/td>\n<td>\n<p id=\"ub2dac384\">\u767e\u70bc API Key<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ub4be9297\">OSS_ACCESS_KEY_ID<\/p>\n<\/td>\n<td>\n<p id=\"u3676f18c\">OSS AccessKey ID<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ufb43fc96\">OSS_ACCESS_KEY_SECRET<\/p>\n<\/td>\n<td>\n<p id=\"u743a7dc6\">OSS AccessKey Secret<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u2985ae1c\">OSS_ENDPOINT<\/p>\n<\/td>\n<td>\n<p id=\"uf60e1330\">OSS Endpoint&#xff08;\u5982 oss-cn-hangzhou-internal.aliyuncs.com<\/p>\n<p id=\"u4fdd4244\">&#xff09;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u2aa4249d\">OSS_BUCKET<\/p>\n<\/td>\n<td>\n<p id=\"ubab1fa04\">Bucket \u540d\u79f0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ufc4c7f99\">DING_WEBHOOK<\/p>\n<\/td>\n<td>\n<p id=\"u0fd4f346\">\u9489\u9489\u673a\u5668\u4eba Webhook<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u279e5819\">DING_WEBHOOK_SECRET<\/p>\n<\/td>\n<td>\n<p id=\"u74e90fd0\">\u9489\u9489\u673a\u5668\u4eba\u52a0\u7b7e Secret&#xff08;\u6ca1\u5f00\u7b7e\u540d\u9a8c\u8bc1\u53ef\u7559\u7a7a&#xff09;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uf40ce9c0\">CITY<\/p>\n<\/td>\n<td>\n<p id=\"ua5341789\">\u67e5\u8be2\u57ce\u5e02&#xff08;\u5e7f\u5dde&#xff09;\u7b49<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5 id=\"Vtssl\">4.3 \u66f4\u6362\u57ce\u5e02\u65b9\u5f0f<\/h5>\n<p id=\"u3ec99825\">\u63a8\u8350\u65b9\u5f0f&#xff1a;FC \u73af\u5883\u53d8\u91cf \u2014 \u5728\u4e91\u51fd\u6570\u8ba1\u7b97\u63a7\u5236\u53f0&#xff0c;\u627e\u5230\u4f60\u7684\u51fd\u6570 \u2192 \u914d\u7f6e \u2192 \u73af\u5883\u53d8\u91cf&#xff0c;\u628a CITY \u7684\u503c\u6539\u6210\u4f60\u60f3\u67e5\u7684\u57ce\u5e02&#xff08;\u6bd4\u5982 \u5e7f\u5dde\u3001\u4e0a\u6d77&#xff09;\u3002\u8fd9\u6837\u6bcf\u6b21\u5b9a\u65f6\u89e6\u53d1\u5c31\u81ea\u52a8\u67e5\u65b0\u57ce\u5e02\u7684\u5929\u6c14\u4e86\u3002<\/p>\n<p id=\"ud38e9ee2\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"897\" id=\"Gvk6Q\" src=\"2026-10-05nxgs1yzz4zf.png\" width=\"1910\" \/><\/p>\n<h5 id=\"YTfOf\">4.4 \u83b7\u53d6OSS AccessKey ID \u4e0e OSS AccessKey Secret<\/h5>\n<p id=\"u8a863f32\">\u8fdb\u5165\u7ba1\u7406\u9875\u9762&#xff1a;\u5728\u7f51\u9875\u53f3\u4e0a\u89d2&#xff0c;\u628a\u4f60\u7684\u9f20\u6807\u79fb\u5230\u4f60\u7684\u5934\u50cf\u4e0a&#xff0c;\u5728\u5f39\u51fa\u7684\u83dc\u5355\u91cc\u70b9\u51fb \u300cAccessKey \u7ba1\u7406\u300d\u3002<\/p>\n<p id=\"u443beefe\">\u786e\u8ba4\u521b\u5efa&#xff1a;\u7cfb\u7edf\u53ef\u80fd\u4f1a\u5f39\u51fa\u4e00\u4e2a\u63d0\u793a\u6846\u544a\u8bc9\u4f60\u8fd9\u5f88\u5371\u9669&#xff0c;\u70b9\u51fb\u300c\u7ee7\u7eed\u4f7f\u7528 AccessKey\u300d&#xff08;\u6216\u8005\u52fe\u9009\u201c\u6211\u786e\u8ba4\u77e5\u6653\u5b89\u5168\u98ce\u9669\u201d\u540e\u7ee7\u7eed&#xff09;\u3002<\/p>\n<p id=\"ub0d1b939\">\u521b\u5efa\u65b0\u94a5\u5319&#xff1a;\u70b9\u51fb\u9875\u9762\u4e0a\u7684 \u300c\u521b\u5efa AccessKey\u300d \u84dd\u8272\u6309\u94ae&#xff0c;\u7136\u540e\u6839\u636e\u63d0\u793a\u5b8c\u6210\u4e00\u4e0b\u624b\u673a\u6216\u90ae\u7bb1\u7684\u77ed\u4fe1\u9a8c\u8bc1\u3002<\/p>\n<p id=\"u0790bba4\">\u590d\u5236\u5e76\u4fdd\u5b58&#xff1a;\u9a8c\u8bc1\u901a\u8fc7\u540e&#xff0c;\u5c4f\u5e55\u4e0a\u4f1a\u76f4\u63a5\u663e\u793a\u4f60\u7684 AccessKey ID \u548c AccessKey Secret\u3002<\/p>\n<p id=\"u4bed91f8\">\u628a AccessKey ID \u590d\u5236&#xff0c;\u586b\u5165\u914d\u7f6e\u9875\u9762\u7684\u201c\u503c\u201d\u91cc\u9762\u3002<\/p>\n<p id=\"u5b5ab126\">\u628a AccessKey Secret \u590d\u5236&#xff0c;\u586b\u5165\u5bf9\u5e94\u7684\u201c\u503c\u201d\u91cc\u9762\u3002<\/p>\n<p id=\"ue4f47eec\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"372\" id=\"BRzOi\" src=\"2026-10-05lhlkxo4xeuw.png\" width=\"702\" \/><\/p>\n<h5 id=\"IFlFR\">4.5 \u5b9a\u65f6\u89e6\u53d1\u5668<\/h5>\n<p id=\"u2204a31f\">\u8bb0\u5f97\u5728\u89e6\u53d1\u5668\u8bbe\u7f6e\u91cc\u628a\u65f6\u533a\u9009\u4e3a Asia\/Shanghai<\/p>\n<p id=\"u99683795\">\u540d\u79f0&#xff1a;\u968f\u4fbf\u8d77\u4e2a\u597d\u542c\u7684\u540d\u5b57&#xff0c;\u6bd4\u5982\u53eb DailyWeatherPush<\/p>\n<p id=\"u5ecb81a4\">\u7248\u672c\u6216\u522b\u540d&#xff1a;\u9ed8\u8ba4\u4fdd\u6301 LATEST \u5373\u53ef\u3002<\/p>\n<p id=\"u7ef5b72c\">\u89e6\u53d1\u65b9\u5f0f&#xff1a;\u4fdd\u6301\u9009\u62e9\u5b9a\u65f6\u89e6\u53d1\u5668<\/p>\n<p id=\"ud89b8597\">\u6307\u5b9a\u65f6\u95f4&#xff1a;9:00<\/p>\n<p id=\"u7f9c4d58\">\u89e6\u53d1\u6d88\u606f&#xff1a;\u8fd9\u4e2a\u4e0d\u7528\u586b&#xff0c;\u7559\u7a7a\u5c31\u597d\u3002<\/p>\n<p id=\"u86780723\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"822\" id=\"UtOIW\" src=\"2026-10-055uzmh0ausdj.png\" width=\"1920\" \/><\/p>\n<p id=\"u8141d9fa\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"604\" id=\"ud70b5bf8\" src=\"2026-10-05htawwumdjgh.png\" width=\"986\" \/><\/p>\n<h5 id=\"zm6W5\">4.6 \u6548\u679c\u6d4b\u8bd5<\/h5>\n<p id=\"uddbc785f\">\u7ee7\u7eed\u70b9\u51fb\u53f3\u4e0a\u89d2\u7684 \u300c\u90e8\u7f72\u4ee3\u7801\u300d \u6309\u94ae&#xff0c;\u7b49\u9875\u9762\u5de6\u4e0a\u89d2\u63d0\u793a\u201c\u90e8\u7f72\u6210\u529f\u201d\u6216\u7eff\u8272\u5bf9\u52fe\u3002<\/p>\n<p id=\"u096e8808\">\u70b9\u51fb\u5de6\u4e0b\u89d2\u7684 \u300c\u6d4b\u8bd5\u51fd\u6570\u300d \u6309\u94ae\u3002<\/p>\n<p id=\"ue1dd9120\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"54\" id=\"sfPer\" src=\"2026-10-05vpl5nzvpvhz.png\" width=\"666\" \/><\/p>\n<p id=\"u257ab08c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"819\" id=\"IbizL\" src=\"2026-10-05wjijmoaxoco.png\" width=\"1878\" \/><\/p>\n<p id=\"u648a2118\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1488\" id=\"u4257d211\" src=\"2026-10-05dynq1cxghbm.jpg\" width=\"1260\" \/><\/p>\n<p id=\"u00917222\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1492\" id=\"u39a8608b\" src=\"2026-10-05hurqpwgisbl.jpg\" width=\"1260\" \/><\/p>\n<p id=\"u81214356\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1508\" id=\"u193fa246\" src=\"2026-10-050gixwhgr3hy.jpg\" width=\"1260\" \/><\/p>\n<h4 id=\"QuwVe\">\u7ed3\u8bed<\/h4>\n<p id=\"u0c4ef9ae\">\u8fd9\u4e2a\u9879\u76ee\u6700\u6709\u4ef7\u503c\u7684\u5730\u65b9&#xff0c;\u4ece\u6765\u4e0d\u5728\u4e8e\u300c\u80fd\u770b\u5929\u6c14\u300d\u2014\u2014\u624b\u673a\u81ea\u5e26\u7684\u6c14\u5019\u5e94\u7528\u5df2\u7ecf\u505a\u5f97\u8db3\u591f\u51fa\u8272\u3002\u5b83\u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e&#xff0c;\u5b8c\u6574\u8dd1\u901a\u4e86\u4e00\u6761\u751f\u4ea7\u7ea7\u7684 Serverless \u6700\u5c0f\u95ed\u73af&#xff1a;\u5b9a\u65f6\u89e6\u53d1\u3001\u7b2c\u4e09\u65b9 API \u8c03\u7528\u3001\u5927\u6a21\u578b\u8c03\u7528\u3001AI \u751f\u56fe\u3001\u5bf9\u8c61\u5b58\u50a8\u3001Webhook \u63a8\u9001\u3001\u9519\u8bef\u544a\u8b66\u3001\u6210\u672c\u53ef\u63a7\u2014\u2014\u6bcf\u4e00\u4e2a\u73af\u8282\u90fd\u662f\u73b0\u6210\u7684\u4e91\u670d\u52a1&#xff0c;\u96f6\u8fd0\u7ef4\u3001\u6309\u9700\u4ed8\u8d39\u3001\u5f39\u6027\u4f38\u7f29\u3002<\/p>\n<p id=\"ue6fc4c98\">\u5f53\u8fd9\u6761\u7ba1\u7ebf\u88ab\u9a8c\u8bc1\u7a33\u5b9a\u8fd0\u884c\u4e4b\u540e&#xff0c;\u66ff\u6362\u6570\u636e\u6e90\u4fbf\u6210\u4e86\u8f7b\u800c\u6613\u4e3e\u7684\u4e8b&#xff1a;\u5c06\u5929\u6c14 API \u6362\u6210\u80a1\u7968\u884c\u60c5\u63a5\u53e3&#xff0c;\u5c31\u80fd\u53d8\u6210\u6bcf\u65e5\u8d22\u7ecf\u7b80\u62a5\u63a8\u9001&#xff1b;\u6362\u6210 RSS \u8ba2\u9605\u6e90&#xff0c;\u5c31\u80fd\u505a\u6210\u8d44\u8baf\u805a\u5408\u673a\u5668\u4eba&#xff1b;\u6362\u6210\u670d\u52a1\u5668\u5065\u5eb7\u68c0\u67e5\u63a5\u53e3&#xff0c;\u5c31\u80fd\u642d\u5efa\u8f7b\u91cf\u7ea7\u7684\u76d1\u63a7\u544a\u8b66\u7cfb\u7edf\u3002\u67b6\u6784\u9aa8\u67b6\u65e0\u9700\u6539\u52a8&#xff0c;\u53ea\u9700\u66ff\u6362\u6570\u636e\u5c42\u6570\u5341\u884c\u4ee3\u7801&#xff0c;\u5373\u53ef\u9002\u914d\u5168\u65b0\u7684\u4e1a\u52a1\u573a\u666f\u3002<\/p>\n<p id=\"ucd4d2599\">\u4ece\u66f4\u5b8f\u89c2\u7684\u89c6\u89d2\u6765\u770b&#xff0c;\u672c\u9879\u76ee\u4e5f\u662f\u4e00\u4e2a\u6781\u4f73\u7684\u4e91\u539f\u751f\u5f00\u53d1\u5b66\u4e60\u6a21\u677f\u3002\u5b83\u5c55\u793a\u4e86\u51fd\u6570\u8ba1\u7b97\u3001\u6258\u7ba1\u670d\u52a1\u4e0e AI \u5927\u6a21\u578b API \u5982\u4f55\u88ab\u7075\u6d3b\u7f16\u6392\u7ec4\u5408&#xff0c;\u5728\u4e0d\u89e6\u78b0\u4efb\u4f55\u670d\u52a1\u5668\u7ba1\u7406\u4e8b\u52a1\u7684\u524d\u63d0\u4e0b&#xff0c;\u5feb\u901f\u6784\u5efa\u51fa\u6709\u4ef7\u503c\u7684\u81ea\u52a8\u5316\u5e94\u7528\u3002\u5bf9\u4e8e\u5e0c\u671b\u63a2\u7d22\u4e91\u51fd\u6570\u3001AI \u96c6\u6210\u6216\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u7684\u5f00\u53d1\u8005\u800c\u8a00&#xff0c;\u8fd9\u4e2a\u9879\u76ee\u63d0\u4f9b\u4e86\u4e00\u4efd\u4ece\u7406\u8bba\u5230\u751f\u4ea7\u843d\u5730\u7684\u7aef\u5230\u7aef\u53c2\u8003\u5b9e\u73b0&#xff0c;\u5f25\u5408\u4e86\u300c\u77e5\u9053\u6982\u5ff5\u300d\u4e0e\u300c\u771f\u6b63\u8dd1\u8d77\u6765\u300d\u4e4b\u95f4\u7684\u9e3f\u6c9f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6bcf\u5929\u65e9\u4e0a\u4e5d\u70b9&#xff0c;\u9489\u9489\u7fa4\u91cc\u51c6\u65f6\u51fa\u73b0\u4e00\u5f20\u7cbe\u7f8e\u7684\u5929\u6c14\u56fe\u6587\u5361\u7247\u2014\u2014\u57ce\u5e02\u5730\u6807\u5fae\u7f29\u6a21\u578b\u63d2\u753b\u642d\u914d\u5b9e\u65f6\u5929\u6c14\u4fe1\u606f&#xff0c;\u65e2\u6709\u5b9e\u7528\u4ef7\u503c&#xff0c;\u53c8\u8d4f\u5fc3\u60a6\u76ee\u3002\u652f\u6491\u8fd9\u4e00\u5207\u7684&#xff0c;\u6ca1\u6709\u670d\u52a1\u5668\u3001\u6ca1\u6709\u57df\u540d\u3001\u6ca1\u6709\u6570\u636e\u5e93&#xff0c;\u4e5f\u6ca1\u6709\u4efb\u4f55\u5e38\u9a7b\u8fdb\u7a0b\u3002\u80cc\u540e\u4ec5\u6709\u4e00\u6bb5\u8fd0\u884c\u5728\u4e91\u51fd\u6570\u8ba1\u7b97&#xff08;Function Compute&#xff0c;\u7b80\u79f0FC&#xff09;\u4e2d\u7684 Python \u4ee3\u7801&#xff0c;\u6bcf\u5929\u88ab\u5b9a\u65f6\u4efb\u52a1\u5524\u9192\u4e00\u6b21&#xff0c;\u6267\u884c\u5341\u51e0\u79d2\u540e\u4fbf\u91cd\u65b0\u8fdb\u5165\u4f11\u7720\u72b6<\/p>\n","protected":false},"author":2,"featured_media":112962,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12856,11653],"topic":[],"class_list":["post-112982","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-fc","tag-11653"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \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\/112982.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6bcf\u5929\u65e9\u4e0a\u4e5d\u70b9&#xff0c;\u9489\u9489\u7fa4\u91cc\u51c6\u65f6\u51fa\u73b0\u4e00\u5f20\u7cbe\u7f8e\u7684\u5929\u6c14\u56fe\u6587\u5361\u7247\u2014\u2014\u57ce\u5e02\u5730\u6807\u5fae\u7f29\u6a21\u578b\u63d2\u753b\u642d\u914d\u5b9e\u65f6\u5929\u6c14\u4fe1\u606f&#xff0c;\u65e2\u6709\u5b9e\u7528\u4ef7\u503c&#xff0c;\u53c8\u8d4f\u5fc3\u60a6\u76ee\u3002\u652f\u6491\u8fd9\u4e00\u5207\u7684&#xff0c;\u6ca1\u6709\u670d\u52a1\u5668\u3001\u6ca1\u6709\u57df\u540d\u3001\u6ca1\u6709\u6570\u636e\u5e93&#xff0c;\u4e5f\u6ca1\u6709\u4efb\u4f55\u5e38\u9a7b\u8fdb\u7a0b\u3002\u80cc\u540e\u4ec5\u6709\u4e00\u6bb5\u8fd0\u884c\u5728\u4e91\u51fd\u6570\u8ba1\u7b97&#xff08;Function Compute&#xff0c;\u7b80\u79f0FC&#xff09;\u4e2d\u7684 Python \u4ee3\u7801&#xff0c;\u6bcf\u5929\u88ab\u5b9a\u65f6\u4efb\u52a1\u5524\u9192\u4e00\u6b21&#xff0c;\u6267\u884c\u5341\u51e0\u79d2\u540e\u4fbf\u91cd\u65b0\u8fdb\u5165\u4f11\u7720\u72b6\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/112982.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-05T02:18:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021808-6ac308e09bb04.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=\"9 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/112982.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/112982.html\",\"name\":\"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-05T02:18:20+00:00\",\"dateModified\":\"2026-10-05T02:18:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/112982.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/112982.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/112982.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668\"}]},{\"@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":"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \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\/112982.html","og_locale":"zh_CN","og_type":"article","og_title":"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6bcf\u5929\u65e9\u4e0a\u4e5d\u70b9&#xff0c;\u9489\u9489\u7fa4\u91cc\u51c6\u65f6\u51fa\u73b0\u4e00\u5f20\u7cbe\u7f8e\u7684\u5929\u6c14\u56fe\u6587\u5361\u7247\u2014\u2014\u57ce\u5e02\u5730\u6807\u5fae\u7f29\u6a21\u578b\u63d2\u753b\u642d\u914d\u5b9e\u65f6\u5929\u6c14\u4fe1\u606f&#xff0c;\u65e2\u6709\u5b9e\u7528\u4ef7\u503c&#xff0c;\u53c8\u8d4f\u5fc3\u60a6\u76ee\u3002\u652f\u6491\u8fd9\u4e00\u5207\u7684&#xff0c;\u6ca1\u6709\u670d\u52a1\u5668\u3001\u6ca1\u6709\u57df\u540d\u3001\u6ca1\u6709\u6570\u636e\u5e93&#xff0c;\u4e5f\u6ca1\u6709\u4efb\u4f55\u5e38\u9a7b\u8fdb\u7a0b\u3002\u80cc\u540e\u4ec5\u6709\u4e00\u6bb5\u8fd0\u884c\u5728\u4e91\u51fd\u6570\u8ba1\u7b97&#xff08;Function Compute&#xff0c;\u7b80\u79f0FC&#xff09;\u4e2d\u7684 Python \u4ee3\u7801&#xff0c;\u6bcf\u5929\u88ab\u5b9a\u65f6\u4efb\u52a1\u5524\u9192\u4e00\u6b21&#xff0c;\u6267\u884c\u5341\u51e0\u79d2\u540e\u4fbf\u91cd\u65b0\u8fdb\u5165\u4f11\u7720\u72b6","og_url":"https:\/\/www.wsisp.com\/helps\/112982.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-05T02:18:20+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261005021808-6ac308e09bb04.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"9 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/112982.html","url":"https:\/\/www.wsisp.com\/helps\/112982.html","name":"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-05T02:18:20+00:00","dateModified":"2026-10-05T02:18:20+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/112982.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/112982.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/112982.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u4e91\u51fd\u6570\u8ba1\u7b97FC\u5b9a\u65f6\u83b7\u53d6\u5929\u6c14\uff0c\u81ea\u52a8\u751f\u6210\u5929\u6c14\u63d2\u753b\u5361\u7247\u63a8\u9001\u9489\u9489\uff0c\u96f6\u670d\u52a1\u5668"}]},{"@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\/112982","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=112982"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/112982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/112962"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=112982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=112982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=112982"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=112982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}