{"id":53648,"date":"2026-10-12T14:29:05","date_gmt":"2026-10-12T04:29:05","guid":{"rendered":"https:\/\/www.cloudproinc.com.au\/?p=53648"},"modified":"2026-10-12T14:29:05","modified_gmt":"2026-10-12T04:29:05","slug":"simple-python-ai-app-with-llama-to-describe-images","status":"publish","type":"post","link":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/12\/simple-python-ai-app-with-llama-to-describe-images\/","title":{"rendered":"Simple Python AI App with Llama to Describe Images"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Want a quick win with multimodal AI? In this post, you\u2019ll build a tiny Python app that uses a Llama vision model to look at an image and tell you what it is. We\u2019ll use <a href=\"https:\/\/ollama.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ollama <\/a>to run the model locally (no paid keys required), then call it from Python. By the end, you\u2019ll run the script on your machine and see real descriptions printed to your terminal.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-we-ll-build\">What we\u2019ll build<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A command-line tool:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Input: an image file (JPEG\/PNG).<\/li>\n\n\n\n<li>Output: a short description of what\u2019s in the image, generated by a Llama multimodal model.<\/li>\n\n\n\n<li>Stack: Python + <code>ollama<\/code> (local LLM runtime) + Llama <strong>vision<\/strong> model.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"683\" height=\"1024\" data-src=\"\/wp-content\/uploads\/2025\/08\/Ollama-App-683x1024.png\" alt=\"\" class=\"wp-image-53649 lazyload\" data-srcset=\"\/wp-content\/uploads\/2025\/08\/Ollama-App-683x1024.png 683w, \/wp-content\/uploads\/2025\/08\/Ollama-App-200x300.png 200w, \/wp-content\/uploads\/2025\/08\/Ollama-App-768x1152.png 768w, \/wp-content\/uploads\/2025\/08\/Ollama-App-980x1470.png 980w, \/wp-content\/uploads\/2025\/08\/Ollama-App-480x720.png 480w, \/wp-content\/uploads\/2025\/08\/Ollama-App.png 1024w\" data-sizes=\"(max-width: 683px) 100vw, 683px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 683px; --smush-placeholder-aspect-ratio: 683\/1024;\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prerequisites\">Prerequisites<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/category\/python\/\"><strong>Python<\/strong> <\/a>3.9+ and <code>pip<\/code><\/li>\n\n\n\n<li><strong>Ollama<\/strong> installed (macOS, Windows, or Linux):\n<ul class=\"wp-block-list\">\n<li>Download and install from the Ollama site, then ensure <code>ollama<\/code> works in your terminal: <code>ollama --version<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Pull a <strong>Llama vision<\/strong> model. As of writing, a good default is: <code>ollama pull llama3.2-vision<\/code> If your Ollama catalog differs, any \u201c<em>vision<\/em>\u201d or \u201c<em>llava<\/em>\u201d compatible model works. You can list models with <code>ollama list<\/code>.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-create-a-python-virtual-environment\">Create a Python virtual environment<\/h2>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1\"><code>python -m venv .venv\n# Windows\n.venv\\Scripts\\activate\n# macOS\/Linux\nsource .venv\/bin\/activate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install dependencies:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2\"><code>pip install ollama pillow<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ollama<\/code> is the official Python client for the local Ollama server.<\/li>\n\n\n\n<li><code>Pillow<\/code> (PIL) lets us open\/validate image files and optionally resize\/convert.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-python-app\">The Python app<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create <code>describe_image.py<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3\"><code>import sys\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom PIL import Image\nimport ollama  # pip install ollama\n\nMODEL_NAME = \"llama3.2-vision\"\n\nPROMPT_TEMPLATE = \"\"\"You are an assistant that describes images clearly and concisely.\nReturn 1\u20133 sentences describing the main subject and notable details.\nBe specific but avoid guessing text that isn\u2019t legible.\"\"\"\n\ndef validate_image(path: Path) -&gt; Optional&#91;Path]:\n    if not path.exists():\n        print(f\"Error: file not found: {path}\")\n        return None\n    try:\n        with Image.open(path) as im:\n            im.verify()  # quick integrity check\n        return path\n    except Exception as e:\n        print(f\"Error: not a valid image ({e})\")\n        return None\n\ndef describe_image(image_path: Path) -&gt; str:\n    \"\"\"\n    Sends the image to the local Llama vision model via Ollama and returns the description.\n    \"\"\"\n    # Ollama accepts an array of messages; attach the image path on the user message.\n    response = ollama.chat(\n        model=MODEL_NAME,\n        messages=&#91;{\n            \"role\": \"user\",\n            \"content\": PROMPT_TEMPLATE,\n            \"images\": &#91;str(image_path)]\n        }],\n        options={\n            # Tweak generation if you like:\n            \"temperature\": 0.2,\n            \"num_predict\": 256\n        }\n    )\n    # The assistant's message is in response&#91;'message']&#91;'content']\n    return response&#91;\"message\"]&#91;\"content\"].strip()\n\ndef main():\n    if len(sys.argv) &lt; 2:\n        print(\"Usage: python describe_image.py &lt;path-to-image&gt;\")\n        sys.exit(1)\n\n    image_path = Path(sys.argv&#91;1])\n    valid = validate_image(image_path)\n    if not valid:\n        sys.exit(2)\n\n    print(f\"Using model: {MODEL_NAME}\")\n    print(f\"Analyzing image: {valid}\\n\")\n\n    try:\n        description = describe_image(valid)\n        print(\"Description:\\n\")\n        print(description)\n    except ollama.ResponseError as e:\n        print(f\"Ollama error: {e}\")\n        print(\"Tip: Make sure the model is pulled and the Ollama service is running.\")\n        sys.exit(3)\n    except Exception as e:\n        print(f\"Unexpected error: {e}\")\n        sys.exit(4)\n\nif __name__ == \"__main__\":\n    main()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-the-code-does\">What the code does<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Validates<\/strong> the image path and ensures the file is actually an image.<\/li>\n\n\n\n<li><strong>Sends<\/strong> a message to the Llama vision model via <code>ollama.chat()<\/code>, attaching the image in the <code>images<\/code> array.<\/li>\n\n\n\n<li><strong>Prints<\/strong> the model\u2019s natural-language description.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-the-app\">Run the app<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Start (or ensure) the Ollama service is running. On most systems, Ollama runs as a background service after installation. If needed: <code>ollama serve<\/code> (Keep that window open, or run it as a service.)<\/li>\n\n\n\n<li>In another terminal where your virtual environment is active, run: <code>python describe_image.py .\/samples\/cat.jpg<\/code> Replace <code>.\/samples\/cat.jpg<\/code> with any local JPG\/PNG.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-example-output\">Example output<\/h3>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4\"><code>Using model: llama3.2-vision\nAnalyzing image: samples\/cat.jpg\n\nDescription:\n\nA brown tabby cat is sitting on a windowsill, looking slightly to the left. \nSunlight highlights the fur, and a blurred outdoor scene is visible beyond the glass.\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Your output will vary; that\u2019s normal. If the response looks too long or too vague, lower <code>temperature<\/code> or tighten the prompt (e.g., \u201cReturn a single concise sentence.\u201d).<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-troubleshooting\">Troubleshooting<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>Ollama error: model not found<\/code><\/strong><br>You likely didn\u2019t pull the model. Run: <code>ollama pull llama3.2-vision<\/code><\/li>\n\n\n\n<li><strong><code>Connection refused<\/code> or timeouts<\/strong><br>Ensure the Ollama server is running: <code>ollama serve<\/code> (or restart it).<br>On Windows\/macOS, try quitting\/relaunching the Ollama app.<\/li>\n\n\n\n<li><strong>Slow first run<\/strong><br>The first inference can be slower while weights are paged into memory. Subsequent runs are faster.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-extending-the-app\">Extending the app<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Batch mode:<\/strong> Loop over a folder and describe every image.<\/li>\n\n\n\n<li><strong>Structured output:<\/strong> Ask the model to return JSON (e.g., <code>{ \"objects\": [...], \"scene\": \"...\" }<\/code>) and parse it.<\/li>\n\n\n\n<li><strong>Confidence:<\/strong> Prompt the model to include uncertainty (e.g., \u201cIf unsure, say you\u2019re not certain.\u201d).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-recap\">Recap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You just built a tiny\u2014but powerful\u2014Python app that uses a local Llama vision model to describe images. With Ollama handling the model runtime and a few lines of Python, you can experiment with multimodal AI entirely on your machine. Try different images, tweak the prompt, and explore richer outputs like object lists or captions tailored for your use case.<\/p>\n\n\n\n<ul class=\"wp-block-yoast-seo-related-links yoast-seo-related-links\">\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2025\/08\/18\/build-a-multi-agent-assistant-in-python-with-the-openai-agents-sdk\/\">Build a Multi-Agent Assistant in Python with the OpenAI Agents SDK<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/07\/21\/integrating-azure-ai-vision-for-image-analysis-in-c-applications\/\">Integrating Azure AI Vision for Image Analysis in C# Applications<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/07\/25\/assigning-local-admins-to-windows-11-through-intune\/\">Assigning Local Admins to Windows 11 through Intune<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/07\/22\/generate-an-image-caption-with-azure-ai-vision-and-net\/\">Generate an Image Caption With Azure AI Vision and .NET<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2025\/05\/01\/building-a-blazor-net-app-that-recognizes-images-with-openai\/\">Building a Blazor .NET App that Recognizes Images with OpenAI<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Want a quick win with multimodal AI? In this post, you\u2019ll build a tiny Python app that uses a Llama vision model to look at an image and tell you what it is. We\u2019ll use Ollama to run the model locally (no paid keys required), then call it from Python. By the end, you\u2019ll run [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":53662,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[24,13,81],"tags":[],"class_list":["post-53648","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-blog","category-llama"],"jetpack-related-posts":[{"id":57425,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/12\/meta-muse-spark-promises-personal-superintelligence-three-questions-every-cio-should-ask-first\/","url_meta":{"origin":53648,"position":0},"title":"Meta Muse Spark Promises &#8220;Personal Superintelligence.&#8221; Three Questions Every CIO Should Ask First","author":"CPI Staff","date":"October 12, 2026","format":false,"excerpt":"On April 8, Meta Superintelligence Labs unveiled Muse Spark \u2014 their first model in a new Muse series \u2014 and framed it as the opening move toward \"personal superintelligence.\" The pitch is bold: an AI assistant that does not just answer questions, but understands your world because it is built\u2026","rel":"","context":"In &quot;AI for Business &amp; AI Strategy&quot;","block_context":{"text":"AI for Business &amp; AI Strategy","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/ai-for-business-ai-strategy\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png 1x, \/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png 1.5x, \/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png 2x, \/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png 3x, \/wp-content\/uploads\/2026\/04\/meta-muse-spark-personal-superintelligence-cio-questions-cover.png 4x"},"classes":[]},{"id":59336,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/22\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap\/","url_meta":{"origin":53648,"position":1},"title":"Microsoft Agent Framework Python 1.22 and .NET 1.25 Roadmap","author":"CPI Staff","date":"October 22, 2026","format":false,"excerpt":"Python 1.22 and .NET 1.25 improve Microsoft Agent Framework, but they also change upgrade, hosting and state decisions. Here is what technology leaders should put on the roadmap.","rel":"","context":"In &quot;AI Agents&quot;","block_context":{"text":"AI Agents","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/ai-agents\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png 1x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png 1.5x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png 2x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png 3x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-python-1-22-and-net-1-25-roadmap.png 4x"},"classes":[]},{"id":53867,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/12\/alpaca-vs-phi-3-for-fine-tuning\/","url_meta":{"origin":53648,"position":2},"title":"Alpaca vs Phi-3 for Fine-Tuning","author":"CPI Staff","date":"October 12, 2026","format":false,"excerpt":"A practical comparison of Alpaca and Microsoft Phi-3 for instruction fine-tuning, with clear guidance, code snippets, and a decision checklist for teams balancing accuracy, cost, and compliance.","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/blog\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png 1x, \/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png 1.5x, \/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png 2x, \/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png 3x, \/wp-content\/uploads\/2025\/09\/alpaca-vs-phi-3-for-instruction-fine-tuning-in-practice.png 4x"},"classes":[]},{"id":59262,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/20\/microsoft-agent-framework-1-22-and-net-1-25-production-guide\/","url_meta":{"origin":53648,"position":3},"title":"Microsoft Agent Framework 1.22 and .NET 1.25 Production Guide","author":"CPI Staff","date":"October 20, 2026","format":false,"excerpt":"Python 1.22 and .NET 1.25 improve agent reliability and control, but several changes require careful testing before production deployment.","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/net\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png 1x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png 1.5x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png 2x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png 3x, \/wp-content\/uploads\/2026\/10\/microsoft-agent-framework-1-22-and-net-1-25-production-guide.png 4x"},"classes":[]},{"id":53341,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/12\/building-a-blazor-net-app-that-recognizes-images-with-openai\/","url_meta":{"origin":53648,"position":4},"title":"Building a Blazor .NET App that Recognizes Images with OpenAI","author":"CPI Staff","date":"October 12, 2026","format":false,"excerpt":"In this blog post, we\u2019ll show you how to Build a Blazor .NET App that Recognizes Images with OpenAI. You\u2019ll see how we securely upload image files, send them to OpenAI\u2019s API, and return a natural-language response\u2014seamlessly integrated into a modern web interface. This example highlights how CPI Consulting applies\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/net\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/05\/Building-a-Blazor-NET-App-that-Recognizes-Images-with-OpenAI-e1746073555343.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/05\/Building-a-Blazor-NET-App-that-Recognizes-Images-with-OpenAI-e1746073555343.png 1x, \/wp-content\/uploads\/2025\/05\/Building-a-Blazor-NET-App-that-Recognizes-Images-with-OpenAI-e1746073555343.png 1.5x, \/wp-content\/uploads\/2025\/05\/Building-a-Blazor-NET-App-that-Recognizes-Images-with-OpenAI-e1746073555343.png 2x"},"classes":[]},{"id":53640,"url":"https:\/\/www.cloudproinc.com.au\/index.php\/2026\/10\/12\/build-a-multi-agent-assistant-in-python-with-the-openai-agents-sdk\/","url_meta":{"origin":53648,"position":5},"title":"Build a Multi-Agent Assistant in Python with the OpenAI Agents SDK","author":"CPI Staff","date":"October 12, 2026","format":false,"excerpt":"This post \"Build a Multi-Agent Assistant in Python with the OpenAI Agents SDK\" shows how to build an AI agent that can (a) generate secure passwords, (b) tell the current time, and (c) hand off coding questions to a Python-tutor sub-agent. Along the way, we\u2019ll cover what the Agents SDK\u2026","rel":"","context":"In &quot;AI Agents&quot;","block_context":{"text":"AI Agents","link":"https:\/\/www.cloudproinc.com.au\/index.php\/category\/ai-agents\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png 1x, \/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png 1.5x, \/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png 2x, \/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png 3x, \/wp-content\/uploads\/2025\/08\/build-a-multi-agent-assistant-in-python-with-the-openai-agen-1.png 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"\/wp-content\/uploads\/2025\/08\/simple-python-ai-app-with-llama-to-describe-images-1.png","_links":{"self":[{"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/comments?post=53648"}],"version-history":[{"count":1,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53648\/revisions"}],"predecessor-version":[{"id":53650,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53648\/revisions\/53650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/media\/53662"}],"wp:attachment":[{"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/media?parent=53648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/categories?post=53648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/tags?post=53648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}