{"serveDecision":{"state":"UNKNOWN","authority":"live-serve-decision"},"downloadable":null,"downloadReady":null,"degraded":false,"stale":false,"schemaVersion":"hugging-bay.local-kit.v2","displayOnly":true,"authorizationRequired":true,"eligibilitySnapshotAt":"2026-11-05T15:54:31.500Z","generatedAt":"2026-11-05T15:55:11.291Z","status":"runnable-bundle-recipe","commandsAvailable":true,"commands":[{"tool":"lm-studio","label":"LM Studio (no terminal)","kind":"gui-walkthrough","guiProven":false,"command":"Open LM Studio, then drag the downloaded 'typhoon2.1-gemma3-4b.Q4_K_M.gguf' into My Models to load it.","note":"A walk-through for your machine, not a checked run path — these steps are guidance, never a promise it will run. LM Studio's own UI takes it from there.","prefilledFrom":{"file":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","templateSha256":"734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209"},"guideCheckedAt":"2026-09-22","guideCheckedBy":"hugging-bay-docs","guideVersion":5},{"tool":"ollama","label":"Ollama","note":"Builds a local Ollama model named \"typhoon2.1-gemma3-4b.q4_k_m\" from the file (Ollama imports the file's embedded chat template) and starts a chat.","prefilledFrom":{"file":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","templateSha256":"734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209"},"guideCheckedAt":"2026-09-22","guideCheckedBy":"hugging-bay-docs","guideVersion":5},{"tool":"llama.cpp","label":"llama.cpp (terminal)","kind":"terminal","proven":true,"note":"Runs the file directly with llama.cpp's command-line tool. -st (--single-turn) runs one turn with the model's embedded chat template and exits — tested on llama.cpp b10964-b29c606e2. The old -no-cnv flag was removed and is rejected by current builds.","runner":{"name":"llama.cpp","testedBuild":"b10964-b29c606e2","singleTurnFlag":"-st"},"prefilledFrom":{"file":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","templateSha256":"734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209"},"guideCheckedAt":"2026-09-22","guideCheckedBy":"hugging-bay-docs","guideVersion":5},{"tool":"python","label":"Python (llama-cpp-python)","command":"pip install llama-cpp-python && python -c 'from llama_cpp import Llama; llm = Llama(\"./typhoon2.1-gemma3-4b.Q4_K_M.gguf\", n_ctx=8192); print(llm.create_chat_completion(messages=[{'\\''role'\\'': '\\''user'\\'', '\\''content'\\'': '\\''Hello!'\\''}])['\\''choices'\\''][0]['\\''message'\\'']['\\''content'\\''])'","note":"For scripting the model from Python; create_chat_completion applies the embedded chat template.","prefilledFrom":{"file":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","templateSha256":"734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209"},"guideCheckedAt":"2026-09-22","guideCheckedBy":"hugging-bay-docs","guideVersion":5}],"runBlockKind":"hosted-file-recipe","chatContract":{"available":true,"source":"gguf-metadata:tokenizer.chat_template","sourceFileSha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209","templateSha256":"734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","templateText":"{#- Begin-of-sequence token to start the model prompt -#}\n\n{#- Extracts the system message. Gemma does not support system messages so it will be prepended to first user message. -#}\n{%- if messages[0]['role'] == 'system' -%}\n    {%- if messages[0]['content'] is string -%}\n        {%- set first_user_prefix = messages[0]['content'] -%}\n    {%- else -%}\n        {%- set first_user_prefix = messages[0]['content'][0]['text'] -%}\n    {%- endif -%}\n    {%- set loop_messages = messages[1:] -%}\n{%- else -%}\n    {%- set first_user_prefix = \"You are a helpful assistant named Typhoon created by SCB 10X to be helpful, harmless, and honest.\" -%}\n    {%- set loop_messages = messages -%}\n{%- endif -%}\n{%- if enable_thinking is defined and enable_thinking is true %}\n    {%- set first_user_prefix = first_user_prefix + \" First, think through the reasoning internally, then present the reasoning within <think>...</think>. After thinking, clearly state a response that addresses the user's request and aligns with their preferences, not just providing a direct answer.\" -%}\n{%- endif %}\n{%- set first_user_prefix = first_user_prefix + '\\n\\n' -%}\n{#- Set tools to none if not defined for this ChatCompletion request (helps avoid errors later) -#}\n{%- if not tools is defined %}\n    {%- set tools = none %}\n{%- endif %}\n\n{#- If given only system message -#}\n{%- if loop_messages|length == 0 -%}\n    {{ '<start_of_turn>user\\n' -}}\n    {{ first_user_prefix }}\n    {#- Append system message with tool information if using tools in message request. -#}\n    {%- if tools is not none -%}\n        {{- \"Tools (functions) are available. If you decide to invoke one or more of the tools, you must respond with a python list of the function calls.\\n\" -}}\n        {{- \"Example Format: [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] \\n\" -}}\n        {{- \"Do not use variables. DO NOT USE MARKDOWN SYNTAX. You SHOULD NOT include any other text in the response if you call a function. If none of the functions can be used, point it out. If you lack the parameters required by the function, also point it out.\\n\" -}}\n        {{- \"Here is a list of functions in JSON format that you can invoke.\\n\" -}}\n        {{- tools | tojson(indent=4) -}}\n        {{- \"\\n\\n\" -}}\n    {%- endif -%}\n{%- endif %}\n\n{#- Main loop over all messages in the conversation history -#}\n{%- for message in loop_messages -%}\n    {#- Normalize roles for model prompt formatting -#}\n    {%- if (message['role'] == 'assistant') -%}\n        {%- set role = \"model\" -%}\n    {%- elif (message['role'] == 'tool') -%}\n        {%- set role = \"user\" -%}\n    {%- else -%}\n        {%- set role = message['role'] -%}\n    {%- endif -%}\n    {#- Mark the start of a message block with the appropriate role -#}\n    {{ '<start_of_turn>' + role + '\\n' -}}\n\n    {#- Insert system message content (if present) at the beginning of the first message. -#}\n    {%- if loop.first -%}\n        {{ first_user_prefix }}\n        {#- Append system message with tool information if using tools in message request. -#}\n        {%- if tools is not none -%}\n            {{- \"Tools (functions) are available. If you decide to invoke one or more of the tools, you must respond with a python list of the function calls.\\n\" -}}\n            {{- \"Example Format: [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] \\n\" -}}\n            {{- \"Do not use variables. DO NOT USE MARKDOWN SYNTAX. You SHOULD NOT include any other text in the response if you call a function. If none of the functions can be used, point it out. If you lack the parameters required by the function, also point it out.\\n\" -}}\n            {{- \"Here is a list of functions in JSON format that you can invoke.\\n\" -}}\n            {{- tools | tojson(indent=4) -}}\n            {{- \"\\n\\n\" -}}\n        {%- endif -%}\n    {%- endif -%}\n\n    {#- Format model tool calls (turns where model indicates they want to call a tool) -#}\n    {%- if 'tool_calls' in message -%}\n        {#- Opening bracket for tool call list. -#}\n        {{- '[' -}}\n        {#- For each tool call -#}\n        {%- for tool_call in message.tool_calls -%}\n            {#- Function name & opening parenthesis. -#}\n            {%- if tool_call.function is defined -%}\n                {%- set tool_call = tool_call.function -%}\n            {%- endif -%}\n            {{- tool_call.name + '(' -}}\n\n            {#-- Handle arguments as list (positional) or dict (named) --#}\n            {#-- Named arguments (dict) --#}\n            {%- if tool_call.arguments is iterable and tool_call.arguments is mapping -%}\n                {%- set first = true -%}\n                {%- for key, val in tool_call.arguments.items() -%}\n                    {%- if not first %}, {% endif -%}\n                    {{ key }}={{ val | tojson }}\n                    {%- set first = false -%}\n                {%- endfor -%}\n            {#-- Positional arguments (list) --#}\n            {%- elif tool_call.arguments is iterable -%}\n                {{- tool_call.arguments | map('tojson') | join(', ') -}}\n            {#-- Fallback: single positional value --#}\n            {%- else -%}\n                {{- tool_call.arguments | tojson -}}\n            {#-- Closing parenthesis. --#}\n            {%- endif -%}\n                {{- ')' -}}\n            {#-- If more than one tool call, place comma and move to formatting next tool call --#}\n            {%- if not loop.last -%}, {% endif -%}\n        {%- endfor -%}\n        {#- Closing bracket for tool call list. -#}\n        {{- ']' -}}\n    {%- endif -%}\n    \n    {#- Tool response start tag (for messages from a tool) -#}\n    {%- if (message['role'] == 'tool') -%}\n        {{ '<tool_response>\\n' -}}\n    {%- endif -%}\n\n    {#- Render the message content: handle plain string or multimodal content like image/text -#}\n    {%- if message['content'] is string -%}\n        {%- set content = message['content'] -%}\n        {%- if '</think>' in content -%}\n            {%- set content = content.split('</think>')[-1] -%}\n        {%- endif -%}\n        {{ content | trim }}\n    {%- elif message['content'] is iterable -%}\n        {%- for item in message['content'] -%}\n            {%- if item['type'] == 'image' -%}\n                {{ '<start_of_image>' }}\n            {%- elif item['type'] == 'text' -%}\n                {%- set content = item['text'] -%}\n                {%- if '</think>' in content -%}\n                    {%- set content = content.split('</think>')[-1] -%}\n                {%- endif -%}\n                {{ content | trim }}\n            {%- endif -%}\n        {%- endfor -%}\n    {%- else -%}\n        {{ raise_exception(\"Invalid content type\") }}\n    {%- endif -%}\n\n    {#- Tool response end tag -#}\n    {%- if (message['role'] == 'tool') -%}\n        {{ '</tool_response>' -}}\n    {%- endif -%}\n\n    {#- Mark end of a single turn -#}\n    {{ '<end_of_turn>\\n' }}\n{%- endfor -%}\n\n{#- If generation is to be triggered, add model prompt prefix -#}\n{%- if add_generation_prompt -%}\n    {{'<start_of_turn>model\\n'}}\n    {%- if enable_thinking is defined and enable_thinking is true -%}\n        {{- '<think>' -}}\n    {%- endif %}\n{%- endif -%}","extractedAt":"2026-09-24","extractionStage":"ingest.template-extract/v1","architecture":"gemma3","contextLength":131072,"stop":["<end_of_turn>"],"thinking":{"mode":"delimited","open":"<think>","close":"</think>"}},"artifact":{"id":"hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf","repo":"KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B-GGUF","type":"llm","summary":"Model from Hugging Face for translation: KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B-GGUF · unknown","license":"apache-2.0","hostingStatus":"hosted","hostedFileCount":1,"hostedFileCountAuthority":"live-serve-decision","displayFileCount":1,"fileCount":10,"upstreamUrl":"https://huggingface.co/KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B-GGUF"},"tool":"any","toolCompatibility":{"status":"unknown","reason":"recorded-evaluator-not-integrated"},"readiness":"unknown","requiredFiles":[{"path":".gitattributes","sizeBytes":1995,"sha256":"","format":"gitattributes","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":false,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"README.md","sizeBytes":6713,"sha256":"","format":"md","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":false,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"config.json","sizeBytes":2203,"sha256":"","format":"json","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":false,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.F16.gguf","sizeBytes":7767485056,"sha256":"3caf30af9e7778a3979be8c380d397a6319664ac453f4a6bfab4c020f64a02e1","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q2_K_L.gguf","sizeBytes":1891565856,"sha256":"2bc0d406b3d9b7d183a91b5d2b13115962d84a94f34073fd3fd27ec1c237efa6","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q3_K_M.gguf","sizeBytes":2098331328,"sha256":"9ad8513ac4d7c7422db3ec5cf278b8cab5a9c90ec638d4bb77de78aee2f9cc61","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","sizeBytes":2489765568,"sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209","format":"gguf","risk":"low","sourceKind":"mirrored-upstream","hosted":true,"readiness":"unknown","downloadReady":null,"reasonCodes":[],"reason":"Hosted on Hugging Bay and byte-verified — download is available now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":true,"serveDecision":{"state":"UNKNOWN","reasonCodes":[]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":"https://huggingbay.xyz/api/downloads/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf/typhoon2.1-gemma3-4b.Q4_K_M.gguf","chatTemplate":{"artifactId":"hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf","filePath":"typhoon2.1-gemma3-4b.Q4_K_M.gguf","sha256":"668905619765f645d0bf292e1d1852f9642a9b6aad0dbedf3c4ad2feca766209","architecture":"gemma3","generalName":"Unsloth_Gguf_3Jmktzpm","tokenizerModel":"llama","contextLength":131072,"bos":"<bos>","eos":"<end_of_turn>","stop":["<end_of_turn>"],"thinking":{"mode":"delimited","open":"<think>","close":"</think>"},"chatTemplate":"{#- Begin-of-sequence token to start the model prompt -#}\n\n{#- Extracts the system message. Gemma does not support system messages so it will be prepended to first user message. -#}\n{%- if messages[0]['role'] == 'system' -%}\n    {%- if messages[0]['content'] is string -%}\n        {%- set first_user_prefix = messages[0]['content'] -%}\n    {%- else -%}\n        {%- set first_user_prefix = messages[0]['content'][0]['text'] -%}\n    {%- endif -%}\n    {%- set loop_messages = messages[1:] -%}\n{%- else -%}\n    {%- set first_user_prefix = \"You are a helpful assistant named Typhoon created by SCB 10X to be helpful, harmless, and honest.\" -%}\n    {%- set loop_messages = messages -%}\n{%- endif -%}\n{%- if enable_thinking is defined and enable_thinking is true %}\n    {%- set first_user_prefix = first_user_prefix + \" First, think through the reasoning internally, then present the reasoning within <think>...</think>. After thinking, clearly state a response that addresses the user's request and aligns with their preferences, not just providing a direct answer.\" -%}\n{%- endif %}\n{%- set first_user_prefix = first_user_prefix + '\\n\\n' -%}\n{#- Set tools to none if not defined for this ChatCompletion request (helps avoid errors later) -#}\n{%- if not tools is defined %}\n    {%- set tools = none %}\n{%- endif %}\n\n{#- If given only system message -#}\n{%- if loop_messages|length == 0 -%}\n    {{ '<start_of_turn>user\\n' -}}\n    {{ first_user_prefix }}\n    {#- Append system message with tool information if using tools in message request. -#}\n    {%- if tools is not none -%}\n        {{- \"Tools (functions) are available. If you decide to invoke one or more of the tools, you must respond with a python list of the function calls.\\n\" -}}\n        {{- \"Example Format: [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] \\n\" -}}\n        {{- \"Do not use variables. DO NOT USE MARKDOWN SYNTAX. You SHOULD NOT include any other text in the response if you call a function. If none of the functions can be used, point it out. If you lack the parameters required by the function, also point it out.\\n\" -}}\n        {{- \"Here is a list of functions in JSON format that you can invoke.\\n\" -}}\n        {{- tools | tojson(indent=4) -}}\n        {{- \"\\n\\n\" -}}\n    {%- endif -%}\n{%- endif %}\n\n{#- Main loop over all messages in the conversation history -#}\n{%- for message in loop_messages -%}\n    {#- Normalize roles for model prompt formatting -#}\n    {%- if (message['role'] == 'assistant') -%}\n        {%- set role = \"model\" -%}\n    {%- elif (message['role'] == 'tool') -%}\n        {%- set role = \"user\" -%}\n    {%- else -%}\n        {%- set role = message['role'] -%}\n    {%- endif -%}\n    {#- Mark the start of a message block with the appropriate role -#}\n    {{ '<start_of_turn>' + role + '\\n' -}}\n\n    {#- Insert system message content (if present) at the beginning of the first message. -#}\n    {%- if loop.first -%}\n        {{ first_user_prefix }}\n        {#- Append system message with tool information if using tools in message request. -#}\n        {%- if tools is not none -%}\n            {{- \"Tools (functions) are available. If you decide to invoke one or more of the tools, you must respond with a python list of the function calls.\\n\" -}}\n            {{- \"Example Format: [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] \\n\" -}}\n            {{- \"Do not use variables. DO NOT USE MARKDOWN SYNTAX. You SHOULD NOT include any other text in the response if you call a function. If none of the functions can be used, point it out. If you lack the parameters required by the function, also point it out.\\n\" -}}\n            {{- \"Here is a list of functions in JSON format that you can invoke.\\n\" -}}\n            {{- tools | tojson(indent=4) -}}\n            {{- \"\\n\\n\" -}}\n        {%- endif -%}\n    {%- endif -%}\n\n    {#- Format model tool calls (turns where model indicates they want to call a tool) -#}\n    {%- if 'tool_calls' in message -%}\n        {#- Opening bracket for tool call list. -#}\n        {{- '[' -}}\n        {#- For each tool call -#}\n        {%- for tool_call in message.tool_calls -%}\n            {#- Function name & opening parenthesis. -#}\n            {%- if tool_call.function is defined -%}\n                {%- set tool_call = tool_call.function -%}\n            {%- endif -%}\n            {{- tool_call.name + '(' -}}\n\n            {#-- Handle arguments as list (positional) or dict (named) --#}\n            {#-- Named arguments (dict) --#}\n            {%- if tool_call.arguments is iterable and tool_call.arguments is mapping -%}\n                {%- set first = true -%}\n                {%- for key, val in tool_call.arguments.items() -%}\n                    {%- if not first %}, {% endif -%}\n                    {{ key }}={{ val | tojson }}\n                    {%- set first = false -%}\n                {%- endfor -%}\n            {#-- Positional arguments (list) --#}\n            {%- elif tool_call.arguments is iterable -%}\n                {{- tool_call.arguments | map('tojson') | join(', ') -}}\n            {#-- Fallback: single positional value --#}\n            {%- else -%}\n                {{- tool_call.arguments | tojson -}}\n            {#-- Closing parenthesis. --#}\n            {%- endif -%}\n                {{- ')' -}}\n            {#-- If more than one tool call, place comma and move to formatting next tool call --#}\n            {%- if not loop.last -%}, {% endif -%}\n        {%- endfor -%}\n        {#- Closing bracket for tool call list. -#}\n        {{- ']' -}}\n    {%- endif -%}\n    \n    {#- Tool response start tag (for messages from a tool) -#}\n    {%- if (message['role'] == 'tool') -%}\n        {{ '<tool_response>\\n' -}}\n    {%- endif -%}\n\n    {#- Render the message content: handle plain string or multimodal content like image/text -#}\n    {%- if message['content'] is string -%}\n        {%- set content = message['content'] -%}\n        {%- if '</think>' in content -%}\n            {%- set content = content.split('</think>')[-1] -%}\n        {%- endif -%}\n        {{ content | trim }}\n    {%- elif message['content'] is iterable -%}\n        {%- for item in message['content'] -%}\n            {%- if item['type'] == 'image' -%}\n                {{ '<start_of_image>' }}\n            {%- elif item['type'] == 'text' -%}\n                {%- set content = item['text'] -%}\n                {%- if '</think>' in content -%}\n                    {%- set content = content.split('</think>')[-1] -%}\n                {%- endif -%}\n                {{ content | trim }}\n            {%- endif -%}\n        {%- endfor -%}\n    {%- else -%}\n        {{ raise_exception(\"Invalid content type\") }}\n    {%- endif -%}\n\n    {#- Tool response end tag -#}\n    {%- if (message['role'] == 'tool') -%}\n        {{ '</tool_response>' -}}\n    {%- endif -%}\n\n    {#- Mark end of a single turn -#}\n    {{ '<end_of_turn>\\n' }}\n{%- endfor -%}\n\n{#- If generation is to be triggered, add model prompt prefix -#}\n{%- if add_generation_prompt -%}\n    {{'<start_of_turn>model\\n'}}\n    {%- if enable_thinking is defined and enable_thinking is true -%}\n        {{- '<think>' -}}\n    {%- endif %}\n{%- endif -%}","templateDigest":"sha256:734b992d67a8e2045f05f7373b7098d204ed84f5f6deb10ae7a02ae59e532deb","extractionReason":"embedded-template","extractorVersion":"hugging-bay.gguf-embedded-chat-contract.v1","extractedAt":"2026-09-24T04:05:39.941Z","hasEmbeddedTemplate":true},"serve_verdict":{"can_download":false,"bytes_verified":true,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q5_K_M.gguf","sizeBytes":2829569728,"sha256":"552efcb830e4298fd45410cb9c263093ef3c14d2e02f8ba7e97e8b28cf560c9a","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q6_K.gguf","sizeBytes":3190611648,"sha256":"16bcdf226ae2e59930e9f073535c1258744aecb92744ca299256474e12a4f5bc","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"},{"path":"typhoon2.1-gemma3-4b.Q8_0.gguf","sizeBytes":4130234656,"sha256":"a5e749889c38a2d623d37b9fb9c6fd4d4a548ffd2198a5762da5ad368859e870","format":"gguf","risk":"low","sourceKind":"external-hf","hosted":false,"readiness":"blocked","downloadReady":false,"reasonCodes":["NOT_SERVE_ELIGIBLE"],"reason":"This file is not available to download right now.","individuallyHashed":true,"fileOnly":true,"directDownloadAuthorized":false,"serveDecision":{"state":"BLOCKED","reasonCodes":["NOT_SERVE_ELIGIBLE"]},"downloadUrlResponse":{"status":302,"followRedirects":true},"downloadUrl":null,"chatTemplate":null,"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"signature_state":"unsigned"}],"warnings":["This description is temporarily unavailable."],"nextActions":[{"label":"Inspect recorded bundle state","url":"https://huggingbay.xyz/api/artifacts/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf/bundle","method":"GET"},{"label":"List individually hashed hosted files","url":"https://huggingbay.xyz/api/downloadable-files?artifactId=hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf&limit=100","method":"GET"},{"label":"Inspect trust bundle","url":"https://huggingbay.xyz/api/trust-bundles/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf","method":"GET"},{"label":"Open artifact","url":"https://huggingbay.xyz/artifact/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf","method":"GET"}],"docs":{"artifactUrl":"https://huggingbay.xyz/artifact/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf","downloadsUrl":"https://huggingbay.xyz/api/downloadable-files?artifactId=hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf&limit=100","bundleUrl":"https://huggingbay.xyz/api/artifacts/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf/bundle","trustBundleUrl":"https://huggingbay.xyz/api/trust-bundles/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"},"note":{"summary":"Downloadable doesn't mean tested: this record says whether the exact file can be downloaded now, not that the model is complete or that it runs.","downloadable":true},"serve_verdict":{"can_download":false,"bytes_verified":false,"signature":"unsigned","freshness":"stale","checked_at":null,"evidence_url":"/api/manifests/hf-model-kordai-typhoon-gemma3-kordtranslate-en-th-4b-gguf"}}