𝗢𝗹𝗹𝗮𝗺𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗢𝘂𝘁𝗽𝘂𝘁𝘀 𝗜𝗻 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲

Kuendesha LLM za ndani mara nyingi husababisha makosa ya kusoma JSON (parsing errors). Unaiambia modeli irudishe JSON pekee. Bado inaongeza alama za markdown au maandishi ya ziada. Hii inaharibu kodi yako.

Tangu Ollama 0.3.0, unaweza kurekebisha hili kwa kutumia parameter ya format. Hii inailazimisha modeli kufuata JSON schema. Inafanya iwe vigumu kwa modeli kuongeza maandishi ya ziada au markdown.

Nilijaribu hili kwa kutumia Gemma4 na Ollama 0.30.7. Hapa kuna matokeo.

The Problem with Natural Text Modeli zimefundishwa kwa ajili ya mazungumzo. Zinataka kusema "Hii hapa ni JSON yako." Hata kwa maelekezo (prompts) makali, mara nyingi huzifunga majibu katika code blocks. json.loads() ya Python inafeli inapokutana na sehemu hizo.

The Speed Advantage Kutumia parameter ya format ni haraka zaidi.

  • Bila structured output: sekunde 32
  • Kwa kutumia structured output: sekunde 5

Hii ni mabadiliko ya kasi mara 6.4. Modeli haipotezi muda kuamua jinsi ya kupanga maandishi. Inazalisha token tu zinazoendana na schema yako.

Using Pydantic for Type Safety Huhitaji kuandika JSON schemas kwa mkono. Tumia Pydantic models kuzitengeneza kiotomatiki.

  1. Define Pydantic model yako.
  2. Tumia model_json_schema() kutengeneza schema.
  3. Pitisha schema hiyo kwa Ollama.
  4. Tumia model_validate_json() kusoma na kuhakiki data kwa wakati mmoja.

Mbinu hii ni bora kwa AI agents. Unaweza kuitumia kuamua ni kifaa (tool) gani agent anapaswa kukiita kinachofuata. Ikiwa modeli itajaribu kubuni jina la kifaa ambalo halipo, Pydantic itakigundua mara moja.

Current Limitations

  • Schemas zilizojaa tabaka nyingi (deeply nested) zinaweza wakati mwingine kurudisha array tupu kwenye modeli ndogo.
  • Sehemu zisizo za lazima (optional fields) zinaweza kurudisha maandishi matupu badala ya null.
  • Schemas kubwa hutumia zaidi dirisha lako la muktadha (context window).

Best Practices

  • Tumia uchukuaji rahisi wa data (simple extraction) kwa modeli ndogo.
  • Tumia Pydantic kwa uhakiki (validation) na uteuzi wa kifaa cha agent.
  • Tumia modeli kubwa kwa data tata na iliyojipanga kwa tabaka (nested data).
  • Ongeza mantiki ya kujaribu tena (retry logic) wakati Pydantic inapotoa kosa la uhakiki.

Acha kutegemea tu kwamba maelekezo (prompts) yako yatafanya kazi. Tumia structured outputs kufanya mifumo (pipelines) yako ya LLM ya ndani iwe ya kuaminika.

Chanzo: https://dev.to/jangwook_kim_e31e7291ad98/ollama-structured-outputs-in-practice-getting-type-safe-json-from-local-llms-with-pydantic-m38

Jumuiya ya kujifunzia ya hiari: https://t.me/GyaanSetuAi