[{"data":1,"prerenderedAt":1071},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"wiki-function-calling":9},{"tools":4,"reviews":5},65,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},10,8,{"id":10,"title":11,"body":12,"category":1051,"description":34,"extension":1052,"meta":1053,"navigation":836,"path":1054,"published":1055,"relatedModels":1056,"relatedTools":1059,"seo":1063,"slug":1064,"stem":1065,"summary":1066,"tags":1067,"updated":1055,"__hash__":1070},"wiki\u002Fwiki\u002Ffunction-calling.md","Function Calling（函数调用）",{"type":13,"value":14,"toc":1025},"minimark",[15,20,24,35,46,49,54,57,201,205,208,273,277,280,309,313,316,320,323,363,370,390,394,397,461,467,471,480,483,494,498,596,607,610,614,617,778,782,785,796,799,810,813,817,848,852,881,885,888,918,921,925,928,939,942,945,998,1001,1021],[16,17,19],"h2",{"id":18},"什么是-function-calling","什么是 Function Calling",[21,22,23],"p",{},"Function Calling（函数调用）是让大模型调用外部函数的能力。你告诉模型有哪些函数可用，模型根据用户意图决定调用哪个函数、传什么参数。",[25,26,31],"pre",{"className":27,"code":29,"language":30},[28],"language-text","用户：\"上海今天天气怎么样？\"\n  ↓\n模型分析：需要查天气 → 调用 get_weather(\"上海\")\n  ↓\n你的代码执行 get_weather(\"上海\") → 返回 { temp: 28°C, condition: \"多云\" }\n  ↓\n模型基于返回结果生成回答：\"上海今天 28°C，多云，适合出行。\"\n","text",[32,33,29],"code",{"__ignoreMap":34},"",[36,37,38],"blockquote",{},[21,39,40,41,45],{},"注意：模型",[42,43,44],"strong",{},"自己不能执行函数","。它只输出\"我想调 get_weather('上海')\"这条意图，真正的 HTTP 请求 \u002F DB 查询是你的应用代码去跑。这是 Function Calling 最容易被误解的一点。",[16,47,48],{"id":48},"工作原理",[50,51,53],"h3",{"id":52},"_1-定义函数","1. 定义函数",[21,55,56],{},"你向模型提供函数的 JSON Schema 描述：",[25,58,62],{"className":59,"code":60,"language":61,"meta":34,"style":34},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"get_weather\",\n  \"description\": \"查询指定城市的天气\",\n  \"parameters\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"city\": {\n        \"type\": \"string\",\n        \"description\": \"城市名，如'上海'\"\n      }\n    },\n    \"required\": [\"city\"]\n  }\n}\n","json",[32,63,64,73,90,103,112,125,133,140,152,163,168,174,189,195],{"__ignoreMap":34},[65,66,69],"span",{"class":67,"line":68},"line",1,[65,70,72],{"class":71},"sVt8B","{\n",[65,74,76,80,83,87],{"class":67,"line":75},2,[65,77,79],{"class":78},"sj4cs","  \"name\"",[65,81,82],{"class":71},": ",[65,84,86],{"class":85},"sZZnC","\"get_weather\"",[65,88,89],{"class":71},",\n",[65,91,93,96,98,101],{"class":67,"line":92},3,[65,94,95],{"class":78},"  \"description\"",[65,97,82],{"class":71},[65,99,100],{"class":85},"\"查询指定城市的天气\"",[65,102,89],{"class":71},[65,104,106,109],{"class":67,"line":105},4,[65,107,108],{"class":78},"  \"parameters\"",[65,110,111],{"class":71},": {\n",[65,113,115,118,120,123],{"class":67,"line":114},5,[65,116,117],{"class":78},"    \"type\"",[65,119,82],{"class":71},[65,121,122],{"class":85},"\"object\"",[65,124,89],{"class":71},[65,126,128,131],{"class":67,"line":127},6,[65,129,130],{"class":78},"    \"properties\"",[65,132,111],{"class":71},[65,134,135,138],{"class":67,"line":5},[65,136,137],{"class":78},"      \"city\"",[65,139,111],{"class":71},[65,141,142,145,147,150],{"class":67,"line":8},[65,143,144],{"class":78},"        \"type\"",[65,146,82],{"class":71},[65,148,149],{"class":85},"\"string\"",[65,151,89],{"class":71},[65,153,155,158,160],{"class":67,"line":154},9,[65,156,157],{"class":78},"        \"description\"",[65,159,82],{"class":71},[65,161,162],{"class":85},"\"城市名，如'上海'\"\n",[65,164,165],{"class":67,"line":7},[65,166,167],{"class":71},"      }\n",[65,169,171],{"class":67,"line":170},11,[65,172,173],{"class":71},"    },\n",[65,175,177,180,183,186],{"class":67,"line":176},12,[65,178,179],{"class":78},"    \"required\"",[65,181,182],{"class":71},": [",[65,184,185],{"class":85},"\"city\"",[65,187,188],{"class":71},"]\n",[65,190,192],{"class":67,"line":191},13,[65,193,194],{"class":71},"  }\n",[65,196,198],{"class":67,"line":197},14,[65,199,200],{"class":71},"}\n",[50,202,204],{"id":203},"_2-模型决定调用","2. 模型决定调用",[21,206,207],{},"模型根据用户输入，决定是否需要调用函数：",[25,209,211],{"className":59,"code":210,"language":61,"meta":34,"style":34},"{\n  \"function_call\": {\n    \"name\": \"get_weather\",\n    \"arguments\": \"{\\\"city\\\": \\\"上海\\\"}\"\n  }\n}\n",[32,212,213,217,224,235,265,269],{"__ignoreMap":34},[65,214,215],{"class":67,"line":68},[65,216,72],{"class":71},[65,218,219,222],{"class":67,"line":75},[65,220,221],{"class":78},"  \"function_call\"",[65,223,111],{"class":71},[65,225,226,229,231,233],{"class":67,"line":92},[65,227,228],{"class":78},"    \"name\"",[65,230,82],{"class":71},[65,232,86],{"class":85},[65,234,89],{"class":71},[65,236,237,240,242,245,248,251,253,255,257,260,262],{"class":67,"line":105},[65,238,239],{"class":78},"    \"arguments\"",[65,241,82],{"class":71},[65,243,244],{"class":85},"\"{",[65,246,247],{"class":78},"\\\"",[65,249,250],{"class":85},"city",[65,252,247],{"class":78},[65,254,82],{"class":85},[65,256,247],{"class":78},[65,258,259],{"class":85},"上海",[65,261,247],{"class":78},[65,263,264],{"class":85},"}\"\n",[65,266,267],{"class":67,"line":114},[65,268,194],{"class":71},[65,270,271],{"class":67,"line":127},[65,272,200],{"class":71},[50,274,276],{"id":275},"_3-你执行函数","3. 你执行函数",[21,278,279],{},"你的代码执行实际函数调用，返回结果给模型：",[25,281,285],{"className":282,"code":283,"language":284,"meta":34,"style":34},"language-python shiki shiki-themes github-light github-dark","result = get_weather(\"上海\")  # { temp: 28, condition: \"多云\" }\n","python",[32,286,287],{"__ignoreMap":34},[65,288,289,292,296,299,302,305],{"class":67,"line":68},[65,290,291],{"class":71},"result ",[65,293,295],{"class":294},"szBVR","=",[65,297,298],{"class":71}," get_weather(",[65,300,301],{"class":85},"\"上海\"",[65,303,304],{"class":71},")  ",[65,306,308],{"class":307},"sJ8bj","# { temp: 28, condition: \"多云\" }\n",[50,310,312],{"id":311},"_4-模型生成最终回答","4. 模型生成最终回答",[21,314,315],{},"模型基于函数返回结果生成自然语言回答。",[16,317,319],{"id":318},"parallel-tool-calls一次调多个","Parallel Tool Calls：一次调多个",[21,321,322],{},"现代模型（GPT-4o+、Claude Sonnet 4+、Gemini 2.5+）支持单轮内发起多个工具调用。例如用户问\"对比上海和北京的天气\"：",[25,324,328],{"className":325,"code":326,"language":327,"meta":34,"style":34},"language-jsonc shiki shiki-themes github-light github-dark","\u002F\u002F 模型一次返回两个 tool_call\n{\n  \"tool_calls\": [\n    { \"id\": \"t1\", \"function\": { \"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\":\\\"上海\\\"}\" } },\n    { \"id\": \"t2\", \"function\": { \"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\":\\\"北京\\\"}\" } }\n  ]\n}\n","jsonc",[32,329,330,335,339,344,349,354,359],{"__ignoreMap":34},[65,331,332],{"class":67,"line":68},[65,333,334],{},"\u002F\u002F 模型一次返回两个 tool_call\n",[65,336,337],{"class":67,"line":75},[65,338,72],{},[65,340,341],{"class":67,"line":92},[65,342,343],{},"  \"tool_calls\": [\n",[65,345,346],{"class":67,"line":105},[65,347,348],{},"    { \"id\": \"t1\", \"function\": { \"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\":\\\"上海\\\"}\" } },\n",[65,350,351],{"class":67,"line":114},[65,352,353],{},"    { \"id\": \"t2\", \"function\": { \"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\":\\\"北京\\\"}\" } }\n",[65,355,356],{"class":67,"line":127},[65,357,358],{},"  ]\n",[65,360,361],{"class":67,"line":5},[65,362,200],{},[21,364,365,366,369],{},"应用层可以",[42,367,368],{},"并行执行","这两个调用，把两个结果一起回给模型。能省一轮往返延迟。陷阱：",[371,372,373,381,387],"ul",{},[374,375,376,377,380],"li",{},"不是所有 API 都默认开启，要看 ",[32,378,379],{},"parallel_tool_calls"," 参数",[374,382,383,386],{},[42,384,385],{},"并行的调用之间不能有依赖","（B 的输入需要 A 的输出就不能并行）",[374,388,389],{},"模型对\"什么时候适合并行\"判断不总是对——独立查询通常 OK，有顺序的操作（先建用户再发通知）会被错并行",[16,391,393],{"id":392},"structured-outputs-json-mode","Structured Outputs \u002F JSON Mode",[21,395,396],{},"Function Calling 的近亲：让模型保证按指定 JSON Schema 输出。区别是不调函数、就要结构化数据本身。",[398,399,400,413],"table",{},[401,402,403],"thead",{},[404,405,406,410],"tr",{},[407,408,409],"th",{},"平台",[407,411,412],{},"机制",[414,415,416,428,439,447],"tbody",{},[404,417,418,422],{},[419,420,421],"td",{},"OpenAI Structured Outputs",[419,423,424,427],{},[32,425,426],{},"response_format: { type: \"json_schema\", strict: true }","，保证 100% 符合 schema",[404,429,430,433],{},[419,431,432],{},"OpenAI JSON Mode",[419,434,435,438],{},[32,436,437],{},"response_format: { type: \"json_object\" }","，只保证是合法 JSON，结构不保证",[404,440,441,444],{},[419,442,443],{},"Anthropic Tool Use",[419,445,446],{},"用 tool definition 当 schema 模板，模型一定按 schema 填",[404,448,449,452],{},[419,450,451],{},"Google Gemini",[419,453,454,457,458],{},[32,455,456],{},"responseMimeType: \"application\u002Fjson\""," + ",[32,459,460],{},"responseSchema",[21,462,463,466],{},[42,464,465],{},"用途","：从非结构化文本提取结构化信息（PDF 解析、表单填写、分类打标），比 prompt 让模型\"输出 JSON\"稳定得多。",[16,468,470],{"id":469},"与-mcp-的关系","与 MCP 的关系",[21,472,473,474,479],{},"Function Calling 是模型层面的能力（模型决定调什么函数）。\n",[475,476,478],"a",{"href":477},"\u002Fwiki\u002Fmcp.html","MCP"," 是协议层面的标准（标准化函数发现和调用的方式）。",[21,481,482],{},"MCP 底层依赖 Function Calling，但提供了更完整的生态：",[371,484,485,488,491],{},[374,486,487],{},"动态发现 Server 能力",[374,489,490],{},"标准化的工具\u002F资源\u002F提示词暴露方式",[374,492,493],{},"跨工具复用",[16,495,497],{"id":496},"主流模型-fc-能力对比","主流模型 FC 能力对比",[398,499,500,516],{},[401,501,502],{},[404,503,504,507,510,513],{},[407,505,506],{},"模型",[407,508,509],{},"Parallel",[407,511,512],{},"Strict Schema",[407,514,515],{},"工具数上限（实测稳定）",[414,517,518,532,545,558,571,582],{},[404,519,520,523,526,529],{},[419,521,522],{},"GPT-5 \u002F GPT-4o",[419,524,525],{},"✅",[419,527,528],{},"✅ Structured Outputs",[419,530,531],{},"100+",[404,533,534,537,539,542],{},[419,535,536],{},"Claude Sonnet 4",[419,538,525],{},[419,540,541],{},"✅ Tool Use",[419,543,544],{},"50-100",[404,546,547,550,552,555],{},[419,548,549],{},"Gemini 2.5 Pro",[419,551,525],{},[419,553,554],{},"✅ responseSchema",[419,556,557],{},"50+",[404,559,560,563,565,568],{},[419,561,562],{},"DeepSeek V3",[419,564,525],{},[419,566,567],{},"部分",[419,569,570],{},"30-50",[404,572,573,576,578,580],{},[419,574,575],{},"GLM-5",[419,577,525],{},[419,579,567],{},[419,581,570],{},[404,583,584,587,590,593],{},[419,585,586],{},"早期开源（Llama 3 等）",[419,588,589],{},"⚠️ 部分",[419,591,592],{},"❌",[419,594,595],{},"10-20",[21,597,598,601,602,606],{},[42,599,600],{},"经验","：工具列表超过 20-30 个，所有模型的选择准确率都会下降。这是为什么 ",[475,603,605],{"href":604},"\u002Fwiki\u002Fai-agent.html","Agent"," 设计里常见\"工具分组 \u002F 分层路由\"——先选一个工具组，再在组内选具体工具。",[16,608,609],{"id":609},"实际应用",[50,611,613],{"id":612},"ai-编程工具","AI 编程工具",[21,615,616],{},"Cursor \u002F Claude Code 的 function calling：",[25,618,620],{"className":59,"code":619,"language":61,"meta":34,"style":34},"{\n  \"name\": \"read_file\",\n  \"description\": \"读取文件内容\",\n  \"parameters\": { \"path\": \"string\" }\n}\n{\n  \"name\": \"edit_file\",\n  \"description\": \"编辑文件\",\n  \"parameters\": { \"path\": \"string\", \"old\": \"string\", \"new\": \"string\" }\n}\n{\n  \"name\": \"run_terminal\",\n  \"description\": \"执行终端命令\",\n  \"parameters\": { \"command\": \"string\" }\n}\n",[32,621,622,626,637,648,665,669,673,684,695,728,732,736,747,758,773],{"__ignoreMap":34},[65,623,624],{"class":67,"line":68},[65,625,72],{"class":71},[65,627,628,630,632,635],{"class":67,"line":75},[65,629,79],{"class":78},[65,631,82],{"class":71},[65,633,634],{"class":85},"\"read_file\"",[65,636,89],{"class":71},[65,638,639,641,643,646],{"class":67,"line":92},[65,640,95],{"class":78},[65,642,82],{"class":71},[65,644,645],{"class":85},"\"读取文件内容\"",[65,647,89],{"class":71},[65,649,650,652,655,658,660,662],{"class":67,"line":105},[65,651,108],{"class":78},[65,653,654],{"class":71},": { ",[65,656,657],{"class":78},"\"path\"",[65,659,82],{"class":71},[65,661,149],{"class":85},[65,663,664],{"class":71}," }\n",[65,666,667],{"class":67,"line":114},[65,668,200],{"class":71},[65,670,671],{"class":67,"line":127},[65,672,72],{"class":71},[65,674,675,677,679,682],{"class":67,"line":5},[65,676,79],{"class":78},[65,678,82],{"class":71},[65,680,681],{"class":85},"\"edit_file\"",[65,683,89],{"class":71},[65,685,686,688,690,693],{"class":67,"line":8},[65,687,95],{"class":78},[65,689,82],{"class":71},[65,691,692],{"class":85},"\"编辑文件\"",[65,694,89],{"class":71},[65,696,697,699,701,703,705,707,710,713,715,717,719,722,724,726],{"class":67,"line":154},[65,698,108],{"class":78},[65,700,654],{"class":71},[65,702,657],{"class":78},[65,704,82],{"class":71},[65,706,149],{"class":85},[65,708,709],{"class":71},", ",[65,711,712],{"class":78},"\"old\"",[65,714,82],{"class":71},[65,716,149],{"class":85},[65,718,709],{"class":71},[65,720,721],{"class":78},"\"new\"",[65,723,82],{"class":71},[65,725,149],{"class":85},[65,727,664],{"class":71},[65,729,730],{"class":67,"line":7},[65,731,200],{"class":71},[65,733,734],{"class":67,"line":170},[65,735,72],{"class":71},[65,737,738,740,742,745],{"class":67,"line":176},[65,739,79],{"class":78},[65,741,82],{"class":71},[65,743,744],{"class":85},"\"run_terminal\"",[65,746,89],{"class":71},[65,748,749,751,753,756],{"class":67,"line":191},[65,750,95],{"class":78},[65,752,82],{"class":71},[65,754,755],{"class":85},"\"执行终端命令\"",[65,757,89],{"class":71},[65,759,760,762,764,767,769,771],{"class":67,"line":197},[65,761,108],{"class":78},[65,763,654],{"class":71},[65,765,766],{"class":78},"\"command\"",[65,768,82],{"class":71},[65,770,149],{"class":85},[65,772,664],{"class":71},[65,774,776],{"class":67,"line":775},15,[65,777,200],{"class":71},[50,779,781],{"id":780},"agent-平台","Agent 平台",[21,783,784],{},"Coze \u002F Dify 中的自定义工具就是 function calling：",[371,786,787,790,793],{},[374,788,789],{},"定义工具的输入输出",[374,791,792],{},"模型自动编排调用顺序",[374,794,795],{},"支持多步工具链",[50,797,798],{"id":798},"企业应用",[371,800,801,804,807],{},[374,802,803],{},"查询数据库（自然语言 → SQL → 结果）",[374,805,806],{},"调用内部 API（ERP\u002FCRM\u002FOA）",[374,808,809],{},"发送通知（邮件\u002F钉钉\u002F飞书）",[16,811,812],{"id":812},"最佳实践",[50,814,816],{"id":815},"_1-描述要清晰","1. 描述要清晰",[25,818,820],{"className":325,"code":819,"language":327,"meta":34,"style":34},"\u002F\u002F ❌ 模糊\n{ \"name\": \"search\", \"description\": \"搜索\" }\n\n\u002F\u002F ✅ 清晰\n{ \"name\": \"search_docs\", \"description\": \"在企业知识库中全文搜索文档，返回最相关的 5 条结果\" }\n",[32,821,822,827,832,838,843],{"__ignoreMap":34},[65,823,824],{"class":67,"line":68},[65,825,826],{},"\u002F\u002F ❌ 模糊\n",[65,828,829],{"class":67,"line":75},[65,830,831],{},"{ \"name\": \"search\", \"description\": \"搜索\" }\n",[65,833,834],{"class":67,"line":92},[65,835,837],{"emptyLinePlaceholder":836},true,"\n",[65,839,840],{"class":67,"line":105},[65,841,842],{},"\u002F\u002F ✅ 清晰\n",[65,844,845],{"class":67,"line":114},[65,846,847],{},"{ \"name\": \"search_docs\", \"description\": \"在企业知识库中全文搜索文档，返回最相关的 5 条结果\" }\n",[50,849,851],{"id":850},"_2-参数类型要明确","2. 参数类型要明确",[25,853,855],{"className":325,"code":854,"language":327,"meta":34,"style":34},"\u002F\u002F ❌ 不清楚枚举值\n{ \"unit\": { \"type\": \"string\" } }\n\n\u002F\u002F ✅ 明确枚举\n{ \"unit\": { \"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"] } }\n",[32,856,857,862,867,871,876],{"__ignoreMap":34},[65,858,859],{"class":67,"line":68},[65,860,861],{},"\u002F\u002F ❌ 不清楚枚举值\n",[65,863,864],{"class":67,"line":75},[65,865,866],{},"{ \"unit\": { \"type\": \"string\" } }\n",[65,868,869],{"class":67,"line":92},[65,870,837],{"emptyLinePlaceholder":836},[65,872,873],{"class":67,"line":105},[65,874,875],{},"\u002F\u002F ✅ 明确枚举\n",[65,877,878],{"class":67,"line":114},[65,879,880],{},"{ \"unit\": { \"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"] } }\n",[50,882,884],{"id":883},"_3-提供错误处理","3. 提供错误处理",[21,886,887],{},"函数执行失败时，返回结构化错误让模型理解：",[25,889,891],{"className":59,"code":890,"language":61,"meta":34,"style":34},"{ \"error\": \"city_not_found\", \"message\": \"找不到城市'上海'\" }\n",[32,892,893],{"__ignoreMap":34},[65,894,895,898,901,903,906,908,911,913,916],{"class":67,"line":68},[65,896,897],{"class":71},"{ ",[65,899,900],{"class":78},"\"error\"",[65,902,82],{"class":71},[65,904,905],{"class":85},"\"city_not_found\"",[65,907,709],{"class":71},[65,909,910],{"class":78},"\"message\"",[65,912,82],{"class":71},[65,914,915],{"class":85},"\"找不到城市'上海'\"",[65,917,664],{"class":71},[21,919,920],{},"模型看到结构化错误能自己修正（比如把\"上海\"补成\"上海市\"再试一次）；看到 HTTP 500 那种 stack trace 反而容易卡住。",[50,922,924],{"id":923},"_4-限制函数数量","4. 限制函数数量",[21,926,927],{},"一次提供太多函数会让模型困惑。建议：",[371,929,930,933,936],{},[374,931,932],{},"核心函数 5-10 个",[374,934,935],{},"用 Agent 模式分步调用",[374,937,938],{},"或用 MCP 动态发现",[16,940,941],{"id":941},"调试技巧",[21,943,944],{},"线上 FC 不稳定时，按顺序排查：",[946,947,948,958,972,982,992],"ol",{},[374,949,950,953,954,957],{},[42,951,952],{},"看模型是不是真选错了","——把 ",[32,955,956],{},"tool_calls"," 完整 dump 出来。常见情况是模型选对了但参数错了。",[374,959,960,953,963,966,967,971],{},[42,961,962],{},"降温到 0",[32,964,965],{},"temperature"," 设 0 让结果可复现，再调 prompt 和 schema。详见 ",[475,968,970],{"href":969},"\u002Fwiki\u002Ftemperature-top-p.html","Temperature 与 Top-P","。",[374,973,974,977,978,981],{},[42,975,976],{},"加 description 到具体例子","——",[32,979,980],{},"\"description\": \"查城市天气。例：city='上海' → 返回 {temp, condition}\"","。模型对例子比对类型描述敏感。",[374,983,984,987,988,991],{},[42,985,986],{},"检查 strict mode","——如果用了 ",[32,989,990],{},"strict: true"," 但 schema 写得不严（少 required、字段类型 union），模型会被卡住一直生成不合规的输出。",[374,993,994,997],{},[42,995,996],{},"看模型有没有\"幻觉调用\"","——明明没给的工具名也敢叫。这是 prompt 里历史轮里残留了不存在的工具描述，清掉。",[16,999,1000],{"id":1000},"延伸阅读",[371,1002,1003,1009,1016],{},[374,1004,1005,1006,1008],{},"协议层：",[475,1007,478],{"href":477},"——把工具描述从应用搬到 Server",[374,1010,1011,1012,1015],{},"Agent 视角：",[475,1013,1014],{"href":604},"AI Agent","——FC 是 Agent 闭环里的「Action」环节",[374,1017,1018,1019],{},"控制随机性：",[475,1020,970],{"href":969},[1022,1023,1024],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":34,"searchDepth":92,"depth":92,"links":1026},[1027,1028,1034,1035,1036,1037,1038,1043,1049,1050],{"id":18,"depth":75,"text":19},{"id":48,"depth":75,"text":48,"children":1029},[1030,1031,1032,1033],{"id":52,"depth":92,"text":53},{"id":203,"depth":92,"text":204},{"id":275,"depth":92,"text":276},{"id":311,"depth":92,"text":312},{"id":318,"depth":75,"text":319},{"id":392,"depth":75,"text":393},{"id":469,"depth":75,"text":470},{"id":496,"depth":75,"text":497},{"id":609,"depth":75,"text":609,"children":1039},[1040,1041,1042],{"id":612,"depth":92,"text":613},{"id":780,"depth":92,"text":781},{"id":798,"depth":92,"text":798},{"id":812,"depth":75,"text":812,"children":1044},[1045,1046,1047,1048],{"id":815,"depth":92,"text":816},{"id":850,"depth":92,"text":851},{"id":883,"depth":92,"text":884},{"id":923,"depth":92,"text":924},{"id":941,"depth":75,"text":941},{"id":1000,"depth":75,"text":1000},"concept","md",{},"\u002Fwiki\u002Ffunction-calling","2026-06-21",[1057,1058],"claude-sonnet-4","gpt-4o",[1060,1061,1062],"coding\u002Fide\u002Fcursor","agent\u002Fplatform\u002Fcoze","agent\u002Fplatform\u002Fdify",{"title":11,"description":34},"function-calling","wiki\u002Ffunction-calling","让大模型根据用户意图自动选择并调用外部函数\u002FAPI 的能力。是 AI Agent 的基础能力，让模型从对话进化到行动。",[1068,1069,605],"Function Calling","工具调用","X1q1z61ut0hH0lDleq4y8k2zCCTHyDL9Tqs2Wrq4nMg",1782316490736]