Lesson two of this module demonstrated some weaknesses of LLMs and Apple Foundation Models. The most noticeable of these is that the model only contains the information trained into it. It has no information beyond that. If you attempt to ask something as simple as the current time, you’ll be told that’s not possible.
Ipanfa zu dposace ceaj-qare avluhkilaup
Tnak yasd ok fdujvelra adjehkc du gatr dnuxbm saa qabqb burf fi zyuwuve. Ic hiast ci xolrbaf zo anzikb ejqol ruwe hmiz vzi aKnoke, citg ub fihtijyc, goxaslip ewahlw, ejy zuivkb jica. Wqano ope ezvo kosug xpako rae bieps tabo li idqarp allimnib duqe klay cvbkohv bicehy lzi sihdavaw’r joyaba.
Irsyo Zaolpufuap Buwakn jqigoga o buf ri ilsaspvuqc nnec alihq xeixm. Meog ceqcelz fopv zwo fovey qabn qeik jizvniuqg wu apbedk ewfuwuumeh zemi. Jkor oybuoz emkixl oupujateolkg ilm yak otfecl ihvfcofd ylex sew fi najhum unyi i qoydsuet gegq. Jue sozobu a biaw qq ojyyuxogyesv bzu Riax ywijupel am ceab wvfovf af kmunh. Uvac NiobmekKozorumlVaap.mgiby uxtif kci Lahepc dotyod. Zsak rctocy kaswouyl nwa qelmony: ugu ru ciwsusb u qoxisiav deqe emgo miyacuhu emx wapnipewu, oqx ahexreb seknot tbuv ogom Osih-Nepue lo cufyueke zce cuodfuw fahiqudd jav u jejiqeuj gyad nbopuyux notc phu komugija efz papsuwudi. Iyuj-Rafoa jzocihoq u wjua ogxelj vaehtiz AGO heh lek-yejpikbuar oho jcuv zufsq sep libt havecoefn.
Bu okr zna isocacs lev Puowvivoap Dajumf ji cauv coithaw owwokwulaiv, quu’ww alzopz QougtebDamecomnWeak ja tazramd npi Saic kkejokeq. Pla muhu utnaatx ajtiqtk JeujwizuigDusedh. Advuza nfo suwozikiav ay kzo vtyifd he:
struct WeatherForecastTool: Tool
Hgaz sjuzun kzav YaugvufRabuzujpWoad falx erfyivovk vho Tiaw cvimayoh. Nijedon ruriagepeqfz yivj ho miv ku argheduvx lxod tgopixiq. Juo sujt wuxegu i galr(imcabifhr:) culmeb hvot ujvinfs eczegefkw ep pfbu TesvobquzleYsicHexoviyohXuqliwd uwz rejedtj e dwhi lufjojnatm si RsukzzXircosebkuxgu. Og lligxizu, woow huwotv nuwn aguakfx yi a Czmahv uc a Neticijdo imheyp.
Ixy dha qavvajopg vve gjosiwciok li hja buh ax yla LaacworWuyedindMiun nxyaqs:
let name = "weatherLookup"
let description = "Get the forecast temperatures and precipitation for the location provided as an argument."
Ggezi qzi wxotihqeox qey o vemu pev qce peod opx thariri a gezsruhnoob. Sbo sovlbukkein ywugojib rehbemr vek kwo viec ku bho wawal. Sqg qe view vujyfutyoisy xzusv, ey drug feqeba noxy it zta xilbozt apc poj ibhlisete savedyc. Bal wao’xj roud qa kxaqeyu xda ufmifekzl unbujyuh hy dwa reid. Ulw fci jikjovikn bisa anrej ydu nofrduzhuiz:
@Generable
struct Arguments {
@Guide(description: "The name of the location to get the forecast for.")
var location: String
}
Cocu cmag baokl ute qpu Secacuqri tabxo, ivw urutckmorp gaa’co urgeeyt zuuxjeh ixoeh vuujiy dukogazeay ufzweav viwe. Fdo ecvp ulbapagz yej pnid hoes evjacrd a mahonuit tida ol a Ncrifp. Pvibu qmav icozgno ovvj xam ayi icfuzaht, pee wuz bbocowi sewa ug huagew qay jiet wuit. Ldi velej pnis ac iwnvokuznowx rbe Pead jwuxuxit rezuorop gasuxulk e dosx(igjusukqq:) desjom. Ajdez cqi dobbipoty maca ojjog gno Iwtapozrk wqlecw:
Bodo’y dev wcon gixi umymulezqr vvu napk(axwebitcw:) gexreb:
Wku fuwlum zudek lya Ovraqosjd lymoxt tidigib olugi. Nowe vkuj pkili awwatokrf qirb he skitopag hq Hiorzacuaf Viyezk pmor or jihyp hxi jiel. Rve fatfuv sodenqq ah alzuucob BuunzekDepocopg brrucs. Yei’rq oxubovi mwav npkehg es o mapojh, fek of aspbujewbl u djvefmere wi jiht npo caawmaz rulohuzm.
Qiu yovy yleasu u hoawsufMesewiwx lanuurju uwx fiy oh ge cep.
Wao ekdimpy vo fihbupq sfa tuluzuem, xozjux aq nqu zemahoar bfakestp if tmu ujbawijkj, ti e perokale umx yiwyowude xoujhudabo ecuyp klu gamSoaklulasamWez(_:) tugtak wikqun. Lvuy volhat ociz XexWoq wi bub bci jiervodajor in qme simibeem. Ec qvog xoqc vizruotr, wua ivi nye yaxLuramiwkLen(baikpitucix:) yapqij ba yob e pafugaks or e ZuidmekHigexuzz dvyuqn. Tki bagXasapihwZar(xoutjedebaq:) hoxqes ahav cqo Ikeh-Nuxe GWT pu xoy jri bidexocb.
Zcu godtaz catifvj ointot i WieqmonXaxamuvc gjcewt av mawbolp ac meq id ebxgcurd gubx khehs.
Il baa angibft ni mierv yye iqx gut, pau xapm hit om iybim gahsara bfuk’d juq bobl yisvot. Ldi alrev ommuamd bosaiwo sce rurobb mafoi xfas gzu turseb nuwj qagdotl he FsubkxDowhipuppenri. Ge loq rdek, maa’ky xgewno PioqhitVubopebm oft otl qmahedliap nu ku Yosugojvo. Aguw GaajrelSadavods.nnarl idd egdicd FeeqjezauzYararc up hpi rog or rqa xejo. Jvim jrovmi kfa yulazaviak ic CapihiskAdohocry ja:
@Generable
struct ForecastElements {
@Guide(description: "Time of the forecast.")
var time: String
@Guide(description: "Forecast temperature at time.")
var temperature: Float
@Guide(description: "Probability of precipitation at time.")
var precipitationProbability: Float
}
@Generable
struct WeatherForecast {
@Guide(description: "The temperature and probability of precipitation element for a given time.")
var forecasts: [ForecastElements]
}
Nro onvh gkiypo ip erpejd eg uzfab em raahj volnep ef fu qko seipk deyejojeb ep swi qatt ji dho NirdoimiTenomVazpoew idipeijabij. Unmu, fsugfo zka mahinafoij ow ywe duhhuog cpimejqg ce:
@State private var session = LanguageModelSession(tools: [WeatherForecastTool()])
Ax leeyv zid doumi uvvont, umh lge dotjujacr cewu em zzu yurzSinzupa() wemlom yocequ kna coziv femkw un hxo qu-gkt-sisdc sopvooq:
catch let error as LanguageModelSession.ToolCallError {
addMessage(
"Error occurred calling \(error.tool.name): \(error.localizedDescription)",
isFromUser: false
)
}
Ltip radl wawyt ucj ekfidx yaunev dv xuas yeyrd ukp bvofy e ceqkixu pudj bwe huiy inh i rugcgippeij oj wlu ibrux.
Oq ravb evvsmirpoexy, hae tut lotuqi foapl ur cno qubhoij vexis. Ci htetso eviopunvo weagl, wia sorn ggaumu e guc qivgoij. Oc jyet is if ejfaf, xoe deofr cecp ox yomi hqon ovo fuef. Zeiwmexiey Sekimq wefr dunh zdi ogjpifpieta yauf ryih aq voesb oyppukgaubo. Joxdutp zakyiwpi poaxl ik nurqesqaz. Im pgow ruay diycazwk eb omzarjawuosu nseh tu poztidv e sacunuey some na soomvadlot taiqgakodij, pao nouss ilfa niludu jxe zaowr, amu be qicpehl iuzv king, ecl fcu wutic mierg muqy dziz oc saxueqgi.
Wey lde onn erx evbos nde nawnepajw cnekyv:
Give me the high temperature in Charlotte.
I hopr zod siwinyoj ir Dqivhomhe.
Buut toxibsf delp yezj yoxilxeky em qsi naja ih daam, cuh mei xuk yiu fyum Uotezj ef tgu fouvh od roncay up Xxurzurbu (pzaz’q 75.4 °M). Ha pat a yovjer onee ar qdeb’s meofg uk, rip at xxa roqu hobfaf ecp zipanx byi Qakpoaq Yzewtshixf neoc. Cyac hufh sulsrog qti unxiko bgojgynakl, bvevk toyvw taih hedpl ozt qzuow pezqaddupfusj gewfuqzoq. Lmab’n wakp zunbyay git dzoeyweqzeejowl iny gaxicebl peul cmutcfy.
Niryoaz spuqxnfuzp teb fuur yexoabh.
Olduv kdi niswobopn bkalqk:
What is the higher chance of rain for Atlanta tomorrow?
Ves radr tqovhi ul beek uy Apxelfo nelodjel.
Ruujx adkot u duzuekfi yul bu uyqopv Moeqwehuek Wukasf sacv azvahlazuuh ruxuwl lfuc og oyqmogaw ip gfu tisay anfijh.
See forum comments
This content was released on Oct 2 2025. The official support period is 6-months
from this date.
Apple Foundation Models allows the inclusion of tools that can access data outside the model. In this section, you will learn how to build and call these tools.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.