{"id":17716,"date":"2025-06-30T14:37:27","date_gmt":"2025-06-30T12:37:27","guid":{"rendered":"https:\/\/www.centigrade.de\/blog\/open-source-llms-im-test-wie-gut-eignen-sie-sich-fuer-als-entwicklungsunterstuetzung\/"},"modified":"2025-07-17T15:47:26","modified_gmt":"2025-07-17T13:47:26","slug":"open-source-llms-put-to-the-test-how-well-suited-are-they-for-development-support","status":"publish","type":"blog","link":"https:\/\/www.centigrade.de\/en\/blog\/open-source-llms-put-to-the-test-how-well-suited-are-they-for-development-support\/","title":{"rendered":"Open-source LLMs put to the test: How well suited are they for development support?"},"content":{"rendered":"<h2><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17712\" src=\"https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1.jpg\" alt=\"Zwei Bildschirme mit Code Illustration\" width=\"1000\" height=\"560\" srcset=\"https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1.jpg 1000w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1-300x168.jpg 300w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1-768x430.jpg 768w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1-24x13.jpg 24w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1-36x20.jpg 36w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Engineering-Illustration.Keyvisual-1-48x27.jpg 48w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/h2>\n<h2><strong>1. Intro<\/strong><\/h2>\n<p>In this blog article, we address the question of whether open source models provided locally within companies are mature enough to compete with the \u201cbig\u201d commercial models such as Claude or Chat-GPT. The hype surrounding AI \u2013 regardless of the industry \u2013 could hardly be greater. Everywhere, automation and efficiency gains are promised, because machines are supposed to achieve more in the same amount of time than dozens of people ever could. We are investigating the extent to which this also applies to free open source models. To do this, we took a realistic <a href=\"https:\/\/github.com\/realworld-angular\/realworld-angular\">Angular example project<\/a> and set the LLMs <strong>Code Llama 3.1, Deep Seek Coder 2, Phind Code Llama, and Wizard Coder<\/strong> a few tasks&#8230;<\/p>\n<p><!--more--><\/p>\n<p>The results are then compared with Claude Sonnet 4&#8217;s answers to provide a solid reference value. Who wins? And by how much? Read on to find out.<\/p>\n<p>The results of this test include unavoidable subjective assessments and therefore inevitably reflect our perspective. Some readers will certainly have had different experiences and therefore not share our opinion on the test results. And that&#8217;s perfectly fine!<\/p>\n<h3><strong>1.1 Motivation<\/strong><\/h3>\n<p>Large language models (LLMs) are no longer just a hype\u2014they have established themselves as practical aids in software development. They can offer valuable support, especially in web development, where frameworks, libraries, and best practices are constantly evolving. But how good are local open-source models with up to 60B really? And is it worth using them in a professional environment?<\/p>\n<p>That&#8217;s exactly what we want to find out in our test. Because if open-source LLMs deliver what they promise, they could not only optimize our workflows, but also represent a more independent and, above all, more privacy-friendly alternative to proprietary models.<\/p>\n<h3><strong>1.2 Testeted LLMs<\/strong><\/h3>\n<p>In our test, we selected the best-known and most successful open source models. These include models developed and trained by large corporations such as Meta and DeepSeek AI, as well as those that are highly ranked on the <a href=\"https:\/\/huggingface.co\/spaces\/bigcode\/bigcode-models-leaderboard\" target=\"_blank\" rel=\"noopener\">Big Code Models Leaderboard<\/a>.<\/p>\n\n<table id=\"tablepress-21\" class=\"tablepress tablepress-id-21\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name  <\/th><th class=\"column-2\">Number of parameters<\/th><th class=\"column-3\">Open-Source<\/th><th class=\"column-4\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Code Llama 3.1<\/td><td class=\"column-2\">8B<\/td><td class=\"column-3\">?<\/td><td class=\"column-4\">Meta's powerful model for code generation and understanding.<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Deep Seek Coder 2<\/td><td class=\"column-2\">15.7B<\/td><td class=\"column-3\">?<\/td><td class=\"column-4\">Specialized in code analysis and generation with extended context.<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Phind Code Llama<\/td><td class=\"column-2\">3.8B<\/td><td class=\"column-3\">?<\/td><td class=\"column-4\">Optimized for accurate answers and fast code assistance.<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Wizard Coder<\/td><td class=\"column-2\">33B<\/td><td class=\"column-3\">?<\/td><td class=\"column-4\">Finely tuned for complex programming tasks and refactorings.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Claude Sonnet 4<\/td><td class=\"column-2\">not public<\/td><td class=\"column-3\">?<\/td><td class=\"column-4\">Anthropic's proprietary model with strong code comprehension capabilities.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-21 from cache -->\n<h2><strong>2. Test setup<\/strong><\/h2>\n<p>The test takes place in a realistic <strong>Angular 18<\/strong> project, which serves as a realistic basis for our evaluation. We use <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener\">VS Code<\/a> as our IDE with the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=Continue.continue\" target=\"_blank\" rel=\"noopener\">Continue extension<\/a>, which allows us to integrate locally hosted models. The open-source LLMs are deployed on our infrastructure using Ollama and integrated into Continue to provide convenient access to the models from within the IDE.<\/p>\n<h3>Hardware Limitations<\/h3>\n<p>By hosting on our own infrastructure, we are naturally subject to hardware limitations that restrict the maximum number of parameters in the models, for example. The largest models that still run smoothly for us have 60 billion parameters. With larger models, the test would certainly turn out differently here and there.<\/p>\n<h3>2.1 Procedure<\/h3>\n<p>All models receive the same eight tasks with identical prompts and context data. The tests cover various aspects of web development:<\/p>\n<ul>\n<li><strong>Explain app and routing structure <\/strong>(code comprehension): The LLM should explain the routing structure and shed light on the app&#8217;s architecture.<\/li>\n<li><strong>Analyze a service&#8217;s API <\/strong>(code analysis): Here, the responsibility of a service and how it is used in the app should be explained.<\/li>\n<li><strong>Add a simple feature <\/strong>(code modification): The LLMs should add the information &#8220;word count&#8221; and &#8220;reading time&#8221; to an article preview.<\/li>\n<li><strong>Fix a bug <\/strong>(critical thinking): A bug with very subtle effects was built in here. The LLMs should find and fix it.<\/li>\n<li><strong>Refactoring initialization observables <\/strong>(refactoring): Here, the models were presented with several component initialization logics based on RxJS that share a common pattern. This pattern should be found and cleanly extracted.<\/li>\n<li><strong>Accessibility check <\/strong>(A11y knowledge): This task tests the recognition of accessibility issues in components.<\/li>\n<li><strong>Writing unit tests <\/strong>(test automation): The LLMs are presented with a component for which they are to write unit tests.<\/li>\n<li><strong>Anti-pattern recognition <\/strong>(framework-specific knowledge): This task tests knowledge of best practices, whether Angular-specific or general to software development.<\/li>\n<\/ul>\n<h3>2.2 Evaluation<\/h3>\n<p>The answers are evaluated according to the following criteria:<\/p>\n<ul>\n<li><strong>Accuracy<\/strong>: Are the statements correct or misleading?<\/li>\n<li><strong>Completeness<\/strong>: Are any essential aspects missing?<\/li>\n<li><strong>Comprehensibility<\/strong>: Is the answer clear and structured?<\/li>\n<li><strong>Relevance<\/strong>: Does the solution address the core of the question?<\/li>\n<\/ul>\n<p>Each aspect is given a score of 1\u201310, from which the average is calculated as the overall rating.<\/p>\n<h2>Results &#8230;<\/h2>\n<p>For the sake of brevity, we have not included the exact tasks and their answers from the LLMs here; the article only shows the grading and evaluation of the results.<\/p>\n<h3>Classification of the evaluation<\/h3>\n<p>Although we have made every effort to keep the ratings as objective as possible, a certain degree of bias cannot be ruled out. Not everyone will agree with all the scores awarded, and that is perfectly legitimate. Work environments and requirements often vary greatly, so a &#8220;one-size-fits-all&#8221; rating is not possible.<\/p>\n\n<table id=\"tablepress-25\" class=\"tablepress tablepress-id-25\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Task<\/th><th class=\"column-2\">Claude Sonnet 4 <\/th><th class=\"column-3\">Code Llama <\/th><th class=\"column-4\">DeepSeek Coder 2 <\/th><th class=\"column-5\">Phind Code Llama<\/th><th class=\"column-6\">Wizard Coder   <\/th><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">1 \u2013 Understanding the code<\/td><td class=\"column-2\">9,75<\/td><td class=\"column-3\">7,75<\/td><td class=\"column-4\">8,75<\/td><td class=\"column-5\">8,25<\/td><td class=\"column-6\">7,25<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">2 \u2013 Code Analyse<\/td><td class=\"column-2\">10,0<\/td><td class=\"column-3\">8,25<\/td><td class=\"column-4\">9,25<\/td><td class=\"column-5\">7,0<\/td><td class=\"column-6\">9,0<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">3 \u2013 Feature-expansion<\/td><td class=\"column-2\">10,0<\/td><td class=\"column-3\">6,25<\/td><td class=\"column-4\">7,75<\/td><td class=\"column-5\">4,0<\/td><td class=\"column-6\">8,75<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">4 \u2013 Bug-Fixing<\/td><td class=\"column-2\">10,0<\/td><td class=\"column-3\">5,25<\/td><td class=\"column-4\">5,75<\/td><td class=\"column-5\">5,0<\/td><td class=\"column-6\">3,5<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">5 \u2013 Refactoring of Observables<\/td><td class=\"column-2\">5,5<\/td><td class=\"column-3\">4,25<\/td><td class=\"column-4\">1,0<\/td><td class=\"column-5\">4,75<\/td><td class=\"column-6\">2,5<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">6 \u2013 Accessibility-Check<\/td><td class=\"column-2\">9,75<\/td><td class=\"column-3\">5,0<\/td><td class=\"column-4\">5,25<\/td><td class=\"column-5\">6,25<\/td><td class=\"column-6\">5,25<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">7 \u2013 Writing unit-tests<\/td><td class=\"column-2\">8,75<\/td><td class=\"column-3\">7,0<\/td><td class=\"column-4\">4,25<\/td><td class=\"column-5\">8,75<\/td><td class=\"column-6\">3,0<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">8 \u2013 Angular Best Practices<\/td><td class=\"column-2\">10,0<\/td><td class=\"column-3\">1,25<\/td><td class=\"column-4\">8,25<\/td><td class=\"column-5\">2,0<\/td><td class=\"column-6\">2,75<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td><td class=\"column-3\"><\/td><td class=\"column-4\"><\/td><td class=\"column-5\"><\/td><td class=\"column-6\"><\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">\u00d8 \/ 10<\/td><td class=\"column-2\">9,22 \/ 10<\/td><td class=\"column-3\">5,63 \/ 10<\/td><td class=\"column-4\">6,28 \/ 10<\/td><td class=\"column-5\">5,75 \/ 10<\/td><td class=\"column-6\">5,25 \/ 10<\/td><td class=\"column-7\"><\/td><td class=\"column-8\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-25 from cache -->\n<h3>Explanations of the extremes<\/h3>\n<p>In order to better classify the highest and lowest scores, we have briefly described the extremes here:<\/p>\n\n<table id=\"tablepress-23\" class=\"tablepress tablepress-id-23\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Model<\/th><th class=\"column-2\">Best Task<\/th><th class=\"column-3\">Worst Task<br \/>\n<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Code Llama\t<\/td><td class=\"column-2\">8.25 points for code analysis<\/td><td class=\"column-3\">1.25 points for Angular best practices<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\">- Recognized methods and HTTP endpoints are correct<br \/>\n- Clear functional description of the service<br \/>\n- However: filter parameters are unclear, error handling is missing<\/td><td class=\"column-3\">- Almost all suggestions were incorrect or irrelevant<br \/>\n- Did not understand takeUntilDestroyed<br \/>\n- Only recognized single responsibility principle (SRP) violations<br \/>\n- However, since Angular is used less frequently than other front-end frameworks such as React, we consider this result to be understandable, as the LLM training data will contain correspondingly little knowledge of Angular.<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Deep Seek Coder 2\t<\/td><td class=\"column-2\">9.25 points for code analysis<\/td><td class=\"column-3\">1.0 points for refactoring an observable<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\">- Recognized methods and HTTP endpoints are correct<br \/>\n- Clear functional description of the service<br \/>\n- However: Missing parameters\/return types, outdated DI recommendation<\/td><td class=\"column-3\">- The task could not be completed<br \/>\n- After repeated attempts, the output always stops at the same point<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Phind Llama<\/td><td class=\"column-2\">Write 8.75 points in unit tests<\/td><td class=\"column-3\">2.0 points for Angular best practices<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\">- Tests compiled directly<br \/>\n- Best practices such as dependency doubles and maintaining smoke tests were followed<br \/>\n- Template is also tested<br \/>\n- However: Incorrectly added a standalone component to the declarations array.<\/td><td class=\"column-3\">- Outdated unsubscribe patterns recommended<br \/>\n- Unnecessary component extractions suggested<br \/>\n- No helpful architecture recommendations<br \/>\n- However: Since Angular is used less frequently than other frontend frameworks such as React, we consider this result understandable, as the LLM training data will contain correspondingly little Angular knowledge.<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Wizard Coder<\/td><td class=\"column-2\">9.0 points for code analysis<\/td><td class=\"column-3\">2.5 points for refactoring an observable<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\">- Good, concise, and precise listing of the class API<br \/>\n- Uses technical terms and concepts<br \/>\n- Shows that it is a REST API<br \/>\n- Addresses the topic of error handling<\/td><td class=\"column-3\">- Code that does not compile is suggested (ignores encapsulation)<br \/>\n- Generated code does not match the original in terms of content<br \/>\n- Introduces a bug because the wrong service is called<br \/>\n- Poor naming of functions<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">Claude\t<\/td><td class=\"column-2\">10.0 points for code analysis, feature enhancement, and bug fixing<\/td><td class=\"column-3\">5.5 points for refactoring an observable<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\">- Good and concise description of APIs and their benefits<br \/>\n- Proposed code is simple, well named, and compiles<br \/>\n- Cause and scenario of error are explained coherently and bug is found<\/td><td class=\"column-3\">- Code compiles, but the abstraction created offers no added value<br \/>\n- A code snippet was reproduced semantically 1:1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-23 from cache -->\n<h2>&#8230; And evaluation<\/h2>\n<p>The proprietary Claude model clearly dominates with <strong>an average score of 9.2\/10<\/strong>, outperforming open-source models (average score of 5.6\u20136.3) in almost all tasks, especially <strong>complex debugging, refactoring, and framework knowledge<\/strong>. Here is a summary of the results table:<\/p>\n\n<table id=\"tablepress-24\" class=\"tablepress tablepress-id-24\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Model<\/th><th class=\"column-2\">Strengths<\/th><th class=\"column-3\">Weaknesses<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Code Llama<\/td><td class=\"column-2\">High scores in routine tasks (Task 1, Task 2)<br \/>\n<\/td><td class=\"column-3\">Weaknesses in complex implementation with semantic details and outdated knowledge (Task 5, Task 8)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Deep Seek Coder<\/td><td class=\"column-2\">Robust in descriptive tasks (Task 1, Task 2)<br \/>\n<\/td><td class=\"column-3\">\"Fails at architecture\/pattern tasks (Task 5, Task 8).<br \/>\nRefactoring task could not be completed.<br \/>\nAccessibility rather superficial\"<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Phind<\/td><td class=\"column-2\">Very good in structured language and tests (Task 1, Task 7)<br \/>\n<\/td><td class=\"column-3\">Weak in Angular details, refactoring, anti-pattern recognition<br \/>\n\"Complete failure in anti-pattern recognition (Task 5, Task 8).<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Wizard Coder<\/td><td class=\"column-2\">Very strong in explicit tasks with a clear structure (Task 2, Task 3)<\/td><td class=\"column-3\">\"Complete failures in anti-pattern detection (Task 5, Task 8).<br \/>\nWeaknesses in identifying the exact cause of errors and testable code.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Claude<\/td><td class=\"column-2\">Convincing in almost all disciplines, has good and up-to-date knowledge of Angular and best practices<\/td><td class=\"column-3\">Weak when it comes to semantic details that need to be refactored in a meaningful way.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-24 from cache -->\n<p><strong>Strengths of all LLMs:<\/strong><\/p>\n<ul>\n<li>Code understanding:<\/li>\n<li>Summarizing obvious app architectures<\/li>\n<li>Summarizing class APIs<\/li>\n<li>Use of classes and components<\/li>\n<\/ul>\n<p><strong>Mixed performance<\/strong><\/p>\n<ul>\n<li>Unit test generation<\/li>\n<li>From &#8220;too complicated to get up and running&#8221; to &#8220;compiled out-of-the-box&#8221;<\/li>\n<li>From &#8220;relevant things omitted&#8221; to &#8220;too many details tested&#8221;<\/li>\n<li>Feature extension<\/li>\n<li>From &#8220;contains absolute beginner-level errors&#8221; to &#8220;flawlessly implemented&#8221;<\/li>\n<\/ul>\n<p><strong>Weaknesses of <em>open-source <\/em>LLMs:<\/strong><\/p>\n<ul>\n<li>Finding subtle bugs<\/li>\n<li>The bug is not limited to one or a few specific locations, but rather many possibilities are &#8220;suggested.&#8221;<\/li>\n<li>A kind of checklist is provided that does not necessarily have anything to do with the error.<\/li>\n<li>The explanations for the bug sometimes do not make much sense in the actual error context.<\/li>\n<li>Poor <strong>critical thinking <\/strong>(bug fixing, best practices)<\/li>\n<li>Superficial <strong>knowledge of accessibility and Angular<\/strong><\/li>\n<\/ul>\n<p><strong>Weaknesses <em>of all <\/em>LLMs:<\/strong><\/p>\n<ul>\n<li>RxJS \/ Observables refactoring<\/li>\n<li>Meaningless abstractions are created very frequently<\/li>\n<li>This also results in poor and incomprehensible naming<\/li>\n<li>In most cases, the code no longer compiles after refactoring<\/li>\n<li>Code becomes more complicated, not simpler<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Open-source LLMs are sufficient for simple code generation, but proprietary models are (still) superior for professional development. While experienced developers can gain valuable insights from the models, beginners run the risk of adopting flawed concepts due to incorrect or outdated suggestions from the LLMs, thereby acquiring unfavorable habits. The models have very different strengths and weaknesses, which leads to a wide range of applications but also limitations.<\/p>\n<p>At the end of the day, it&#8217;s the results that count. Those who use AI models effectively can turn them into valuable tools for completing a wide variety of tasks quickly and conveniently. For our part, we remain excited to see what future models will bring us and are happy to continue experimenting with them.<\/p>\n","protected":false},"author":82,"featured_media":0,"template":"","tags":[840,403,1031,983,656,654],"class_list":["post-17716","blog","type-blog","status-publish","hentry","tag-ai","tag-development-en","tag-development-2","tag-ki-2","tag-web-engineering-en-2","tag-web-engineering-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/users\/82"}],"version-history":[{"count":4,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17716\/revisions"}],"predecessor-version":[{"id":17718,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17716\/revisions\/17718"}],"wp:attachment":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/media?parent=17716"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/tags?post=17716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}