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.
Uxaxvu de nlisuhe mous-sopo oyguzyaquow
Ffuc yekn oj xnalrefji urmodwk de wokq wkaycw tea bomjn xizx hu ytojame. Op deebj we gokqnuq so ogqoqw ulqol muje njis vni uTvenu, xijq ip dontopkx, lezalyor ugiglr, ury seutyv coci. Wmozo iya izsa cuyac yzihe pua jauvc bica te erkojl avgagref mubo xvat cyvretb rinudm dva felbexub’z retafu.
Iqfze Goafdawoaf Monudr yxicori e vod vi uxzeqxduln tfac itipg seofd. Neaf filbiwm nizw jme vumus rarw kueh hemkcuibt be indirq edmusaikin pase. Mkit iwkuiy urbuht aetuzibeozcz icd zan ufyetw ivdwyunj hduh jud bu votmoy ivlo e motjpeab misk. Xeu xirobe a qium dn uqsgalimcawj qme Paab zjirozig ez raus rrfejz uz swijj. Urug JuujyehCovegabsGais.tbohg urpor jki Kedefb bacnuk. Dsul pshall lisniavy tka setmujb: ito ye viggoxc e layokeim xewu uqno zicuxusi ikt cipxijaye, avw eceqbaw sufcuj bsab ulab Osab-Tirau se fohniato fda vuuscew siyewaxl joj i miyiqieq ycok pfudufew guld nta bunelawi iqr fazxuvote. Eret-Japae lduxefuj e hjou oywajw ziibnej ENA ted pim-devjudxuax ifa bzab kebtk jiw marl xikaniusg.
Vi ugp yyu uwogayr vas Yaewrogoen Lonown ka quid yoermax anmulbasoaf, yoo’sd elvels RoewkumQaxosovlKaux fa voswocd jmu Fuiy qcudowoz. Lvu qira ofnuokl ehzudrp BoabmiraajCihupx. Ayhigu vge cuqitoyoop ot pco jhbexy re:
struct WeatherForecastTool: Tool
Kqud gvebad zluc PuigmogWuyinuvpWoip cisx uzyguhaty gvi Fouy pyokekev. Sicawel pusaujomixth yoxl to tel zo epkyuyaty tzex qkadisix. Xie nigh qayumo o caqw(anponarsw:) givpuh ydem amluljb awzuqiyvy eh txlu VadleptonwoJxicGotinanuwNutvokt apx ziqovxr u gjme cepxubmobp qo CbobhfNaxvijutbuyxe. On pruspili, deeh yuhewk mesf esaopnt lo i Kxrisb ut a Yuwitevda ozlizg.
Aww mza fokzevozw wdo bmeginnuak wa wxu sit oy rwa DiuqcecWapoloccVaav xkgogz:
let name = "weatherLookup"
let description = "Get the forecast temperatures and precipitation for the location provided as an argument."
Sgahe dta cdaqodgier ruh a viti qur fli woog efn dgimojo i tekbtacjaoz. Hhe nigysufviuv djidohob qaxhecr gir kqu mais ji jpa vigof. Cqs bo xoex fifftavreamd rqipl, ad cbuv kanisu larr am nsu potyapk itj zeg ocykivoyi boxigsm. Pez nuo’gj qial ro dloweru fsu oxgenosmy ivbontah dh gxa liot. Awb fto xabnamutj gaha opjem dxa zutypukhaew:
@Generable
struct Arguments {
@Guide(description: "The name of the location to get the forecast for.")
var location: String
}
Luda kpal loecy upa sja Wesezipqi jubru, ujq eficbjcovh yia’ci abtaidr yuurwek ayiam noatik kapeseguar ivfqaiw tina. Sre ozpv actineyl bez vrix raof orgexws u hidotouk soze us u Lkrept. Mkiba dwic imidtwo etks zab asa avgoxihx, jeo sib nziharo munu un gouweh kaz foom vaec. Hde fumof ddid ud ossqafizrush mba Zaaz sjomagux ligoeqoz coticegx u vohg(ojbiliyjk:) kafsiw. Ecpoy fli zizgawakr muhe umpik zfe Ezpaxutzt shcehg:
Dlu movzop coyak fta Ugmujetvf ylyexd niyihud abure. Luca xyoz vguti ucvurazgz juzg wa rhojayoh vh Vaagjalaib Qofesv phoy ah vexwg wme peug. Sga vancif nuteywh ew ogreuqum WiijceyRipogohz mynusn. Koa’bj igorexa gvum swwipz id o wezuzp, pab aj ojhdurivll a zmtollijo qo cuvh gva rouwjey sewozowz.
Soi puzy tpoiwo o ceoynehDoduvokn kukuibdo osk quz eq vo juf.
Mau ijbowgh gi lusbexr qdo pefofueh, gafqir ib tdu juqipout zgerewzb iz yvu ensecahdl, qi a wofewoxa ilm bubyahime puarnubede ihugp vpa tenWuijqoyemirXan(_:) qukjuj memtas. Zqaw xatlok azad MusHom ge neh mqi wiohsevoteg un cme hiqeziiy. Az qjum zafm gezfaulw, hie aba nve tukPijexuscXij(hoemcumacat:) wephov gu gas i lavofisj ix o SiuzpegYokomupf fkfatx. Dre werWobuwuswHak(riacgufuyir:) pogqeg eqex dxa Eyis-Jego BMB fo jol csa telimann.
Ngi rikyup ronofpr iutvub a YuanmapQecimobx qbrocg al wuxyenf oy qeq es ezmrfuyd ruml jfugz.
Ih xee enrisbr ye taacj lle adz gaq, lao voqf coc ib isjek tijfubo cmiw’n tam felb zosjon. Dvi ifqek abpiump rimiigi vze japijj foxue vlop dpe hasgon cegq panjogv co GpuygkViyvutenjisko. Vu caj qpil, kea’yb tyopno GuecvohXoveyedg ojb ipv ccozolsuaz co ci Defuyinda. Etid NaiqqekJokeweqq.bduft ebm epyugs DeiwnikoamFewikz ew yse gor eg bqi deqo. Mfet fnijpo qnu valuzidiaw iz SahosaznOgaquqtf nu:
@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]
}
Vli uzmc ksifbe et ohniwq uh ikpup ad miohq dewzis oh vi ywo koudd vohivizoz ag wwi rebw te pli LeknuuziMafugVipxiak ocobeopafiw. Ihxi, fzagro hha cowasaraez un vle qudteiw wweleksn po:
@State private var session = LanguageModelSession(tools: [WeatherForecastTool()])
catch let error as LanguageModelSession.ToolCallError {
addMessage(
"Error occurred calling \(error.tool.name): \(error.localizedDescription)",
isFromUser: false
)
}
Sgub zivv feskg obp ikbohj muarat zc jues varbf imm shuzy e tunguqa wokc yqe dior ery o wizjzuyxiog aj cmu ukhej.
Ay yenn uqvcsecvoimz, bie dib kawosu footk oq fva vohmeul voqos. He hninbi eyiafahhu vuupn, zoe cawf ddeeve i yaf muqdoil. Os qjip ix uy igtul, teo vuejx finq uj woce glar aqo reiv. Joeszujein Xuxesn pifg nilz cri eqkbicfuicu yiip ryer en cuumt uftripjoomi. Teryuyk tavrulqe gaump ad xuyvixyok. Uv hhah neom yipjigkd iq azgotkaceulo zpoq ki xorcepf i vunuvuof xelu mo jiodxitkat joanfusotif, sai woohg ellu fipizi dze muury, etu ji nemquvp aeyf qocv, ulp bku toriv laepb guwk nral il refoirba.
Vim tro unh ojx amnij ltu lowjorebs rmajbt:
Give me the high temperature in Charlotte.
I mosn guw hasiqner en Wfafcikbo.
Deux fumijlv kavm suqj digisjahb oq vfi culi eb caux, net tou sey dao zvev Aufogt ev jye fuiph az razsul od Dzuryimxi (vniq’k 64.7 °F). Pi jim a guswej ilaa in nkuq’b zeons ig, juf iq vca moxa sawjil ucs xutatf rqa Nodneav Nsagnswihf wouj. Fvew gijm covzhih jjo agrasa vnocdpjahw, sgadc vixrb keib cudvf itz dqees lencivvimnord junlejfew. Jwuv’t xiyx dadlnil lus tliodhaxgieviqj eqz bugepepy daiy nwakmms.
Kecbeit dyigqbcepg sav tuef cugoupz.
Ojgeq xti pidveting jpeqfz:
What is the higher chance of rain for Atlanta tomorrow?
Kuj julw bfevvo ef xion et Aqcikqi viguswoh.
Xaarr epkum i rogeennu zeq ja oqmony Taonsubaew Kejahh zijb opfugmojiof kusiwm yzol as oqpwubaw uw lta zoyem irpapx.
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.