𝗢𝗹𝗹𝗮𝗺𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗢𝘂𝘁𝗽𝘂𝘁𝘀 𝗣୍ରായോഗികമായി
ലോക്കൽ LLM-കൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ പലപ്പോഴും JSON parsing പിശകുകൾ സംഭവിക്കാറുണ്ട്. മോഡലിനോട് JSON മാത്രം നൽകാൻ പറഞ്ഞാലും, അത് ഇപ്പോഴും markdown fences അല്ലെങ്കിൽ അധികം ടെക്സ്റ്റുകൾ ചേർക്കുന്നുണ്ടാകും. ഇത് നിങ്ങളുടെ കോഡ് തകരാറിലാക്കും.
Ollama 0.3.0 മുതൽ, format പാരാമീറ്റർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് പരിഹരിക്കാം. ഇത് മോഡലിനെ ഒരു JSON schema പിന്തുടരാൻ നിർബന്ധിക്കുന്നു. ഇതുവഴി മോഡലിന് അധികമായി ടെക്സ്റ്റോ markdown-ഓ ചേർക്കാൻ കഴിയില്ല.
ഞാൻ ഇത് Gemma4-ഉം Ollama 0.30.7-ഉം ഉപയോഗിച്ച് പരീക്ഷിച്ചു. അതിന്റെ ഫലങ്ങൾ താഴെ നൽകുന്നു.
സ്വാഭാവികമായ ടെക്സ്റ്റുമായുള്ള പ്രശ്നം
മോഡലുകൾ സംഭാഷണങ്ങൾക്കായിട്ടാണ് പരിശീലിപ്പിക്കപ്പെട്ടിരിക്കുന്നത്. "ഇതാ നിങ്ങളുടെ JSON" എന്ന് പറയാൻ അവ ആഗ്രഹിക്കുന്നു. കർശനമായ പ്രോംപ്റ്റുകൾ നൽകിയാൽ പോലും, അവ പലപ്പോഴും മറുപടികൾ കോഡ് ബ്ലോക്കുകളിൽ (code blocks) ആണ് നൽകുന്നത്. Python-ലെ json.loads() ഈ ബ്ലോക്കുകളിൽ തട്ടി പരാജയപ്പെടുന്നു.
വേഗതയിലുള്ള നേട്ടം
format പാരാമീറ്റർ ഉപയോഗിക്കുന്നത് വളരെ വേഗതയുള്ളതാണ്.
- Structured output ഇല്ലാതെ: 32 സെക്കൻഡ്
- Structured output ഉപയോഗിച്ച്: 5 സെക്കൻഡ്
ഇത് 6.4 മടങ്ങ് വേഗതയിലുള്ള പുരോഗതിയാണ്. ടെക്സ്റ്റ് എങ്ങനെ ഫോർമാറ്റ് ചെയ്യണമെന്ന് തീരുമാനിക്കാൻ മോഡൽ സമയം കളയുന്നില്ല. നിങ്ങളുടെ schema-യ്ക്ക് അനുയോജ്യമായ ടോക്കണുകൾ (tokens) മാത്രമേ അത് നിർമ്മിക്കുന്നുള്ളൂ.
Type Safety-ക്കായി Pydantic ഉപയോഗിക്കാം JSON schemas നേരിട്ട് എഴുതേണ്ട ആവശ്യമില്ല. അവ സ്വയമേവ നിർമ്മിക്കാൻ Pydantic മോഡലുകൾ ഉപയോഗിക്കാം.
- നിങ്ങളുടെ Pydantic മോഡൽ നിർവചിക്കുക (Define).
- Schema നിർമ്മിക്കാൻ
model_json_schema()ഉപയോഗിക്കുക. - ആ schema Ollama-യിലേക്ക് നൽകുക.
- ഡാറ്റ ഒരേസമയം parse ചെയ്യാനും validate ചെയ്യാനും
model_validate_json()ഉപയോഗിക്കുക.
ഈ രീതി AI ഏജന്റുകൾക്ക് വളരെ അനുയോജ്യമാണ്. ഏത് ടൂൾ ആണ് അടുത്തതായി ഉപയോഗിക്കേണ്ടതെന്ന് തീരുമാനിക്കാൻ ഇത് ഉപയോഗിക്കാം. നിലവിലില്ലാത്ത ഒരു ടൂൾ പേര് മോഡൽ നിർമ്മിക്കാൻ ശ്രമിച്ചാൽ, Pydantic അത് ഉടൻ തന്നെ കണ്ടെത്തും.
നിലവിലെ പരിമിതികൾ
- ചെറിയ മോഡലുകളിൽ, സങ്കീർണ്ണമായ (deeply nested) schemas ചിലപ്പോൾ ശൂന്യമായ അറേകൾ (empty arrays) നൽകിയേക്കാം.
- Optional ഫീൽഡുകൾ null-ന് പകരം ശൂന്യമായ സ്ട്രിംഗുകൾ (empty strings) നൽകിയേക്കാം.
- വലിയ schemas നിങ്ങളുടെ context window കൂടുതൽ ഉപയോഗിക്കുന്നു.
മികച്ച രീതികൾ
- ചെറിയ മോഡലുകൾക്കായി ലളിതമായ extraction രീതി ഉപയോഗിക്കുക.
- Validation-നും ഏജന്റ് ടൂൾ സെലക്ഷനും Pydantic ഉപയോഗിക്കുക.
- സങ്കീർണ്ണമായ, nested ഡാറ്റയ്ക്കായി വലിയ മോഡലുകൾ ഉപയോഗിക്കുക.
- Pydantic ഒരു validation error കാണിക്കുമ്പോൾ retry logic ചേർക്കുക.
നിങ്ങളുടെ പ്രോംപ്റ്റുകൾ ശരിയാകുമെന്ന് വെറുതെ പ്രതീക്ഷിച്ചിരിക്കരുത്. ലോക്കൽ LLM പൈപ്പ്ലൈനുകൾ വിശ്വസനീയമാക്കാൻ structured outputs ഉപയോഗിക്കുക.
Optional learning community: https://t.me/GyaanSetuAi