{"id":2609,"date":"2025-03-25T07:04:28","date_gmt":"2025-03-25T07:04:28","guid":{"rendered":"https:\/\/mailitics.com\/index.php\/2025\/03\/25\/build-your-own-ai-coding-assistant-in-jupyterlab-with-ollama-and-hugging-face\/"},"modified":"2025-03-25T07:04:28","modified_gmt":"2025-03-25T07:04:28","slug":"build-your-own-ai-coding-assistant-in-jupyterlab-with-ollama-and-hugging-face","status":"publish","type":"post","link":"https:\/\/mailitics.com\/index.php\/2025\/03\/25\/build-your-own-ai-coding-assistant-in-jupyterlab-with-ollama-and-hugging-face\/","title":{"rendered":"Build Your Own AI Coding Assistant in JupyterLab with Ollama and Hugging Face"},"content":{"rendered":"<p>    Build Your Own AI Coding Assistant in JupyterLab with Ollama and Hugging Face<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/jupyter-ai.readthedocs.io\/en\/latest\/index.html\"><strong>Jupyter AI<\/strong><\/a> brings generative <a href=\"https:\/\/blog.jupyter.org\/generative-ai-in-jupyter-3f7174824862\">AI capabilities<\/a> right into the <mdspan datatext=\"el1742588122661\" class=\"mdspan-comment\">Jupyter<\/mdspan> interface. Having a local AI assistant ensures privacy, reduces latency, and provides offline functionality, making it a powerful tool for developers. In this article, we\u2019ll learn how to set up a local AI coding assistant in <strong>JupyterLab<\/strong> using <strong>Jupyter AI<\/strong>, <strong>Ollama<\/strong> and <strong>Hugging Face<\/strong>. By the end of this article, you\u2019ll have a fully functional coding assistant in JupyterLab capable of autocompleting code, fixing errors, creating new notebooks from scratch, and much more, as shown in the screenshot below.<\/p>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXcp2ElYYLY8IWPmowmz_6JNKt3AY1Qqys4Rfu0SyXd1tSMLrdJlRtKvSfSZ8e_WKlZSM8TD5ZilI-tXw9ik0wPrZ5SABUZTNG75HJSpUJHdd4yTMq1minMZwu-avfYAjlp3NX5qhQ.png?ssl=1\" alt=\"\" class=\"wp-image-599911\"><figcaption class=\"wp-element-caption\">Coding assistant in Jupyter Lab via Jupyter AI | Image by Author<br \/><\/figcaption><\/figure>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/26a0.png?ssl=1\" alt=\"\u26a0\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\"> Jupyter AI is still under heavy development, so some features may break. As of writing this article, I\u2019ve tested the setup to confirm it works, but expect <a href=\"https:\/\/github.com\/jupyterlab\/jupyter-ai\">potential changes<\/a> as the project evolves. Also the performance of the assistant depends on the model that you select so make sure you choose the one that is fit for your use case.<\/em><\/p>\n<\/blockquote>\n<h1 class=\"wp-block-heading\">What is Jupyter AI<\/h1>\n<p class=\"wp-block-paragraph\">First things first \u2014 what is Jupyter AI? As the name suggests, Jupyter AI is a JupyterLab extension for generative AI. This powerful tool transforms your standard Jupyter notebooks or JupyterLab environment into a generative AI playground. The best part? It also works seamlessly in environments like <strong>Google Colaboratory<\/strong> and <strong>Visual Studio<\/strong> Code. This extension does all the heavy lifting, providing access to a variety of model providers (both open and closed source) right within your Jupyter environment.\u00a0<\/p>\n<h1 class=\"wp-block-heading\">Installation and Setup<\/h1>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXed2qQNXZWVUpAIqqduCNg9umUuYQagnnLMl43HtPvaa_Mt2wi1fCAWCePNiWcqHFXD5HciRomwIa0C8NMfTBSR57ApxilJ8HxYEPL_jtyO0PVndgMKxRQhIYGj-wjLCTpqxCapjQ.png?ssl=1\" alt=\"\" class=\"wp-image-599905\"><figcaption class=\"wp-element-caption\">Flow diagram of the installation process | Image by Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Setting up the environment involves three main components:<\/p>\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">JupyterLab<\/li>\n<li class=\"wp-block-list-item\">The Jupyter AI extension<\/li>\n<li class=\"wp-block-list-item\">Ollama (for Local Model Serving)<\/li>\n<li class=\"wp-block-list-item\">[Optional] Hugging Face (for <a href=\"https:\/\/huggingface.co\/docs\/hub\/en\/gguf\">GGUF<\/a> models)<\/li>\n<\/ul>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Honestly, getting the assistant to resolve coding errors is the easy part. What is tricky is ensuring all the installations have been done correctly. It\u2019s therefore essential you follow the steps correctly.<\/em><\/p>\n<\/blockquote>\n<h2 class=\"wp-block-heading\">1. Installing the Jupyter AI Extension<\/h2>\n<p class=\"wp-block-paragraph\">It\u2019s recommended to create a<strong> <\/strong><a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\"><strong>new environment<\/strong><\/a> specifically for Jupyter AI to keep your existing environment clean and organised. Once done follow the next steps. Jupyter AI requires <strong>JupyterLab 4.x<\/strong> or <strong>Jupyter Notebook 7+<\/strong>, so make sure you have the latest version of Jupyter Lab installed\u200b. You can install\/upgrade JupyterLab with pip or conda:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\"># Install JupyterLab 4 using pip\npip install jupyterlab~=4.0<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Next, install the Jupyter AI extension as follows.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">pip install \"jupyter-ai[all]\"<\/code><\/pre>\n<p class=\"wp-block-paragraph\">This is the easiest method for installation as it includes all provider dependencies (so it supports Hugging Face, Ollama, etc., out of the box). To date, Jupyter AI supports the following <a href=\"https:\/\/jupyter-ai.readthedocs.io\/en\/latest\/users\/index.html#model-providers\">model providers<\/a> :\u00a0<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/image-22.png?ssl=1\" alt=\"\" class=\"wp-image-599899\"><figcaption class=\"wp-element-caption\">Supported Model providers in Jupyter AI along with the dependencies | Created by Author from the <a href=\"https:\/\/jupyter-ai.readthedocs.io\/en\/latest\/users\/index.html#model-providers\">documentation<\/a><\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">If you\u00a0encounter errors during the Jupyter AI installation, manually install Jupyter AI using <code>pip<\/code> without the [all] optional dependency group. This way you can control which models are available in your Jupyter AI environment. For example, to install Jupyter AI with only added support for Ollama models, use the following:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">pip install jupyter-ai langchain-ollama<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The dependencies depend upon the model providers (see table above).\u00a0 Next, restart your JupyterLab instance. If you see a chat icon on the left sidebar, this means everything has been installed perfectly. With Jupyter AI, you can chat with models or use inline magic commands directly within your notebooks.<\/p>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXe6TU-dThE0twIol8EKo0JxdzAGywlDjlVt7_AydpGk09vVDQFi4FBO4e7FiGsvHTaeLsfhj4SlxpmJ0oD4a5FGV-cIvGn9cGY8089lUBnW_9t-bhaOsuvAy6Ib-QTe6MfYsrR97g.png?ssl=1\" alt=\"\" class=\"wp-image-599906\"><figcaption class=\"wp-element-caption\">Native chat UI in JupyterLab | Image by Author<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">2. Setting Up Ollama for Local Models<\/h2>\n<p class=\"wp-block-paragraph\">Now that Jupyter AI is installed, we need to configure it with a model. While Jupyter AI integrates with Hugging Face models directly, some models <a href=\"https:\/\/github.com\/jupyterlab\/jupyter-ai\/issues\/576\">may not work properly<\/a>. Instead, Ollama provides a more reliable way to load models locally.<\/p>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ollama.com\/\"><strong>Ollama<\/strong><\/a> is a handy tool for running <a href=\"https:\/\/towardsdatascience.com\/tag\/large-language-models\/\" title=\"Large Language Models\">Large Language Models<\/a> locally. It lets you download pre-configured AI models from its <a href=\"https:\/\/ollama.com\/library\">library<\/a>. Ollama supports all major platforms (macOS, Windows, Linux)\u200b, so choose the method for your OS and download and install it from the official <a href=\"https:\/\/ollama.com\/download\">website<\/a>. After installation, verify that it is set up correctly by running:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\"><a href=\"https:\/\/towardsdatascience.com\/tag\/ollama\/\" title=\"Ollama\">Ollama<\/a> --version\n------------------------------\nollama version is 0.6.2<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Also, ensure that your Ollama server <em>must<\/em> be running which you can check by calling <em><code>ollama serve<\/code><\/em> at the terminal:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">$ ollama serve\nError: listen tcp 127.0.0.1:11434: bind: address already in use<\/code><\/pre>\n<p class=\"wp-block-paragraph\">If the server is already active, you will see an error like above confirming that Ollama is running and in use.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dotted\">\n<h1 class=\"wp-block-heading\">Using models via Ollama<\/h1>\n<h2 class=\"wp-block-heading\">Option 1: Using Pre-Configured Models<\/h2>\n<p class=\"wp-block-paragraph\">Ollama provides a <a href=\"https:\/\/ollama.com\/library\">library<\/a> of pre-trained models that you can <strong>download and run locally.<\/strong> To start using a model, download it using the <strong>pull<\/strong> command. For example, to use <strong><code>qwen2.5-coder:1.5b<\/code><\/strong>, run:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">ollama pull qwen2.5-coder:1.5b<\/code><\/pre>\n<p class=\"wp-block-paragraph\">This will download the model in your local environment. To confirm if the model has been downloaded, run:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">ollama list<\/code><\/pre>\n<p class=\"wp-block-paragraph\">This will list all the models you\u2019ve downloaded and stored locally on your system using Ollama.<\/p>\n<h2 class=\"wp-block-heading\">Option 2: Loading a Custom Model<\/h2>\n<p class=\"wp-block-paragraph\">If the model you need isn\u2019t available in Ollama\u2019s library, you can load a custom model by creating a <a href=\"https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/modelfile.md\"><strong>Model File<\/strong><\/a> that specifies the model\u2019s source.For detailed instructions on this process, refer to the <a href=\"https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/import.md\">Ollama Import Documentation<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Option 3: Running GGUF Models directly from Hugging Face<\/h2>\n<p class=\"wp-block-paragraph\">Ollama now supports <a href=\"https:\/\/huggingface.co\/docs\/hub\/en\/ollama\"><strong>GGUF models directly from the Hugging Face Hub<\/strong><\/a>, including both public and private models. This means if you want to use GGUF model directly from Hugging Face Hub you can do so without requiring a custom Model File as mentioned in Option 2 above.<\/p>\n<p class=\"wp-block-paragraph\">For example, to load a <code>4-bit quantized Qwen2.5-Coder-1.5B-Instruct model<\/code> from Hugging Face:<\/p>\n<p>1. First, enable Ollama under your <a href=\"https:\/\/huggingface.co\/settings\/local-apps\">Local Apps settings<\/a>.<\/p>\n<figure class=\"wp-block-image aligncenter is-resized\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXcMBfgV_V_xH43JEpU0KGSB9xHyoZZWUwLg5QeGEnyRYinNtZBKNYSWaP3Nnb64apGbveKwhfDCtV4AtrRlEWQgoxjDgD-J93Xw5RJaUWnVv9MZAkiI8lC1FlMju90mOUEap7AdKA.png?ssl=1\" alt=\"\" class=\"wp-image-599909\" style=\"width:450px;height:auto\"><figcaption class=\"wp-element-caption\">How to enable Ollama under your <a href=\"https:\/\/huggingface.co\/settings\/local-apps\">Local Apps settings<\/a> on Hugging Face | Image by Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">2. On the model page, choose Ollama from the Use this model dropdown as shown below.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/1f_1W5yM9Pa9Qw4MuaT3HEg.gif?ssl=1\" alt=\"\" class=\"wp-image-599904\"><figcaption class=\"wp-element-caption\">Accessing GGUF model from HuggingFace Hub via Ollama | Image by Author<\/figcaption><\/figure>\n<h1 class=\"wp-block-heading\">Configuring Jupyter AI with Ollama\u00a0<\/h1>\n<p class=\"wp-block-paragraph\">We are almost there. In JupyterLab, open the Jupyter AI <strong>chat interface on the sidebar. <\/strong>At the top of the chat panel or in its settings (gear icon), there is a dropdown or field to select the <strong>Model provider<\/strong> and model ID. Choose <strong>Ollama<\/strong> as the provider, and enter the model name exactly as shown by Ollama list in the terminal (e.g. <code>qwen2.5-coder:1.5b<\/code>). Jupyter AI will connect to the local Ollama server and load that model for queries\u200b. No API keys are needed since this is local.<\/p>\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Set Language model, Embedding model and inline completions models based on the models of your choice.<\/li>\n<li class=\"wp-block-list-item\">Save the settings and return to the chat interface.<\/li>\n<\/ul>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXfiiEzgrP_FpOgidpbIRrrWzXxQ7a73Zl_12AzBB4h5vRiSlk8PXTf_Uka4VHqMcSbYlw3HETgLLdbSD7rHeCYDsjYZT89_t5yJVEbQseMagj4mx81vNIavTKrGW5XlotIbTm7LdA.png?ssl=1\" alt=\"\" class=\"wp-image-599907\"><figcaption class=\"wp-element-caption\">Configure Jupyter AI with Ollama | Image by Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">This configuration links Jupyter AI to the locally running model via Ollama. While inline completions should be enabled by this process, if that doesn\u2019t happen, you can do it manually by clicking on the <strong>Jupyternaut<\/strong> icon, which is located in the bottom bar of the JupyterLab interface to the left of the <strong>Mode indicator<\/strong> (e.g., Mode: Command). This opens a dropdown menu where you can select <code>Enable completions by Jupyternaut<\/code> to activate the feature.<\/p>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXdM0VmnvfZFlgTFmZnbL5ZiYUsEhK0Wq_dbvyznNRKCGCNZxQKFR83w3ohBc7n8xRmC2HETHBrJ2i_fUwTJuII4ZpVxnEStConMPX_s4r4j10R_7i5NauD31_yVIqNM0KIsov9uhg.png?ssl=1\" alt=\"\" class=\"wp-image-599908\"><figcaption class=\"wp-element-caption\">Enabling code completions in notebook | Image by Author<\/figcaption><\/figure>\n<h1 class=\"wp-block-heading\">Using the AI Coding Assistant\u00a0<\/h1>\n<p class=\"wp-block-paragraph\">Once set up, you can use the AI coding assistant for various tasks like code autocompletion, debugging help, and generating new code from scratch. It\u2019s important to note here that you can interact with the assistant either through the <strong>chat sidebar<\/strong> or directly in notebook cells using <code>%%ai magic commands<\/code>. Let\u2019s look at both the ways.<\/p>\n<h2 class=\"wp-block-heading\">Coding assistant via Chat interface<\/h2>\n<p class=\"wp-block-paragraph\">This is pretty straightforward. You can simply chat with the model to perform an action. For instance, here is how we can ask the model to explain the error in the code and then subsequently fix the error by selecting code in the notebook.<\/p>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXe5-n98Q1H5lCpE_zIhykY_dZX-aULpdz6l0gotjKaxFRDe0SNMmNf-NmywepZL2XfEqMxh3z0Bty1oQfOa18BaNUlpsrD8uqftAyFvUR8UVjKF8Z5a1oy3Nt3gGjNiN6GO_CObqA.gif?ssl=1\" alt=\"\" class=\"wp-image-599910\"><figcaption class=\"wp-element-caption\">Debugging Assistance Example using Jupyter AI via Chat | Image by Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">You can also ask the AI to generate code for a task from scratch, just by describing what you need in natural language. Here is a Python function that returns all prime numbers up to a given positive integer N, generated by Jupyternaut.<\/p>\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/AD_4nXeuZjsGDSWsnckyLASG0UT-IGSlTC4TCqAOpsT8JN7csgX38w6HaVGikI066vt0kzGns2uDXHfy9N3_dVN3-qbRPAr84bKjvHG56vZ04uL_7L5dUB-fo4IsDpQw80pTX-X1SuatAw.gif?ssl=1\" alt=\"\" class=\"wp-image-599912\"><figcaption class=\"wp-element-caption\">Generating New Code from Prompts using Jupyter AI via Chat | Image by Author<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Coding assistant via notebook cell or IPython shell:<\/h2>\n<p class=\"wp-block-paragraph\">You can also interact with models directly within a Jupyter notebook. First, load the IPython extension:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\">%load_ext jupyter_ai_magics<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Now, you can use the <code>%%ai<\/code> cell magic to interact with your chosen language model using a specified prompt. Let\u2019s replicate the above example but this time within the notebook cells. <\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" height=\"704\" width=\"1024\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/contributor.insightmediagroup.io\/wp-content\/uploads\/2025\/03\/image-24-1024x704.png?resize=1024%2C704&#038;ssl=1\" alt=\"\" class=\"wp-image-599901\"><figcaption class=\"wp-element-caption\">Generating New Code from Prompts using Jupyter AI in the notebook | Image by Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">For more details and options you can refer to the official <a href=\"https:\/\/jupyter-ai.readthedocs.io\/en\/latest\/users\/index.html#the-ai-and-ai-magic-commands\">documentation<\/a>.<\/p>\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n<p class=\"wp-block-paragraph\">As you can gauge from this article, Jupyter AI makes it easy to set up a coding assistant, provided you have the right installations and setup in place. I used a relatively small model, but you can choose from a variety of models supported by Ollama or Hugging Face. The key advantage here is that using a local model offers significant benefits: it enhances privacy, reduces latency, and decreases dependence on proprietary model providers. However, running <strong>l<\/strong>arge models locally with Ollama can be resource-intensive so ensure that you have sufficient RAM<strong>. <\/strong>With the rapid pace at which open-source models are improving, you can achieve comparable performance even with these alternatives.<\/p>\n<p>The post <a href=\"https:\/\/towardsdatascience.com\/build-your-own-ai-coding-assistant-in-jupyterlab-with-ollama-and-hugging-face\/\">Build Your Own AI Coding Assistant in JupyterLab with Ollama and Hugging Face<\/a> appeared first on <a href=\"https:\/\/towardsdatascience.com\/\">Towards Data Science<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Parul Pandey<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/towardsdatascience.com\/build-your-own-ai-coding-assistant-in-jupyterlab-with-ollama-and-hugging-face\/\">Go to original source<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Build Your Own AI Coding Assistant in JupyterLab with Ollama and Hugging Face Jupyter AI brings generative AI capabilities right into the Jupyter interface. Having a local AI assistant ensures privacy, reduces latency, and provides offline functionality, making it a powerful tool for developers. In this article, we\u2019ll learn how to set up a local [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,69,240,1203,71,722],"tags":[98,2109,1204],"class_list":["post-2609","post","type-post","status-publish","format-standard","hentry","category-aimldsaimlds","category-artificial-intelligence","category-editors-pick","category-jupyter-notebook","category-large-language-models","category-ollama","tag-ai","tag-assistant","tag-jupyter"],"_links":{"self":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/2609"}],"collection":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/comments?post=2609"}],"version-history":[{"count":0,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/2609\/revisions"}],"wp:attachment":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/media?parent=2609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/categories?post=2609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/tags?post=2609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}