എൽഎൽഎമ്മുകളെ ഏജന്റുകളായി പരിശീലിപ്പിക്കുമ്പോൾ, മോഡലിലേക്കും മോഡലിൽ നിന്നും യഥാർത്ഥ ലോകത്തിലേക്കും വിവരങ്ങൾ എങ്ങനെ ഏറ്റവും നല്ല രീതിയിൽ കൈമാറാം എന്ന് ചിന്തിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, അത് ഒരു ബാഹ്യ ഫംഗ്ഷൻ കോൾ ചെയ്യുകയാണെങ്കിൽ, ആർഗ്യുമെന്റുകൾ എങ്ങനെ കൈമാറണം? പരിസ്ഥിതിയിൽ നിന്നുള്ള ഡാറ്റ മോഡലിലേക്ക് എങ്ങനെ നൽകണം? ഏറ്റവും ലളിതമായ (ഏറ്റവും സാർവത്രികമായ) പരിഹാരം സ്ട്രക്ചർഡ് ഡാറ്റ ഫോർമാറ്റുകൾ ഉപയോഗിക്കുക എന്നതാണ്, ഉദാഹരണത്തിന് ജെസൺ. ഈ ഫോർമാറ്റുകൾക്ക് വിവിധ തരങ്ങളുള്ള, ഏത് ലെവലിലേക്കും നെസ്റ്റ് ചെയ്യാവുന്ന ഡാറ്റാ സ്ട്രക്ചറുകൾ എൻകോഡ് ചെയ്യാൻ കഴിയും.
എന്നാൽ ജെസൺ ശരിയായ തിരഞ്ഞെടുപ്പാണോ? ടോംൾ, യാമൽ, എക്സ്എംഎൽ തുടങ്ങി നമുക്ക് നിരവധി ഓപ്ഷനുകൾ ഉണ്ട്. ഈ പോസ്റ്റിൽ, ശരിയായ തിരഞ്ഞെടുപ്പ് നടത്താൻ സഹായിക്കുന്ന ചില മെട്രിക്സുകൾ നമ്മൾ ചിന്തിക്കുകയും അളക്കുകയും ചെയ്യുന്നു.
ടോക്കൺ കാര്യക്ഷമത
നിലവിലെ LLM-കളുടെ അടിസ്ഥാനപരമായ ഒരു പരിധി പരിമിതമായ സന്ദർഭം ആണ്. കാലക്രമേണ ഡാറ്റയുടെ മുഴുവൻ ലോകവും മോഡലിലേക്ക് നമുക്ക് വെറുതെ സ്ട്രീം ചെയ്യാനാവില്ല. ഏറ്റവും കുറച്ച് ടോക്കണുകളിൽ ഏറ്റവും ഉപയോഗപ്രദമായ വിവരങ്ങൾ ആശയവിനിമയം ചെയ്യാൻ നാം ആഗ്രഹിക്കുന്നു എന്നർത്ഥം.
അതിനാൽ, യഥാർത്ഥ-ലോക ടെലിമെട്രി ഇല്ലാതെ, ഏത് ഘടനയുള്ള ഡാറ്റ ഫോർമാറ്റുകളാണ് ഏറ്റവും കാര്യക്ഷമമായ രീതിയിൽ ടോക്കൺ ആകുന്നതെന്ന് പരീക്ഷിക്കാം. ഇതിനായി, ഞങ്ങൾ സിസ്റ്റം നിഘണ്ടു ഉപയോഗിച്ച് നിർമ്മിച്ച ക്രമരഹിതമായ കീകൾ ഉപയോഗിച്ച് ഘടനയുള്ള ഡാറ്റ (നെസ്റ്റ് ചെയ്ത dict-കളും list-കളും) സൃഷ്ടിക്കുന്നു. ഉദാഹരണത്തിന്, JSON-ൽ
[
{
"leptomeninx_xylitone": [
147.396,
{ "asellus_spinelike_triliterality": null }
]
},
{
"costively_zoetic": [["decipherably_wheat"]],
"neurectome_sorcery_tangleproof": null
}
]
സാമ്പ്ലിംഗ് പ്രക്രിയയിൽ ഒരു ട്രീ വലുപ്പം തിരഞ്ഞെടുക്കുകയും, റിക്കർസിവ് ആയി ക്രമരഹിതമായി കണ്ടെയ്നർ തരങ്ങളും ടെർമിനൽ മൂല്യങ്ങളും തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്നു. ഉപയോഗിക്കുന്ന ഘടനാപരമായ ടോക്കണുകളുടെ എണ്ണം നമ്മൾ കൈകാര്യം ചെയ്യുന്ന ഡാറ്റയുടെ തരത്തെ ആശ്രയിച്ചിരിക്കുന്നുവെന്ന് നിങ്ങൾക്ക് ശ്രദ്ധിക്കാം. നിങ്ങളുടെ ഏജന്റിന്റെ ഇൻപുട്ട് ഏകപക്ഷീയമായി നെസ്റ്റ് ചെയ്ത ഡാറ്റ കൈകാര്യം ചെയ്യുന്നില്ലെങ്കിൽ, ഒരു ലളിതമായ സ്പെസിഫിക്കേഷൻ മതിയാകും. അതിനാൽ, ഞങ്ങൾ ഒരു കൂട്ടം ആകൃതികൾ നിർവ്വചിക്കുന്നു, അത് കേട്ടതുപോലെ തന്നെയാണ്:
nested: സ്കെയിലർ മൂല്യങ്ങളിൽ അവസാനിക്കുന്ന ആഴത്തിലുള്ള dict/list കോമ്പിനേഷനുകൾ.സാമ്പിൾ
[ { "comforter": { "dosadh_disruption_prosodiac": { "unsnatch_moslem": 837 }, "tone_redefine": { "cribrose_aoul": [ [ "christianization-casuariiformes-overbravery-chevronel" ] ] } } }, { "bovarysm": [ "oropharynx_consentant_fibronuclear", "bajardo-liquidy-calibered-belucki" ], "materialistic": { "paleostylic": -27.23, "praediality_juvenilify_benempt": 104, "roquelaure": -407 } }, { "filicites": [ "unpalatableness-allocaffeine", 126.204, { "manesheet": "emery_tricyclene" } ], "imposing_elchee_mentation": 3, "inadvisability": -12.726 } ]sparse: നെസ്റ്റ് ചെയ്ത ലേഔട്ടുകളിൽ അപൂർവ്വമായ സംഖ്യാ അല്ലെങ്കിൽ ടെക്സ്റ്റ് സ്കെയിലറുകൾ ഉള്ള, കൂടുതലും null മൂല്യങ്ങൾ.സാമ്പിൾ
[ { "areole_auramine_kojiki": { "hyperabsorption_uraniscorrhaphy": -776 }, "maplebush_piete": [ { "shadowgraphist": null, "stakeholder_busybodyness_crebrity": 644 } ], "preadamite": null }, { "bellmaking_brachydont": { "jalapin_chandelier_accelerando": null, "mandative": -79, "totora_peristaphylitis_graphy": null }, "subferryman_dephlegmator": [ { "manuka_uncriminally_archdeceiver": null } ] }, { "daytime": [ { "overfeminine_catholicist": -242.239, "sulfophthalein_irreciprocal": null } ], "gata": null, "macaranga_circuitman": null, "ostraciidae_subsidiariness": "throneward" } ]tabular: സ്കെയിലർ മൂല്യങ്ങളുടെ വരികളും പങ്കിട്ട സ്കീമയും ഉള്ള കോളം-അടിസ്ഥാനത്തിലുള്ള പട്ടികകൾ.സാമ്പിൾ
{ "columns": [ "viragoish_isogonality_swarming", "supralocally_nuncioship", "zoomorph", "cavitary_visie", "permutableness_impunity_bipack", "forby_archly", "rivinian", "unheal_annelidian_samurai" ], "rows": [ [ true, false, "cincinnatia-cyanhidrosis-auto", false, true, null, "acetosoluble nonexclamatory homogangliate croupal", -219 ], [ null, 836, -904, "metasomatic-mundanism-hotchpotchly-secantly", null, 309.642, "floodgate-baluchitherium-unimaginary-sheepkeeper", -396 ], [ "postcritical-tug", true, -948, 0.135, 399.166, -123, "palaeoniscus", true ] ] }
ഞങ്ങൾ ഇനിപ്പറയുന്ന ഫോർമാറ്റുകൾ പരിഗണിക്കുന്നു:
json: സോർട്ട് ചെയ്ത കീകളും കോംപാക്റ്റ് സെപ്പറേറ്ററുകളും ഉള്ള പൂർണ്ണമായും മിനിഫൈ ചെയ്ത JSON.സാമ്പിൾ
[{"backlotter_overboast":"calligraphist_megabar_uninstructively","landspout_souper":[null],"liquefier_unconvicting":-151.898,"unbegot":[961],"unreformedness":-189.15},{"detriment_muckender":[469.486,{"aspergillum_sharebroker_akebia":337},-302.978],"heeder_aerophyte_unbase":499.655,"metamer_powsoddy":null},{"fascicled_fibrous_bajardo":{"octaeterid_pharmacolite_tentativeness":{"underfellow":83.76},"plethysmography_unchangeably_positioned":432.985,"transvestitism":82},"mirror":{"uninfallibility_benny":null}}]yaml: ഡിറ്റർമിനിസ്റ്റിക് കീ ഓർഡറിംഗ് ഉള്ള ബ്ലോക്ക് സ്റ്റൈലിലുള്ള YAML സീരിയലൈസേഷൻ.സാമ്പിൾ
- backlotter_overboast: calligraphist_megabar_uninstructively landspout_souper: - null liquefier_unconvicting: -151.898 unbegot: - 961 unreformedness: -189.15 - detriment_muckender: - 469.486 - aspergillum_sharebroker_akebia: 337 - -302.978 heeder_aerophyte_unbase: 499.655 metamer_powsoddy: null - fascicled_fibrous_bajardo: octaeterid_pharmacolite_tentativeness: underfellow: 83.76 plethysmography_unchangeably_positioned: 432.985 transvestitism: 82 mirror: uninfallibility_benny: nulltoml: ഒരു റെക്കോർഡ്സ് അറേയ്ക്ക് കീഴിൽ റെക്കോർഡുകൾ റാപ്പ് ചെയ്യുന്ന TOML ഡോക്യുമെന്റ്, null-കൾ സ്ട്രിംഗിഫൈ ചെയ്തത്.സാമ്പിൾ
[[records]] landspout_souper = [ "null", ] backlotter_overboast = "calligraphist_megabar_uninstructively" liquefier_unconvicting = -151.898 unreformedness = -189.15 unbegot = [ 961, ] [[records]] detriment_muckender = [ 469.486, { aspergillum_sharebroker_akebia = 337 }, -302.978, ] heeder_aerophyte_unbase = 499.655 metamer_powsoddy = "null" [[records]] [records.fascicled_fibrous_bajardo] transvestitism = 82 plethysmography_unchangeably_positioned = 432.985 [records.fascicled_fibrous_bajardo.octaeterid_pharmacolite_tentativeness] underfellow = 83.76 [records.mirror] uninfallibility_benny = "null"xml: സെമാന്റിക് ടാഗുകളും എക്സ്പ്ലിസിറ്റ് ടൈപ്പ് പേരുകളും ഉപയോഗിക്കുന്ന വെർബോസ് XML ട്രീ.സാമ്പിൾ
<records> <object name="record" index="0"> <array name="landspout_souper"> <null name="0" /> </array> <string name="backlotter_overboast">calligraphist_megabar_uninstructively</string> <number name="liquefier_unconvicting">-151.898</number> <number name="unreformedness">-189.15</number> <array name="unbegot"> <number name="0">961</number> </array> </object> <object name="record" index="1"> <array name="detriment_muckender"> <number name="0">469.486</number> <object name="1"> <number name="aspergillum_sharebroker_akebia">337</number> </object> <number name="2">-302.978</number> </array> <number name="heeder_aerophyte_unbase">499.655</number> <null name="metamer_powsoddy" /> </object> <object name="record" index="2"> <object name="fascicled_fibrous_bajardo"> <number name="transvestitism">82</number> <object name="octaeterid_pharmacolite_tentativeness"> <number name="underfellow">83.76</number> </object> <number name="plethysmography_unchangeably_positioned">432.985</number> </object> <object name="mirror"> <null name="uninfallibility_benny" /> </object> </object> </records>csv: ടാബുലാർ റെക്കോർഡുകളിൽ നിന്ന് സൃഷ്ടിച്ച ഹെഡറുള്ള കോമാ-വേർതിരിച്ച വരികൾ.സാമ്പിൾ
bicellular_russification_unsinister,crude_paynim,isoetales,postembryonic_encrisp braza apology catalufa tofu,,rampager,triformous ,True,481.226, 421.281,868,photodysphoria,escortage
ഫോർമാറ്റ് അന്തർജ്ഞാനം
ഒരു അന്തർജ്ഞാനപരമായ ഫോർമാറ്റ് ഭാഷാ മോഡലുകൾക്ക് പാഴ്സ് ചെയ്യാനും ജനറേറ്റ് ചെയ്യാനും എളുപ്പമുള്ളതാണ്. അന്തർജ്ഞാനം അളക്കാൻ, ഞങ്ങൾ താഴെയുള്ള ബെഞ്ച്മാർക്ക് നിർദ്ദേശിക്കുന്നു. എല്ലാ റണുകളും ടൂൾ ഉപയോഗിക്കാത്ത റോ ചാറ്റ് മോഡിൽ DeepSeek V3 (2025-09) ഉപയോഗിക്കുന്നു, അതിനാൽ മോഡലിന് മാനസികമായി പൈത്തൺ സ്നിപ്പെറ്റ് എക്സിക്യൂട്ട് ചെയ്യേണ്ടതുണ്ട്.
- ഒരു ഫോർമാറ്റ് , ഒരു ഇൻപുട്ട് ട്രീ സൈസ് , ഒരു ഔട്ട്പുട്ട് ട്രീ സൈസ് എന്നിവ നൽകിയാൽ.
- നോഡുകളുള്ള ഒരു ഇൻപുട്ട് ഡാറ്റ ട്രീ ജനറേറ്റ് ചെയ്യുക
targetഎന്ന ഒരു വേരിയബിൾ ഡിഫൈൻ ചെയ്യുന്ന ഒരു പൈത്തൺ പ്രോഗ്രാം ജനറേറ്റ് ചെയ്യുക, അത് സൈസ് ഉള്ള ഒരു നെസ്റ്റഡ് ഡാറ്റ ട്രീയിലേക്ക് മൂല്യനിർണ്ണയം ചെയ്യുന്നു, അത് ഇൻപുട്ട് ഡാറ്റ ട്രീ ക്വെറി ചെയ്യുന്നു- ഞങ്ങളുടെ ഫോർമാറ്റ്
ൽ സീരിയലൈസ് ചെയ്ത
targetജനറേറ്റ് ചെയ്യാൻ മോഡലിനെ പ്രോംപ്റ്റ് ചെയ്യുക
JSON-നുള്ള സാമ്പിൾ പ്രോംപ്റ്റ്
ഫോർമാറ്റ്: json_min ഇൻപുട്ട് നോഡുകൾ നിരീക്ഷിച്ചു: 8 ടാർഗെറ്റ് ഔട്ട്പുട്ട് നോഡുകൾ: 9
നിർദ്ദേശങ്ങൾ:
- ഡാറ്റാസെറ്റ്
dataഎന്ന പേരുള്ള ഒരു പൈത്തൺ വേരിയബിളിലേക്ക് പാഴ്സ് ചെയ്യുക. targetഎന്ന വേരിയബിൾ പോപ്പുലേറ്റ് ചെയ്യാൻ താഴെയുള്ള പൈത്തൺ സ്നിപ്പെറ്റ് എക്സിക്യൂട്ട് ചെയ്യുക.- യഥാർത്ഥ ഫോർമാറ്റ് (json_min) ഉപയോഗിച്ച്
targetസീരിയലൈസ് ചെയ്ത് ഫെൻസ് ചെയ്ത കോഡ് ബ്ലോക്കിനുള്ളിൽjsonഎന്ന് ടാഗ് ചെയ്ത് വയ്ക്കുക. - കോഡ് ബ്ലോക്കിൽ സീരിയലൈസ് ചെയ്ത ഡാറ്റ മാത്രമേ അടങ്ങിയിരിക്കാവൂ.
- ഫോർമാറ്റും സ്ട്രക്ചറും കൃത്യമായി പൊരുത്തപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കാൻ വളരെ ശ്രദ്ധിക്കുക.
ഉദാഹരണങ്ങൾ: ഉദാഹരണം 1: ഡാറ്റാസെറ്റ്:
{"results":{"lo_unaddicted":[{"fleeting_geneserine_desmodynia":[-163.354]},{"subcrepitation_maddeningly":{"homoanisic":-3}},"helminth_vengeable"],"touchiness":[{"cataphyllum_educand":"remilitarize","unhumiliated_poorwill_oryctognostically":"resound","herrnhuter":false},["uptrace",["subastringent"],"scruff","theurgically_tritonymph",[-123]]],"ichthyornithes_revisionary":{"alcogel_freckle":{"inquisition":"lehi"},"oniomaniac_flamineous_ledgerdom":{"tylotoxeate":-141,"hemeralopia":272.837},"unremember":[false,[-30],true]},"amphiumidae":{"unenterprised_meltage":[149],"psilanthropist_garrulinae":{"averrable_deporter":399.228,"riotproof_terebratuloid_monophyodontism":-22},"coed":{"indigoid_pulicid":"airbrush_oenothera","paillasse":"rutelinae"},"inhume_photoprinting_pasturability":["chiselly_backfilling"],"route_anisopogonous":[{"kotal_schematization_zestfulness":-91}]},"unexcised_seamless_intwist":{"cordaitean":-108,"unrising":"monarchist"}}}
പൈത്തൺ സ്നിപ്പെറ്റ്:
target = [
data["amphiumidae"]["route_anisopogonous"][0],
data["amphiumidae"]["inhume_photoprinting_pasturability"],
data["touchiness"][1],
]
പ്രതികരണം:
{"results":[{"kotal_schematization_zestfulness":-91},["chiselly_backfilling"],["uptrace",["subastringent"],"scruff","theurgically_tritonymph",[-123]]]}
ഉദാഹരണം 2: ഡാറ്റാസെറ്റ്:
{"results":[[["selachostomous",88.259,"altair_assiniboin",{"samphire_symbolology":{"scarfed_wambutti":-28}},"bocca_ponerid"],[["gibberosity","footway_antecardium",[true],["myxosporous"],"repopulate"]],{"prairied":-13,"amara_huccatoon_massivity":34,"alehouse_uncumber":154}],{"tartary_loculose":[[{"counterwind":"endophasic"}],[{"subhyaline_asiatical_tobikhar":"angolar_cheeriness","scutelliform_riverweed_putback":-7,"thirdsman_phlogistical_tropacocaine":"bawdry"}]],"hydrophore":[{"insubvertible":119,"overwomanize":{"cobble_orography_caprice":-127},"queriman_episcopally_railway":{"unadoration":["weedage"]},"stactometer_toggle_cleavability":[453.262]},{"forejudge_tacnode":{"undersupport":105},"floorward":-170,"dormer_abysmal_occasional":-484.491,"wheatgrower":346.849,"phobism_intendingly":91.698}]},{"conirostres":[{"monorhymed_kioway":"taxlessly","ungloriousness_urosternite":true},["pendanting_allegation",-30],["hemiobol","monont_paradoxial"]],"sistrum":[{"untaintable_polladz":true},[-162,true],{"preclassic_standoffishness_pagina":true}]},[{"earlock_unmantled":{"philoradical_micranthropos":-10,"derout":["unfrock",90.415]},"hepatologist_unrushed":-270.882},[[["argyrol_art"]],["daftness"],[-12,149.452]],[[{"loatuko":"floriken_tecali"},[-153.065],-51,153.874,"pile"]],{"hexacanth":[[-3,-19]]}]]}
പൈത്തൺ സ്നിപ്പെറ്റ്:
target = [
data[1]["tartary_loculose"][0][0],
data[1]["hydrophore"][1]["wheatgrower"],
data[1]["tartary_loculose"][1],
data[1]["hydrophore"][0]["queriman_episcopally_railway"]["unadoration"],
data[0][1][0][1],
data[0][2],
data[2]["conirostres"][0]["monorhymed_kioway"],
data[3][2],
]
പ്രതികരണം:
{"results":[{"counterwind":"endophasic"},346.849,[{"subhyaline_asiatical_tobikhar":"angolar_cheeriness","scutelliform_riverweed_putback":-7,"thirdsman_phlogistical_tropacocaine":"bawdry"}],["weedage"],"footway_antecardium",{"prairied":-13,"amara_huccatoon_massivity":34,"alehouse_uncumber":154},"taxlessly",[[{"loatuko":"floriken_tecali"},[-153.065],-51,153.874,"pile"]]]}
ഡാറ്റാസെറ്റ്:
{"results":["relict",{"intolerant_ignify":"cragginess_reapprobation","detriment_wholesalely_spillway":-49},true,"stewardess",-94]}
പൈത്തൺ സ്നിപ്പെറ്റ്:
target = [
data[1]["intolerant_ignify"],
data[4],
data[1]["detriment_wholesalely_spillway"],
data[2],
data[3],
data[1],
]
ഉപസംഗ്രഹം
ഈ ഡാറ്റയിൽ നിന്നുള്ള പ്രധാന ടേക്ക്അവേ എന്ന来看 YAML ഉപയോഗിക്കരുത് എന്നതാണ്. LLM-കൾക്ക് JSON-നേക്കാൾ ഇത് മികച്ചതാണെന്ന് ഓൺലൈനിൽ പലരും പറയുന്നത് ഞാൻ കണ്ടിട്ടുണ്ട്, പക്ഷേ ഇത് തീർച്ചയായും സത്യമല്ല. ശരാശരി ~19% കൂടുതൽ ടോക്കണുകൾ ഇത് ഉപയോഗിക്കുന്നു, കൂടാതെ വായിക്കാനും എഴുതാനും കുറവ് സൗകര്യപ്രദമാണ്. TOML-ന്റെ വായന/എഴുത്ത് പ്രകടനം JSON-നോട് താരതമ്യം ചെയ്യുമ്പോൾ മികച്ച സ്കെയിലിംഗ് കാണിക്കുന്നു, പക്ഷേ ഒരേ ഡാറ്റ എൻകോഡ് ചെയ്യാൻ ~44% കൂടുതൽ ടോക്കണുകൾ ഇത് ഉപയോഗിക്കുന്നു. മിക്ക ഉപയോഗങ്ങൾക്കും, JSON ആണ് ഏറ്റവും മികച്ച തിരഞ്ഞെടുപ്പ്.
ഫലങ്ങൾ പുനരാവിഷ്കരിക്കാൻ കോഡ് ഉപയോഗിക്കുക: https://github.com/nathom/token-efficiency.