{"id":10187,"date":"2024-05-10T17:32:17","date_gmt":"2024-05-10T15:32:17","guid":{"rendered":"https:\/\/via-internet.de\/blog\/?p=10187"},"modified":"2024-05-10T18:08:21","modified_gmt":"2024-05-10T16:08:21","slug":"ollama-create-a-chatgpt-clone-with-ollama-and-hyperdiv","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2024\/05\/10\/ollama-create-a-chatgpt-clone-with-ollama-and-hyperdiv\/","title":{"rendered":"Ollama | Create a ChatGPT Clone with Ollama and HyperDiv"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In this blog post, we\u2019ll explore how to create a ChatGPT-like application using Hyperdiv and Ollama. <a href=\"https:\/\/hyperdiv.io\/\" data-type=\"link\" data-id=\"https:\/\/hyperdiv.io\/\">Hyperdiv<\/a> provides a flexible framework for building web applications, while <a href=\"https:\/\/ollama.com\/\" data-type=\"link\" data-id=\"https:\/\/ollama.com\/\">Ollama<\/a> offers powerful local machine learning capabilities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We will start with the Hyperdiv GPT-chatbot app template and adapt it to leverage Ollama, which runs locally. This guide will walk you through the necessary steps and code changes to integrate these technologies effectively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TL;DR<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The complete code for this tutorial is <a href=\"https:\/\/github.com\/r14r\/Ollama_Tutorial_Create-a-ChatGPT-Clone-with-HyperDiv\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Setting Up Your Environment<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install Ollama<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Download Ollama from <a href=\"https:\/\/ollama.com\/download\">https:\/\/ollama.com\/download<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Install (Windows) or unpack (macOS) the downloaded file. This gets you an Ollama app (which allows you to start the Ollama service) and a Ollama command line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start the Ollama service by starting the Ollama app.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"366\" height=\"55\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.03.07.png\" alt=\"\" class=\"wp-image-10189\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.03.07.png 366w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.03.07-300x45.png 300w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On macOS, you will see an icon for the Ollama Servce at the top bar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"128\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.08.29.png\" alt=\"\" class=\"wp-image-10191\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.08.29.png 468w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.08.29-300x82.png 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then, open a terminal and type <code>ollama list<\/code>. This command displays the install models.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ollama list<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"207\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.05.53-1024x207.png\" alt=\"\" class=\"wp-image-10190\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.05.53-1024x207.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.05.53-300x61.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.05.53-768x155.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.05.53.png 1241w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To install a model, type <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ollama pull llama3<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"226\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-1024x226.png\" alt=\"\" class=\"wp-image-10192\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-1024x226.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-300x66.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-768x170.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-1536x339.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.09.56-2048x452.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For our ChatGPT Clone, we will use the llama3 model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to use another model, then search here: <a href=\"https:\/\/ollama.com\/library\">https:\/\/ollama.com\/library<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Clone the HyperDiv Examples Repository<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Start by cloning or downloading the Hyperdiv GPT-chatbot app. This app provides a basic structure for a chatbot application, which we will modify to work with Ollama.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go to your desired local folder to store the sources and type<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/hyperdiv\/hyperdiv-apps<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then, go to the folder <code>hyperdiv-apps\/gpt-chatbot<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Adapt app to use Ollama backend<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, we will create an ollama client to process all request:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"prolog\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from openai import OpenAI\n\nclient = OpenAI(\n    base_url=\"http:\/\/localhost:11434\/v1\",\n    api_key=\"ollama\",\n)<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"196\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-1024x196.png\" alt=\"\" class=\"wp-image-10194\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-1024x196.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-300x57.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-768x147.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-1536x293.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.20.54-2048x391.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then we modify the request function to use this client<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We change<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">response = openai.ChatCompletion.create(<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">to<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">response = client.chat.completions.create(<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"111\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-1024x111.png\" alt=\"\" class=\"wp-image-10195\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-1024x111.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-300x33.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-768x83.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-1536x167.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.07-2048x222.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Next step is changing the accees to the response fields. With OpenAI, the response data is a dictionary, so the way to acess the fields is like<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chunk[\"choices\"]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> With Ollama, we can access the field by name<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chunk.choices<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The changes are<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> for chunk in response:\n    message = chunk.choices[0].delta\n    state.current_reply += message.content<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"65\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-1024x65.png\" alt=\"\" class=\"wp-image-10196\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-1024x65.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-300x19.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-768x48.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-1536x97.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.17-2048x129.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And the last step would be the change to use the correct model:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">model = form.select(\n    options=(\"codellama\", \"llama2\", \"llama3\", \"mistral\"),\n        value=\"llama3\",\n        name=\"gpt-model\",\n)<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"91\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-1024x91.png\" alt=\"\" class=\"wp-image-10197\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-1024x91.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-300x27.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-768x69.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-1536x137.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.21.43-2048x183.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Thats is! Save all changes<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prepare Python environment and run app<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Install the required modules:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install openai hyperdiv<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Run the app:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python start.py<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"105\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.30.39-1024x105.png\" alt=\"\" class=\"wp-image-10198\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.30.39-1024x105.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.30.39-300x31.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.30.39-768x79.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.30.39.png 1496w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Open the browser at <a href=\"http:\/\/localhost:8888\">http:\/\/localhost:8888<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"159\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-1024x159.png\" alt=\"\" class=\"wp-image-10199\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-1024x159.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-300x47.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-768x119.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-1536x238.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Bildschirmfoto-2024-05-10-um-17.31.16-2048x318.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Final Result<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/ollama-and-hyperdiv-chatgpt-clone.gif\" alt=\"\" class=\"wp-image-10202\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The complete code for this tutorial is <a href=\"https:\/\/github.com\/r14r\/Ollama_Tutorial_Create-a-ChatGPT-Clone-with-HyperDiv\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post, we\u2019ll explore how to create a ChatGPT-like application using Hyperdiv and Ollama. Hyperdiv provides a flexible framework for building web applications, while Ollama offers powerful local machine learning capabilities. We will start with the Hyperdiv GPT-chatbot app template and adapt it to leverage Ollama, which runs locally. This guide will walk you through the necessary steps and code changes to integrate these technologies effectively. TL;DR The complete code for this tutorial is here. Step 1: Setting Up Your Environment Install Ollama Download Ollama from https:\/\/ollama.com\/download. Install (Windows) or unpack (macOS) the downloaded file. This gets you an [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":10188,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[165,164,65],"tags":[],"class_list":["post-10187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hyperdiv","category-ollama","category-python"],"jetpack_featured_media_url":"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/image-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/10187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=10187"}],"version-history":[{"count":9,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/10187\/revisions"}],"predecessor-version":[{"id":10212,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/10187\/revisions\/10212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media\/10188"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=10187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=10187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=10187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}