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