[{"data":1,"prerenderedAt":2052},["ShallowReactive",2],{"docs-nav-titles":3,"page-docs_en-\u002Fguides\u002Ftool-calling":52},{"en":4,"id":39},{"\u002Fauthentication":5,"\u002Fchangelog":6,"\u002Fguides\u002Fbilling":7,"\u002Fguides\u002Ferrors":8,"\u002Fguides\u002Fjson-output":9,"\u002Fguides\u002Frate-limits":10,"\u002Fguides\u002Freasoning":11,"\u002Fguides\u002Fstreaming":12,"\u002Fguides\u002Ftool-calling":13,"\u002Fguides\u002Ftop-up":14,"\u002F":15,"\u002Fintegrations\u002Faider":16,"\u002Fintegrations\u002Fclaude-code":17,"\u002Fintegrations\u002Fcline":18,"\u002Fintegrations\u002Fcontinue":19,"\u002Fintegrations\u002Fgoose":20,"\u002Fintegrations\u002Fhermes":21,"\u002Fintegrations":22,"\u002Fintegrations\u002Fkilo-code":23,"\u002Fintegrations\u002Flangchain":24,"\u002Fintegrations\u002Foh-my-pi":25,"\u002Fintegrations\u002Fopenai-sdk":26,"\u002Fintegrations\u002Fopenclaw":27,"\u002Fintegrations\u002Fopencode":28,"\u002Fintegrations\u002Fpi":29,"\u002Fintegrations\u002Fvercel-ai-sdk":30,"\u002Fintegrations\u002Fzed":31,"\u002Fmodels":32,"\u002Fquickstart":33,"\u002Freference\u002Fchat-completions":34,"\u002Freference":22,"\u002Freference\u002Fmessages":35,"\u002Freference\u002Fmodels":36,"\u002Freference\u002Fmodels-retrieve":37,"\u002Fsupport":38},"Authentication","Changelog","Billing","Errors & retries","JSON output","Rate limits","Reasoning content","Streaming","Tool calling","Topping up with QRIS","Introduction","Aider","Claude Code","Cline","Continue","Goose","Hermes Agent","Overview","Kilo Code","LangChain (Python)","Oh My Pi","OpenAI SDKs","OpenClaw","OpenCode","Pi","Vercel AI SDK","Zed","Models","Quickstart","Chat completions","Messages","List models","Retrieve a model","Support",{"\u002Fauthentication":40,"\u002Fchangelog":6,"\u002Fguides\u002Fbilling":7,"\u002Fguides\u002Ferrors":41,"\u002Fguides\u002Fjson-output":42,"\u002Fguides\u002Frate-limits":43,"\u002Fguides\u002Freasoning":44,"\u002Fguides\u002Fstreaming":12,"\u002Fguides\u002Ftool-calling":13,"\u002Fguides\u002Ftop-up":45,"\u002F":46,"\u002Fintegrations\u002Faider":16,"\u002Fintegrations\u002Fclaude-code":17,"\u002Fintegrations\u002Fcline":18,"\u002Fintegrations\u002Fcontinue":19,"\u002Fintegrations\u002Fgoose":20,"\u002Fintegrations\u002Fhermes":21,"\u002Fintegrations":47,"\u002Fintegrations\u002Fkilo-code":23,"\u002Fintegrations\u002Flangchain":24,"\u002Fintegrations\u002Foh-my-pi":25,"\u002Fintegrations\u002Fopenai-sdk":48,"\u002Fintegrations\u002Fopenclaw":27,"\u002Fintegrations\u002Fopencode":28,"\u002Fintegrations\u002Fpi":29,"\u002Fintegrations\u002Fvercel-ai-sdk":30,"\u002Fintegrations\u002Fzed":31,"\u002Fmodels":49,"\u002Fquickstart":33,"\u002Freference\u002Fchat-completions":34,"\u002Freference":47,"\u002Freference\u002Fmessages":35,"\u002Freference\u002Fmodels":50,"\u002Freference\u002Fmodels-retrieve":51,"\u002Fsupport":38},"Autentikasi","Error & retry","Output JSON","Rate limit","Konten reasoning","Isi saldo dengan QRIS","Pengantar","Ringkasan","OpenAI SDK","Model","Daftar model","Ambil satu model",{"id":53,"title":13,"body":54,"description":2044,"extension":2045,"eyebrow":2046,"meta":2047,"navTitle":2046,"navigation":192,"path":2048,"seo":2049,"stem":2050,"__hash__":2051},"docs_en\u002Fguides\u002Ftool-calling.md",{"type":55,"value":56,"toc":2037},"minimark",[57,74,79,125,128,132,139,1434,1438,1441,1628,1631,1897,1904,1908,1971,1975,2033],[58,59,60,61,65,66,69,70,73],"p",{},"Tool calling (function calling) lets the model ask your code to run a function and then use the result in its answer. It uses the OpenAI ",[62,63,64],"code",{},"tools"," format unchanged: you describe functions with JSON Schema, the model replies with ",[62,67,68],{},"tool_calls",", you run them and send the results back as ",[62,71,72],{},"tool"," messages.",[75,76,78],"h2",{"id":77},"the-loop","The loop",[80,81,82,89,100,103,115],"ol",{},[83,84,85,86,88],"li",{},"Send the conversation with a ",[62,87,64],{}," list.",[83,90,91,92,95,96,99],{},"If the model wants a tool, the response has ",[62,93,94],{},"finish_reason: \"tool_calls\""," and ",[62,97,98],{},"message.tool_calls",".",[83,101,102],{},"Run each call in your code.",[83,104,105,106,108,109,111,112,99],{},"Append the assistant message (with its ",[62,107,68],{},") and one ",[62,110,72],{}," message per call, each with the matching ",[62,113,114],{},"tool_call_id",[83,116,117,118,121,122,99],{},"Send the conversation again. Repeat until ",[62,119,120],{},"finish_reason"," is ",[62,123,124],{},"\"stop\"",[58,126,127],{},"Each round trip is a separate request and is billed separately.",[75,129,131],{"id":130},"complete-example","Complete example",[58,133,134,135,138],{},"This example gives the model one function, ",[62,136,137],{},"get_order_status",", and runs the loop until the model answers in plain text.",[140,141,142,844],"code-group",{},[143,144,150],"pre",{"className":145,"code":146,"filename":147,"language":148,"meta":149,"style":149},"language-python shiki shiki-themes github-dark-default github-light-default","import json\nimport os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    base_url=\"https:\u002F\u002Fapi.larasrouter.com\u002Fv1\",\n    api_key=os.environ[\"LARAS_API_KEY\"],\n)\n\ntools = [\n    {\n        \"type\": \"function\",\n        \"function\": {\n            \"name\": \"get_order_status\",\n            \"description\": \"Look up the shipping status of an order by its ID.\",\n            \"parameters\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"order_id\": {\"type\": \"string\", \"description\": \"Order ID, e.g. INV-1042\"}\n                },\n                \"required\": [\"order_id\"],\n            },\n        },\n    }\n]\n\ndef get_order_status(order_id: str) -> dict:\n    # Your real lookup goes here.\n    return {\"order_id\": order_id, \"status\": \"shipped\", \"courier\": \"JNE\", \"eta_days\": 2}\n\nmessages = [\n    {\"role\": \"system\", \"content\": \"You are a helpful support agent for an online shop.\"},\n    {\"role\": \"user\", \"content\": \"Where is my order INV-1042?\"},\n]\n\nwhile True:\n    response = client.chat.completions.create(\n        model=\"deepseek-flash\",\n        messages=messages,\n        tools=tools,\n    )\n    message = response.choices[0].message\n\n    if not message.tool_calls:\n        print(message.content)\n        break\n\n    # Keep the assistant turn that asked for the tools, then answer each call.\n    messages.append(\n        {\n            \"role\": \"assistant\",\n            \"content\": message.content,\n            \"tool_calls\": [call.model_dump() for call in message.tool_calls],\n        }\n    )\n    for call in message.tool_calls:\n        args = json.loads(call.function.arguments)\n        result = get_order_status(**args)\n        messages.append(\n            {\"role\": \"tool\", \"tool_call_id\": call.id, \"content\": json.dumps(result)}\n        )\n","Python","python","",[62,151,152,165,173,187,194,206,222,239,245,250,261,267,281,290,303,316,324,337,345,376,382,396,402,408,414,420,425,451,458,502,507,517,544,567,572,577,588,599,612,623,634,640,657,662,674,683,689,694,700,706,712,725,734,755,761,766,778,789,806,812,838],{"__ignoreMap":149},[153,154,157,161],"span",{"class":155,"line":156},"line",1,[153,158,160],{"class":159},"s1PA9","import",[153,162,164],{"class":163},"sUq8j"," json\n",[153,166,168,170],{"class":155,"line":167},2,[153,169,160],{"class":159},[153,171,172],{"class":163}," os\n",[153,174,176,179,182,184],{"class":155,"line":175},3,[153,177,178],{"class":159},"from",[153,180,181],{"class":163}," openai ",[153,183,160],{"class":159},[153,185,186],{"class":163}," OpenAI\n",[153,188,190],{"class":155,"line":189},4,[153,191,193],{"emptyLinePlaceholder":192},true,"\n",[153,195,197,200,203],{"class":155,"line":196},5,[153,198,199],{"class":163},"client ",[153,201,202],{"class":159},"=",[153,204,205],{"class":163}," OpenAI(\n",[153,207,209,213,215,219],{"class":155,"line":208},6,[153,210,212],{"class":211},"sjwWW","    base_url",[153,214,202],{"class":159},[153,216,218],{"class":217},"sHdZ9","\"https:\u002F\u002Fapi.larasrouter.com\u002Fv1\"",[153,220,221],{"class":163},",\n",[153,223,225,228,230,233,236],{"class":155,"line":224},7,[153,226,227],{"class":211},"    api_key",[153,229,202],{"class":159},[153,231,232],{"class":163},"os.environ[",[153,234,235],{"class":217},"\"LARAS_API_KEY\"",[153,237,238],{"class":163},"],\n",[153,240,242],{"class":155,"line":241},8,[153,243,244],{"class":163},")\n",[153,246,248],{"class":155,"line":247},9,[153,249,193],{"emptyLinePlaceholder":192},[153,251,253,256,258],{"class":155,"line":252},10,[153,254,255],{"class":163},"tools ",[153,257,202],{"class":159},[153,259,260],{"class":163}," [\n",[153,262,264],{"class":155,"line":263},11,[153,265,266],{"class":163},"    {\n",[153,268,270,273,276,279],{"class":155,"line":269},12,[153,271,272],{"class":217},"        \"type\"",[153,274,275],{"class":163},": ",[153,277,278],{"class":217},"\"function\"",[153,280,221],{"class":163},[153,282,284,287],{"class":155,"line":283},13,[153,285,286],{"class":217},"        \"function\"",[153,288,289],{"class":163},": {\n",[153,291,293,296,298,301],{"class":155,"line":292},14,[153,294,295],{"class":217},"            \"name\"",[153,297,275],{"class":163},[153,299,300],{"class":217},"\"get_order_status\"",[153,302,221],{"class":163},[153,304,306,309,311,314],{"class":155,"line":305},15,[153,307,308],{"class":217},"            \"description\"",[153,310,275],{"class":163},[153,312,313],{"class":217},"\"Look up the shipping status of an order by its ID.\"",[153,315,221],{"class":163},[153,317,319,322],{"class":155,"line":318},16,[153,320,321],{"class":217},"            \"parameters\"",[153,323,289],{"class":163},[153,325,327,330,332,335],{"class":155,"line":326},17,[153,328,329],{"class":217},"                \"type\"",[153,331,275],{"class":163},[153,333,334],{"class":217},"\"object\"",[153,336,221],{"class":163},[153,338,340,343],{"class":155,"line":339},18,[153,341,342],{"class":217},"                \"properties\"",[153,344,289],{"class":163},[153,346,348,351,354,357,359,362,365,368,370,373],{"class":155,"line":347},19,[153,349,350],{"class":217},"                    \"order_id\"",[153,352,353],{"class":163},": {",[153,355,356],{"class":217},"\"type\"",[153,358,275],{"class":163},[153,360,361],{"class":217},"\"string\"",[153,363,364],{"class":163},", ",[153,366,367],{"class":217},"\"description\"",[153,369,275],{"class":163},[153,371,372],{"class":217},"\"Order ID, e.g. INV-1042\"",[153,374,375],{"class":163},"}\n",[153,377,379],{"class":155,"line":378},20,[153,380,381],{"class":163},"                },\n",[153,383,385,388,391,394],{"class":155,"line":384},21,[153,386,387],{"class":217},"                \"required\"",[153,389,390],{"class":163},": [",[153,392,393],{"class":217},"\"order_id\"",[153,395,238],{"class":163},[153,397,399],{"class":155,"line":398},22,[153,400,401],{"class":163},"            },\n",[153,403,405],{"class":155,"line":404},23,[153,406,407],{"class":163},"        },\n",[153,409,411],{"class":155,"line":410},24,[153,412,413],{"class":163},"    }\n",[153,415,417],{"class":155,"line":416},25,[153,418,419],{"class":163},"]\n",[153,421,423],{"class":155,"line":422},26,[153,424,193],{"emptyLinePlaceholder":192},[153,426,428,431,435,438,442,445,448],{"class":155,"line":427},27,[153,429,430],{"class":159},"def",[153,432,434],{"class":433},"sK34n"," get_order_status",[153,436,437],{"class":163},"(order_id: ",[153,439,441],{"class":440},"sYnYM","str",[153,443,444],{"class":163},") -> ",[153,446,447],{"class":440},"dict",[153,449,450],{"class":163},":\n",[153,452,454],{"class":155,"line":453},28,[153,455,457],{"class":456},"shPRk","    # Your real lookup goes here.\n",[153,459,461,464,467,469,472,475,477,480,482,485,487,490,492,495,497,500],{"class":155,"line":460},29,[153,462,463],{"class":159},"    return",[153,465,466],{"class":163}," {",[153,468,393],{"class":217},[153,470,471],{"class":163},": order_id, ",[153,473,474],{"class":217},"\"status\"",[153,476,275],{"class":163},[153,478,479],{"class":217},"\"shipped\"",[153,481,364],{"class":163},[153,483,484],{"class":217},"\"courier\"",[153,486,275],{"class":163},[153,488,489],{"class":217},"\"JNE\"",[153,491,364],{"class":163},[153,493,494],{"class":217},"\"eta_days\"",[153,496,275],{"class":163},[153,498,499],{"class":440},"2",[153,501,375],{"class":163},[153,503,505],{"class":155,"line":504},30,[153,506,193],{"emptyLinePlaceholder":192},[153,508,510,513,515],{"class":155,"line":509},31,[153,511,512],{"class":163},"messages ",[153,514,202],{"class":159},[153,516,260],{"class":163},[153,518,520,523,526,528,531,533,536,538,541],{"class":155,"line":519},32,[153,521,522],{"class":163},"    {",[153,524,525],{"class":217},"\"role\"",[153,527,275],{"class":163},[153,529,530],{"class":217},"\"system\"",[153,532,364],{"class":163},[153,534,535],{"class":217},"\"content\"",[153,537,275],{"class":163},[153,539,540],{"class":217},"\"You are a helpful support agent for an online shop.\"",[153,542,543],{"class":163},"},\n",[153,545,547,549,551,553,556,558,560,562,565],{"class":155,"line":546},33,[153,548,522],{"class":163},[153,550,525],{"class":217},[153,552,275],{"class":163},[153,554,555],{"class":217},"\"user\"",[153,557,364],{"class":163},[153,559,535],{"class":217},[153,561,275],{"class":163},[153,563,564],{"class":217},"\"Where is my order INV-1042?\"",[153,566,543],{"class":163},[153,568,570],{"class":155,"line":569},34,[153,571,419],{"class":163},[153,573,575],{"class":155,"line":574},35,[153,576,193],{"emptyLinePlaceholder":192},[153,578,580,583,586],{"class":155,"line":579},36,[153,581,582],{"class":159},"while",[153,584,585],{"class":440}," True",[153,587,450],{"class":163},[153,589,591,594,596],{"class":155,"line":590},37,[153,592,593],{"class":163},"    response ",[153,595,202],{"class":159},[153,597,598],{"class":163}," client.chat.completions.create(\n",[153,600,602,605,607,610],{"class":155,"line":601},38,[153,603,604],{"class":211},"        model",[153,606,202],{"class":159},[153,608,609],{"class":217},"\"deepseek-flash\"",[153,611,221],{"class":163},[153,613,615,618,620],{"class":155,"line":614},39,[153,616,617],{"class":211},"        messages",[153,619,202],{"class":159},[153,621,622],{"class":163},"messages,\n",[153,624,626,629,631],{"class":155,"line":625},40,[153,627,628],{"class":211},"        tools",[153,630,202],{"class":159},[153,632,633],{"class":163},"tools,\n",[153,635,637],{"class":155,"line":636},41,[153,638,639],{"class":163},"    )\n",[153,641,643,646,648,651,654],{"class":155,"line":642},42,[153,644,645],{"class":163},"    message ",[153,647,202],{"class":159},[153,649,650],{"class":163}," response.choices[",[153,652,653],{"class":440},"0",[153,655,656],{"class":163},"].message\n",[153,658,660],{"class":155,"line":659},43,[153,661,193],{"emptyLinePlaceholder":192},[153,663,665,668,671],{"class":155,"line":664},44,[153,666,667],{"class":159},"    if",[153,669,670],{"class":159}," not",[153,672,673],{"class":163}," message.tool_calls:\n",[153,675,677,680],{"class":155,"line":676},45,[153,678,679],{"class":440},"        print",[153,681,682],{"class":163},"(message.content)\n",[153,684,686],{"class":155,"line":685},46,[153,687,688],{"class":159},"        break\n",[153,690,692],{"class":155,"line":691},47,[153,693,193],{"emptyLinePlaceholder":192},[153,695,697],{"class":155,"line":696},48,[153,698,699],{"class":456},"    # Keep the assistant turn that asked for the tools, then answer each call.\n",[153,701,703],{"class":155,"line":702},49,[153,704,705],{"class":163},"    messages.append(\n",[153,707,709],{"class":155,"line":708},50,[153,710,711],{"class":163},"        {\n",[153,713,715,718,720,723],{"class":155,"line":714},51,[153,716,717],{"class":217},"            \"role\"",[153,719,275],{"class":163},[153,721,722],{"class":217},"\"assistant\"",[153,724,221],{"class":163},[153,726,728,731],{"class":155,"line":727},52,[153,729,730],{"class":217},"            \"content\"",[153,732,733],{"class":163},": message.content,\n",[153,735,737,740,743,746,749,752],{"class":155,"line":736},53,[153,738,739],{"class":217},"            \"tool_calls\"",[153,741,742],{"class":163},": [call.model_dump() ",[153,744,745],{"class":159},"for",[153,747,748],{"class":163}," call ",[153,750,751],{"class":159},"in",[153,753,754],{"class":163}," message.tool_calls],\n",[153,756,758],{"class":155,"line":757},54,[153,759,760],{"class":163},"        }\n",[153,762,764],{"class":155,"line":763},55,[153,765,639],{"class":163},[153,767,769,772,774,776],{"class":155,"line":768},56,[153,770,771],{"class":159},"    for",[153,773,748],{"class":163},[153,775,751],{"class":159},[153,777,673],{"class":163},[153,779,781,784,786],{"class":155,"line":780},57,[153,782,783],{"class":163},"        args ",[153,785,202],{"class":159},[153,787,788],{"class":163}," json.loads(call.function.arguments)\n",[153,790,792,795,797,800,803],{"class":155,"line":791},58,[153,793,794],{"class":163},"        result ",[153,796,202],{"class":159},[153,798,799],{"class":163}," get_order_status(",[153,801,802],{"class":159},"**",[153,804,805],{"class":163},"args)\n",[153,807,809],{"class":155,"line":808},59,[153,810,811],{"class":163},"        messages.append(\n",[153,813,815,818,820,822,825,827,830,833,835],{"class":155,"line":814},60,[153,816,817],{"class":163},"            {",[153,819,525],{"class":217},[153,821,275],{"class":163},[153,823,824],{"class":217},"\"tool\"",[153,826,364],{"class":163},[153,828,829],{"class":217},"\"tool_call_id\"",[153,831,832],{"class":163},": call.id, ",[153,834,535],{"class":217},[153,836,837],{"class":163},": json.dumps(result)}\n",[153,839,841],{"class":155,"line":840},61,[153,842,843],{"class":163},"        )\n",[143,845,850],{"className":846,"code":847,"filename":848,"language":849,"meta":149,"style":149},"language-typescript shiki shiki-themes github-dark-default github-light-default","import OpenAI from \"openai\";\nimport type { ChatCompletionMessageParam, ChatCompletionTool } from \"openai\u002Fresources\";\n\nconst client = new OpenAI({\n  baseURL: \"https:\u002F\u002Fapi.larasrouter.com\u002Fv1\",\n  apiKey: process.env.LARAS_API_KEY,\n});\n\nconst tools: ChatCompletionTool[] = [\n  {\n    type: \"function\",\n    function: {\n      name: \"get_order_status\",\n      description: \"Look up the shipping status of an order by its ID.\",\n      parameters: {\n        type: \"object\",\n        properties: {\n          order_id: { type: \"string\", description: \"Order ID, e.g. INV-1042\" },\n        },\n        required: [\"order_id\"],\n      },\n    },\n  },\n];\n\nfunction getOrderStatus(orderId: string) {\n  \u002F\u002F Your real lookup goes here.\n  return { order_id: orderId, status: \"shipped\", courier: \"JNE\", eta_days: 2 };\n}\n\nconst messages: ChatCompletionMessageParam[] = [\n  { role: \"system\", content: \"You are a helpful support agent for an online shop.\" },\n  { role: \"user\", content: \"Where is my order INV-1042?\" },\n];\n\nwhile (true) {\n  const response = await client.chat.completions.create({\n    model: \"deepseek-flash\",\n    messages,\n    tools,\n  });\n  const message = response.choices[0].message;\n\n  if (!message.tool_calls?.length) {\n    console.log(message.content);\n    break;\n  }\n\n  \u002F\u002F Keep the assistant turn that asked for the tools, then answer each call.\n  messages.push({ role: \"assistant\", content: message.content, tool_calls: message.tool_calls });\n  for (const call of message.tool_calls) {\n    if (call.type !== \"function\") continue;\n    const args = JSON.parse(call.function.arguments);\n    messages.push({\n      role: \"tool\",\n      tool_call_id: call.id,\n      content: JSON.stringify(getOrderStatus(args.order_id)),\n    });\n  }\n}\n","Node.js","typescript",[62,851,852,867,884,888,908,917,927,932,936,956,961,970,975,984,993,998,1007,1012,1027,1031,1040,1045,1050,1055,1060,1064,1086,1091,1114,1118,1122,1140,1154,1166,1170,1174,1186,1207,1216,1221,1226,1231,1247,1251,1269,1280,1287,1292,1296,1301,1317,1335,1356,1377,1386,1395,1400,1421,1426,1430],{"__ignoreMap":149},[153,853,854,856,859,861,864],{"class":155,"line":156},[153,855,160],{"class":159},[153,857,858],{"class":163}," OpenAI ",[153,860,178],{"class":159},[153,862,863],{"class":217}," \"openai\"",[153,865,866],{"class":163},";\n",[153,868,869,871,874,877,879,882],{"class":155,"line":167},[153,870,160],{"class":159},[153,872,873],{"class":159}," type",[153,875,876],{"class":163}," { ChatCompletionMessageParam, ChatCompletionTool } ",[153,878,178],{"class":159},[153,880,881],{"class":217}," \"openai\u002Fresources\"",[153,883,866],{"class":163},[153,885,886],{"class":155,"line":175},[153,887,193],{"emptyLinePlaceholder":192},[153,889,890,893,896,899,902,905],{"class":155,"line":189},[153,891,892],{"class":159},"const",[153,894,895],{"class":440}," client",[153,897,898],{"class":159}," =",[153,900,901],{"class":159}," new",[153,903,904],{"class":433}," OpenAI",[153,906,907],{"class":163},"({\n",[153,909,910,913,915],{"class":155,"line":196},[153,911,912],{"class":163},"  baseURL: ",[153,914,218],{"class":217},[153,916,221],{"class":163},[153,918,919,922,925],{"class":155,"line":208},[153,920,921],{"class":163},"  apiKey: process.env.",[153,923,924],{"class":440},"LARAS_API_KEY",[153,926,221],{"class":163},[153,928,929],{"class":155,"line":224},[153,930,931],{"class":163},"});\n",[153,933,934],{"class":155,"line":241},[153,935,193],{"emptyLinePlaceholder":192},[153,937,938,940,943,946,949,952,954],{"class":155,"line":247},[153,939,892],{"class":159},[153,941,942],{"class":440}," tools",[153,944,945],{"class":159},":",[153,947,948],{"class":211}," ChatCompletionTool",[153,950,951],{"class":163},"[] ",[153,953,202],{"class":159},[153,955,260],{"class":163},[153,957,958],{"class":155,"line":252},[153,959,960],{"class":163},"  {\n",[153,962,963,966,968],{"class":155,"line":263},[153,964,965],{"class":163},"    type: ",[153,967,278],{"class":217},[153,969,221],{"class":163},[153,971,972],{"class":155,"line":269},[153,973,974],{"class":163},"    function: {\n",[153,976,977,980,982],{"class":155,"line":283},[153,978,979],{"class":163},"      name: ",[153,981,300],{"class":217},[153,983,221],{"class":163},[153,985,986,989,991],{"class":155,"line":292},[153,987,988],{"class":163},"      description: ",[153,990,313],{"class":217},[153,992,221],{"class":163},[153,994,995],{"class":155,"line":305},[153,996,997],{"class":163},"      parameters: {\n",[153,999,1000,1003,1005],{"class":155,"line":318},[153,1001,1002],{"class":163},"        type: ",[153,1004,334],{"class":217},[153,1006,221],{"class":163},[153,1008,1009],{"class":155,"line":326},[153,1010,1011],{"class":163},"        properties: {\n",[153,1013,1014,1017,1019,1022,1024],{"class":155,"line":339},[153,1015,1016],{"class":163},"          order_id: { type: ",[153,1018,361],{"class":217},[153,1020,1021],{"class":163},", description: ",[153,1023,372],{"class":217},[153,1025,1026],{"class":163}," },\n",[153,1028,1029],{"class":155,"line":347},[153,1030,407],{"class":163},[153,1032,1033,1036,1038],{"class":155,"line":378},[153,1034,1035],{"class":163},"        required: [",[153,1037,393],{"class":217},[153,1039,238],{"class":163},[153,1041,1042],{"class":155,"line":384},[153,1043,1044],{"class":163},"      },\n",[153,1046,1047],{"class":155,"line":398},[153,1048,1049],{"class":163},"    },\n",[153,1051,1052],{"class":155,"line":404},[153,1053,1054],{"class":163},"  },\n",[153,1056,1057],{"class":155,"line":410},[153,1058,1059],{"class":163},"];\n",[153,1061,1062],{"class":155,"line":416},[153,1063,193],{"emptyLinePlaceholder":192},[153,1065,1066,1069,1072,1075,1078,1080,1083],{"class":155,"line":422},[153,1067,1068],{"class":159},"function",[153,1070,1071],{"class":433}," getOrderStatus",[153,1073,1074],{"class":163},"(",[153,1076,1077],{"class":211},"orderId",[153,1079,945],{"class":159},[153,1081,1082],{"class":440}," string",[153,1084,1085],{"class":163},") {\n",[153,1087,1088],{"class":155,"line":427},[153,1089,1090],{"class":456},"  \u002F\u002F Your real lookup goes here.\n",[153,1092,1093,1096,1099,1101,1104,1106,1109,1111],{"class":155,"line":453},[153,1094,1095],{"class":159},"  return",[153,1097,1098],{"class":163}," { order_id: orderId, status: ",[153,1100,479],{"class":217},[153,1102,1103],{"class":163},", courier: ",[153,1105,489],{"class":217},[153,1107,1108],{"class":163},", eta_days: ",[153,1110,499],{"class":440},[153,1112,1113],{"class":163}," };\n",[153,1115,1116],{"class":155,"line":460},[153,1117,375],{"class":163},[153,1119,1120],{"class":155,"line":504},[153,1121,193],{"emptyLinePlaceholder":192},[153,1123,1124,1126,1129,1131,1134,1136,1138],{"class":155,"line":509},[153,1125,892],{"class":159},[153,1127,1128],{"class":440}," messages",[153,1130,945],{"class":159},[153,1132,1133],{"class":211}," ChatCompletionMessageParam",[153,1135,951],{"class":163},[153,1137,202],{"class":159},[153,1139,260],{"class":163},[153,1141,1142,1145,1147,1150,1152],{"class":155,"line":519},[153,1143,1144],{"class":163},"  { role: ",[153,1146,530],{"class":217},[153,1148,1149],{"class":163},", content: ",[153,1151,540],{"class":217},[153,1153,1026],{"class":163},[153,1155,1156,1158,1160,1162,1164],{"class":155,"line":546},[153,1157,1144],{"class":163},[153,1159,555],{"class":217},[153,1161,1149],{"class":163},[153,1163,564],{"class":217},[153,1165,1026],{"class":163},[153,1167,1168],{"class":155,"line":569},[153,1169,1059],{"class":163},[153,1171,1172],{"class":155,"line":574},[153,1173,193],{"emptyLinePlaceholder":192},[153,1175,1176,1178,1181,1184],{"class":155,"line":579},[153,1177,582],{"class":159},[153,1179,1180],{"class":163}," (",[153,1182,1183],{"class":440},"true",[153,1185,1085],{"class":163},[153,1187,1188,1191,1194,1196,1199,1202,1205],{"class":155,"line":590},[153,1189,1190],{"class":159},"  const",[153,1192,1193],{"class":440}," response",[153,1195,898],{"class":159},[153,1197,1198],{"class":159}," await",[153,1200,1201],{"class":163}," client.chat.completions.",[153,1203,1204],{"class":433},"create",[153,1206,907],{"class":163},[153,1208,1209,1212,1214],{"class":155,"line":601},[153,1210,1211],{"class":163},"    model: ",[153,1213,609],{"class":217},[153,1215,221],{"class":163},[153,1217,1218],{"class":155,"line":614},[153,1219,1220],{"class":163},"    messages,\n",[153,1222,1223],{"class":155,"line":625},[153,1224,1225],{"class":163},"    tools,\n",[153,1227,1228],{"class":155,"line":636},[153,1229,1230],{"class":163},"  });\n",[153,1232,1233,1235,1238,1240,1242,1244],{"class":155,"line":642},[153,1234,1190],{"class":159},[153,1236,1237],{"class":440}," message",[153,1239,898],{"class":159},[153,1241,650],{"class":163},[153,1243,653],{"class":440},[153,1245,1246],{"class":163},"].message;\n",[153,1248,1249],{"class":155,"line":659},[153,1250,193],{"emptyLinePlaceholder":192},[153,1252,1253,1256,1258,1261,1264,1267],{"class":155,"line":664},[153,1254,1255],{"class":159},"  if",[153,1257,1180],{"class":163},[153,1259,1260],{"class":159},"!",[153,1262,1263],{"class":163},"message.tool_calls?.",[153,1265,1266],{"class":440},"length",[153,1268,1085],{"class":163},[153,1270,1271,1274,1277],{"class":155,"line":676},[153,1272,1273],{"class":163},"    console.",[153,1275,1276],{"class":433},"log",[153,1278,1279],{"class":163},"(message.content);\n",[153,1281,1282,1285],{"class":155,"line":685},[153,1283,1284],{"class":159},"    break",[153,1286,866],{"class":163},[153,1288,1289],{"class":155,"line":691},[153,1290,1291],{"class":163},"  }\n",[153,1293,1294],{"class":155,"line":696},[153,1295,193],{"emptyLinePlaceholder":192},[153,1297,1298],{"class":155,"line":702},[153,1299,1300],{"class":456},"  \u002F\u002F Keep the assistant turn that asked for the tools, then answer each call.\n",[153,1302,1303,1306,1309,1312,1314],{"class":155,"line":708},[153,1304,1305],{"class":163},"  messages.",[153,1307,1308],{"class":433},"push",[153,1310,1311],{"class":163},"({ role: ",[153,1313,722],{"class":217},[153,1315,1316],{"class":163},", content: message.content, tool_calls: message.tool_calls });\n",[153,1318,1319,1322,1324,1326,1329,1332],{"class":155,"line":714},[153,1320,1321],{"class":159},"  for",[153,1323,1180],{"class":163},[153,1325,892],{"class":159},[153,1327,1328],{"class":440}," call",[153,1330,1331],{"class":159}," of",[153,1333,1334],{"class":163}," message.tool_calls) {\n",[153,1336,1337,1339,1342,1345,1348,1351,1354],{"class":155,"line":727},[153,1338,667],{"class":159},[153,1340,1341],{"class":163}," (call.type ",[153,1343,1344],{"class":159},"!==",[153,1346,1347],{"class":217}," \"function\"",[153,1349,1350],{"class":163},") ",[153,1352,1353],{"class":159},"continue",[153,1355,866],{"class":163},[153,1357,1358,1361,1364,1366,1369,1371,1374],{"class":155,"line":736},[153,1359,1360],{"class":159},"    const",[153,1362,1363],{"class":440}," args",[153,1365,898],{"class":159},[153,1367,1368],{"class":440}," JSON",[153,1370,99],{"class":163},[153,1372,1373],{"class":433},"parse",[153,1375,1376],{"class":163},"(call.function.arguments);\n",[153,1378,1379,1382,1384],{"class":155,"line":757},[153,1380,1381],{"class":163},"    messages.",[153,1383,1308],{"class":433},[153,1385,907],{"class":163},[153,1387,1388,1391,1393],{"class":155,"line":763},[153,1389,1390],{"class":163},"      role: ",[153,1392,824],{"class":217},[153,1394,221],{"class":163},[153,1396,1397],{"class":155,"line":768},[153,1398,1399],{"class":163},"      tool_call_id: call.id,\n",[153,1401,1402,1405,1408,1410,1413,1415,1418],{"class":155,"line":780},[153,1403,1404],{"class":163},"      content: ",[153,1406,1407],{"class":440},"JSON",[153,1409,99],{"class":163},[153,1411,1412],{"class":433},"stringify",[153,1414,1074],{"class":163},[153,1416,1417],{"class":433},"getOrderStatus",[153,1419,1420],{"class":163},"(args.order_id)),\n",[153,1422,1423],{"class":155,"line":791},[153,1424,1425],{"class":163},"    });\n",[153,1427,1428],{"class":155,"line":808},[153,1429,1291],{"class":163},[153,1431,1432],{"class":155,"line":814},[153,1433,375],{"class":163},[75,1435,1437],{"id":1436},"what-goes-over-the-wire","What goes over the wire",[58,1439,1440],{},"The first response asks for the tool:",[143,1442,1447],{"className":1443,"code":1444,"filename":1445,"language":1446,"meta":149,"style":149},"language-json shiki shiki-themes github-dark-default github-light-default","{\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"message\": {\n        \"role\": \"assistant\",\n        \"content\": \"\",\n        \"tool_calls\": [\n          {\n            \"id\": \"call_0\",\n            \"type\": \"function\",\n            \"function\": { \"name\": \"get_order_status\", \"arguments\": \"{\\\"order_id\\\": \\\"INV-1042\\\"}\" }\n          }\n        ]\n      },\n      \"finish_reason\": \"tool_calls\"\n    }\n  ]\n}\n","Response 1 — the model calls a tool","json",[62,1448,1449,1454,1463,1467,1478,1485,1496,1508,1515,1520,1532,1543,1591,1596,1601,1605,1615,1619,1624],{"__ignoreMap":149},[153,1450,1451],{"class":155,"line":156},[153,1452,1453],{"class":163},"{\n",[153,1455,1456,1460],{"class":155,"line":167},[153,1457,1459],{"class":1458},"sGSaJ","  \"choices\"",[153,1461,1462],{"class":163},": [\n",[153,1464,1465],{"class":155,"line":175},[153,1466,266],{"class":163},[153,1468,1469,1472,1474,1476],{"class":155,"line":189},[153,1470,1471],{"class":1458},"      \"index\"",[153,1473,275],{"class":163},[153,1475,653],{"class":440},[153,1477,221],{"class":163},[153,1479,1480,1483],{"class":155,"line":196},[153,1481,1482],{"class":1458},"      \"message\"",[153,1484,289],{"class":163},[153,1486,1487,1490,1492,1494],{"class":155,"line":208},[153,1488,1489],{"class":1458},"        \"role\"",[153,1491,275],{"class":163},[153,1493,722],{"class":217},[153,1495,221],{"class":163},[153,1497,1498,1501,1503,1506],{"class":155,"line":224},[153,1499,1500],{"class":1458},"        \"content\"",[153,1502,275],{"class":163},[153,1504,1505],{"class":217},"\"\"",[153,1507,221],{"class":163},[153,1509,1510,1513],{"class":155,"line":241},[153,1511,1512],{"class":1458},"        \"tool_calls\"",[153,1514,1462],{"class":163},[153,1516,1517],{"class":155,"line":247},[153,1518,1519],{"class":163},"          {\n",[153,1521,1522,1525,1527,1530],{"class":155,"line":252},[153,1523,1524],{"class":1458},"            \"id\"",[153,1526,275],{"class":163},[153,1528,1529],{"class":217},"\"call_0\"",[153,1531,221],{"class":163},[153,1533,1534,1537,1539,1541],{"class":155,"line":263},[153,1535,1536],{"class":1458},"            \"type\"",[153,1538,275],{"class":163},[153,1540,278],{"class":217},[153,1542,221],{"class":163},[153,1544,1545,1548,1551,1554,1556,1558,1560,1563,1565,1568,1571,1574,1576,1578,1580,1583,1585,1588],{"class":155,"line":269},[153,1546,1547],{"class":1458},"            \"function\"",[153,1549,1550],{"class":163},": { ",[153,1552,1553],{"class":1458},"\"name\"",[153,1555,275],{"class":163},[153,1557,300],{"class":217},[153,1559,364],{"class":163},[153,1561,1562],{"class":1458},"\"arguments\"",[153,1564,275],{"class":163},[153,1566,1567],{"class":217},"\"{",[153,1569,1570],{"class":159},"\\\"",[153,1572,1573],{"class":217},"order_id",[153,1575,1570],{"class":159},[153,1577,275],{"class":217},[153,1579,1570],{"class":159},[153,1581,1582],{"class":217},"INV-1042",[153,1584,1570],{"class":159},[153,1586,1587],{"class":217},"}\"",[153,1589,1590],{"class":163}," }\n",[153,1592,1593],{"class":155,"line":283},[153,1594,1595],{"class":163},"          }\n",[153,1597,1598],{"class":155,"line":292},[153,1599,1600],{"class":163},"        ]\n",[153,1602,1603],{"class":155,"line":305},[153,1604,1044],{"class":163},[153,1606,1607,1610,1612],{"class":155,"line":318},[153,1608,1609],{"class":1458},"      \"finish_reason\"",[153,1611,275],{"class":163},[153,1613,1614],{"class":217},"\"tool_calls\"\n",[153,1616,1617],{"class":155,"line":326},[153,1618,413],{"class":163},[153,1620,1621],{"class":155,"line":339},[153,1622,1623],{"class":163},"  ]\n",[153,1625,1626],{"class":155,"line":347},[153,1627,375],{"class":163},[58,1629,1630],{},"The second request sends the whole conversation back, including the tool result:",[143,1632,1635],{"className":1443,"code":1633,"filename":1634,"language":1446,"meta":149,"style":149},"[\n  { \"role\": \"system\", \"content\": \"You are a helpful support agent for an online shop.\" },\n  { \"role\": \"user\", \"content\": \"Where is my order INV-1042?\" },\n  {\n    \"role\": \"assistant\",\n    \"content\": \"\",\n    \"tool_calls\": [\n      {\n        \"id\": \"call_0\",\n        \"type\": \"function\",\n        \"function\": { \"name\": \"get_order_status\", \"arguments\": \"{\\\"order_id\\\": \\\"INV-1042\\\"}\" }\n      }\n    ]\n  },\n  {\n    \"role\": \"tool\",\n    \"tool_call_id\": \"call_0\",\n    \"content\": \"{\\\"order_id\\\": \\\"INV-1042\\\", \\\"status\\\": \\\"shipped\\\", \\\"courier\\\": \\\"JNE\\\", \\\"eta_days\\\": 2}\"\n  }\n]\n","Request 2 — messages",[62,1636,1637,1642,1663,1683,1687,1698,1709,1716,1721,1732,1742,1780,1785,1790,1794,1798,1808,1819,1889,1893],{"__ignoreMap":149},[153,1638,1639],{"class":155,"line":156},[153,1640,1641],{"class":163},"[\n",[153,1643,1644,1647,1649,1651,1653,1655,1657,1659,1661],{"class":155,"line":167},[153,1645,1646],{"class":163},"  { ",[153,1648,525],{"class":1458},[153,1650,275],{"class":163},[153,1652,530],{"class":217},[153,1654,364],{"class":163},[153,1656,535],{"class":1458},[153,1658,275],{"class":163},[153,1660,540],{"class":217},[153,1662,1026],{"class":163},[153,1664,1665,1667,1669,1671,1673,1675,1677,1679,1681],{"class":155,"line":175},[153,1666,1646],{"class":163},[153,1668,525],{"class":1458},[153,1670,275],{"class":163},[153,1672,555],{"class":217},[153,1674,364],{"class":163},[153,1676,535],{"class":1458},[153,1678,275],{"class":163},[153,1680,564],{"class":217},[153,1682,1026],{"class":163},[153,1684,1685],{"class":155,"line":189},[153,1686,960],{"class":163},[153,1688,1689,1692,1694,1696],{"class":155,"line":196},[153,1690,1691],{"class":1458},"    \"role\"",[153,1693,275],{"class":163},[153,1695,722],{"class":217},[153,1697,221],{"class":163},[153,1699,1700,1703,1705,1707],{"class":155,"line":208},[153,1701,1702],{"class":1458},"    \"content\"",[153,1704,275],{"class":163},[153,1706,1505],{"class":217},[153,1708,221],{"class":163},[153,1710,1711,1714],{"class":155,"line":224},[153,1712,1713],{"class":1458},"    \"tool_calls\"",[153,1715,1462],{"class":163},[153,1717,1718],{"class":155,"line":241},[153,1719,1720],{"class":163},"      {\n",[153,1722,1723,1726,1728,1730],{"class":155,"line":247},[153,1724,1725],{"class":1458},"        \"id\"",[153,1727,275],{"class":163},[153,1729,1529],{"class":217},[153,1731,221],{"class":163},[153,1733,1734,1736,1738,1740],{"class":155,"line":252},[153,1735,272],{"class":1458},[153,1737,275],{"class":163},[153,1739,278],{"class":217},[153,1741,221],{"class":163},[153,1743,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778],{"class":155,"line":263},[153,1745,286],{"class":1458},[153,1747,1550],{"class":163},[153,1749,1553],{"class":1458},[153,1751,275],{"class":163},[153,1753,300],{"class":217},[153,1755,364],{"class":163},[153,1757,1562],{"class":1458},[153,1759,275],{"class":163},[153,1761,1567],{"class":217},[153,1763,1570],{"class":159},[153,1765,1573],{"class":217},[153,1767,1570],{"class":159},[153,1769,275],{"class":217},[153,1771,1570],{"class":159},[153,1773,1582],{"class":217},[153,1775,1570],{"class":159},[153,1777,1587],{"class":217},[153,1779,1590],{"class":163},[153,1781,1782],{"class":155,"line":269},[153,1783,1784],{"class":163},"      }\n",[153,1786,1787],{"class":155,"line":283},[153,1788,1789],{"class":163},"    ]\n",[153,1791,1792],{"class":155,"line":292},[153,1793,1054],{"class":163},[153,1795,1796],{"class":155,"line":305},[153,1797,960],{"class":163},[153,1799,1800,1802,1804,1806],{"class":155,"line":318},[153,1801,1691],{"class":1458},[153,1803,275],{"class":163},[153,1805,824],{"class":217},[153,1807,221],{"class":163},[153,1809,1810,1813,1815,1817],{"class":155,"line":326},[153,1811,1812],{"class":1458},"    \"tool_call_id\"",[153,1814,275],{"class":163},[153,1816,1529],{"class":217},[153,1818,221],{"class":163},[153,1820,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1848,1850,1852,1854,1857,1859,1861,1863,1866,1868,1870,1872,1875,1877,1879,1881,1884,1886],{"class":155,"line":339},[153,1822,1702],{"class":1458},[153,1824,275],{"class":163},[153,1826,1567],{"class":217},[153,1828,1570],{"class":159},[153,1830,1573],{"class":217},[153,1832,1570],{"class":159},[153,1834,275],{"class":217},[153,1836,1570],{"class":159},[153,1838,1582],{"class":217},[153,1840,1570],{"class":159},[153,1842,364],{"class":217},[153,1844,1570],{"class":159},[153,1846,1847],{"class":217},"status",[153,1849,1570],{"class":159},[153,1851,275],{"class":217},[153,1853,1570],{"class":159},[153,1855,1856],{"class":217},"shipped",[153,1858,1570],{"class":159},[153,1860,364],{"class":217},[153,1862,1570],{"class":159},[153,1864,1865],{"class":217},"courier",[153,1867,1570],{"class":159},[153,1869,275],{"class":217},[153,1871,1570],{"class":159},[153,1873,1874],{"class":217},"JNE",[153,1876,1570],{"class":159},[153,1878,364],{"class":217},[153,1880,1570],{"class":159},[153,1882,1883],{"class":217},"eta_days",[153,1885,1570],{"class":159},[153,1887,1888],{"class":217},": 2}\"\n",[153,1890,1891],{"class":155,"line":347},[153,1892,1291],{"class":163},[153,1894,1895],{"class":155,"line":378},[153,1896,419],{"class":163},[58,1898,1899,1900],{},"And the model answers: ",[1901,1902,1903],"em",{},"\"Your order INV-1042 has shipped with JNE and should arrive in about 2 days.\"",[75,1905,1907],{"id":1906},"controlling-tool-use","Controlling tool use",[1909,1910,1911,1926],"table",{},[1912,1913,1914],"thead",{},[1915,1916,1917,1923],"tr",{},[1918,1919,1920],"th",{},[62,1921,1922],{},"tool_choice",[1918,1924,1925],{},"Behaviour",[1927,1928,1929,1941,1951,1961],"tbody",{},[1915,1930,1931,1938],{},[1932,1933,1934,1937],"td",{},[62,1935,1936],{},"\"auto\""," (default when tools are present)",[1932,1939,1940],{},"The model decides whether to call a tool.",[1915,1942,1943,1948],{},[1932,1944,1945],{},[62,1946,1947],{},"\"none\"",[1932,1949,1950],{},"The model answers in text and calls no tool.",[1915,1952,1953,1958],{},[1932,1954,1955],{},[62,1956,1957],{},"\"required\"",[1932,1959,1960],{},"The model must call at least one tool.",[1915,1962,1963,1968],{},[1932,1964,1965],{},[62,1966,1967],{},"{\"type\": \"function\", \"function\": {\"name\": \"get_order_status\"}}",[1932,1969,1970],{},"The model must call that function.",[75,1972,1974],{"id":1973},"tips","Tips",[1976,1977,1978,1989,2001,2027],"ul",{},[83,1979,1980,1984,1985,1988],{},[1981,1982,1983],"strong",{},"Validate arguments."," ",[62,1986,1987],{},"function.arguments"," is a JSON string written by the model. Parse it defensively and check it against your schema before acting on it.",[83,1990,1991,1994,1995,1997,1998,2000],{},[1981,1992,1993],{},"Several calls at once."," A response can contain more than one entry in ",[62,1996,68],{},". Answer every one, each with its own ",[62,1999,114],{},", before the next request.",[83,2002,2003,2006,2007,2010,2011,2014,2015,2017,2018,2021,2022,121,2024,99],{},[1981,2004,2005],{},"Streaming."," With ",[62,2008,2009],{},"\"stream\": true",", tool calls arrive as ",[62,2012,2013],{},"delta.tool_calls"," fragments; concatenate ",[62,2016,1987],{}," by ",[62,2019,2020],{},"index"," until ",[62,2023,120],{},[62,2025,2026],{},"\"tool_calls\"",[83,2028,2029,2032],{},[1981,2030,2031],{},"Token cost."," Tool definitions are part of the prompt and count as input tokens on every request. Long, stable prefixes — system prompt, tools — are often served from cache at the lower price.",[2034,2035,2036],"style",{},"html pre.shiki code .s1PA9, html code.shiki .s1PA9{--shiki-default:#FF7B72;--shiki-light:#CF222E}html pre.shiki code .sUq8j, html code.shiki .sUq8j{--shiki-default:#E6EDF3;--shiki-light:#1F2328}html pre.shiki code .sjwWW, html code.shiki .sjwWW{--shiki-default:#FFA657;--shiki-light:#953800}html pre.shiki code .sHdZ9, html code.shiki .sHdZ9{--shiki-default:#A5D6FF;--shiki-light:#0A3069}html pre.shiki code .sK34n, html code.shiki .sK34n{--shiki-default:#D2A8FF;--shiki-light:#8250DF}html pre.shiki code .sYnYM, html code.shiki .sYnYM{--shiki-default:#79C0FF;--shiki-light:#0550AE}html pre.shiki code .shPRk, html code.shiki .shPRk{--shiki-default:#8B949E;--shiki-light:#6E7781}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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .sGSaJ, html code.shiki .sGSaJ{--shiki-default:#7EE787;--shiki-light:#116329}",{"title":149,"searchDepth":175,"depth":175,"links":2038},[2039,2040,2041,2042,2043],{"id":77,"depth":167,"text":78},{"id":130,"depth":167,"text":131},{"id":1436,"depth":167,"text":1437},{"id":1906,"depth":167,"text":1907},{"id":1973,"depth":167,"text":1974},"Let deepseek-flash call your functions, using the OpenAI tools format, with a complete multi-turn example.","md",null,{},"\u002Fguides\u002Ftool-calling",{"title":13,"description":2044},"guides\u002Ftool-calling","WPiUtujTbLOdCtEskvnucYU6Xqnb0BwlvJ4QM-JENLc",1793333617465]