[{"data":1,"prerenderedAt":1970},["ShallowReactive",2],{"layout-article-sidebar-en-laravel_vs_symfony":3,"similar-articles-en-laravel_vs_symfony":178,"article-en-laravel_vs_symfony":1867},{"id":4,"title":5,"body":6,"date":162,"description":163,"extension":164,"image":165,"meta":166,"navigation":167,"path":168,"seo":169,"stem":170,"tags":171,"type":175,"updatedAt":176,"__hash__":177},"articlesEn\u002Farticles\u002Fen\u002Flaravel_vs_symfony.md","Laravel vs Symfony: Which one to learn in 2026?",{"type":7,"value":8,"toc":152},"minimark",[9,14,18,21,26,86,90,122,126,146,149],[10,11,13],"h2",{"id":12},"symfony-vs-laravel-which-to-learn-in-2026","Symfony vs Laravel: Which to Learn in 2026?",[15,16,17],"p",{},"The debate between Symfony and Laravel remains vibrant in 2026, each offering compelling philosophies and ecosystems for modern PHP development.",[15,19,20],{},"But the both have good proposals in her scope and very important different philosophy.",[22,23,25],"h3",{"id":24},"laravel-rapid-development-and-rich-ecosystem","Laravel – Rapid Development and Rich Ecosystem",[27,28,29,42,74,80],"ul",{},[30,31,32,36,37,41],"li",{},[33,34,35],"strong",{},"Speed to market",": Laravel excels at delivering MVPs and prototypes quickly. Its expressive syntax and powerful CLI (",[38,39,40],"code",{},"artisan",") enable developers to scaffold applications in minutes.",[30,43,44,47,48],{},[33,45,46],{},"Comprehensive packages",":\n",[27,49,50,56,62,68],{},[30,51,52,55],{},[33,53,54],{},"Laravel Cashier"," – seamless Stripe integration for subscription billing.",[30,57,58,61],{},[33,59,60],{},"Laravel Sail"," – Docker‑Compose environment with Redis, MySQL, and more, ready out‑of‑the‑box.",[30,63,64,67],{},[33,65,66],{},"Laravel Breeze \u002F Jetstream \u002F Inertia"," – starter kits for Blade, Vue, or React, allowing full‑stack development without leaving the framework.",[30,69,70,73],{},[33,71,72],{},"Laravel Octane"," – boosts performance by leveraging RoadRunner or FrankenPHP, reducing cold‑start latency and handling high‑traffic workloads.",[30,75,76,79],{},[33,77,78],{},"Eloquent ORM"," – intuitive, chainable query builder that simplifies complex relationships, with built‑in features like soft deletes and timestamps.",[30,81,82,85],{},[33,83,84],{},"Community and ecosystem"," – a vast marketplace of packages, tutorials, and conferences makes it easy to find solutions for almost any requirement.",[22,87,89],{"id":88},"symfony-enterprisegrade-architecture-and-flexibility","Symfony – Enterprise‑Grade Architecture and Flexibility",[27,91,92,98,104,110,116],{},[30,93,94,97],{},[33,95,96],{},"Mature foundation",": First released in 2002, Symfony powers many large‑scale applications across Europe, prized for its scalability, resilience, and security.",[30,99,100,103],{},[33,101,102],{},"Modular components",": Use only the bundles you need. Symfony’s component‑based architecture lets you build minimalistic applications or full‑featured systems.",[30,105,106,109],{},[33,107,108],{},"Robust configuration",": Supports annotations, YAML, and PHP configuration, giving developers fine‑grained control over routing, services, and dependency injection.",[30,111,112,115],{},[33,113,114],{},"Doctrine ORM"," – a powerful, feature‑rich ORM that rivals Eloquent, offering advanced mapping, caching, and migrations.",[30,117,118,121],{},[33,119,120],{},"Performance",": Optimized for micro‑service architectures; combined with Messenger, Redis, and event‑driven patterns, Symfony can handle high‑traffic, complex back‑ends.",[22,123,125],{"id":124},"choosing-the-right-tool","Choosing the Right Tool",[27,127,128,134,140],{},[30,129,130,133],{},[33,131,132],{},"Quick prototypes or startups"," – Laravel’s batteries‑included approach lets you launch a polished web app within a week.",[30,135,136,139],{},[33,137,138],{},"Large, complex, or high‑traffic systems"," – Symfony’s flexibility and enterprise‑grade components make it ideal for micro‑services, APIs, and applications demanding strict performance and security guarantees.",[30,141,142,145],{},[33,143,144],{},"Team expertise"," – Consider the existing skill set; Laravel’s learning curve is gentler, while Symfony may require deeper knowledge of design patterns and configuration.",[15,147,148],{},"In 2026, the decision is less about “which framework is superior” and more about aligning the framework’s strengths with your project’s goals, team experience, and long‑term maintenance strategy. Both Laravel and Symfony continue to evolve, and mastering either will equip you with valuable skills for the modern PHP ecosystem.",[15,150,151],{},"You can create simply application and website or heavy applications with both.",{"title":153,"searchDepth":154,"depth":154,"links":155},"",2,[156],{"id":12,"depth":154,"text":13,"children":157},[158,160,161],{"id":24,"depth":159,"text":25},3,{"id":88,"depth":159,"text":89},{"id":124,"depth":159,"text":125},"2026-03-20","A comprehensive comparison of Laravel and Symfony in 2026, helping you choose the right PHP framework for your next project.","md","\u002Farticles\u002Flaravel_vs_symfony\u002Fheader.jpeg",{},true,"\u002Farticles\u002Fen\u002Flaravel_vs_symfony",{"title":5,"description":163},"articles\u002Fen\u002Flaravel_vs_symfony",[172,173,174,175],"laravel","symfony","php","backend",null,"NcJEpmaiQSSrSVCJVPvZU_7IzZu9Z0gMNozbBFCVP4o",[179,1764],{"id":180,"title":181,"body":182,"date":1753,"description":1754,"extension":164,"image":1755,"meta":1756,"navigation":167,"path":1757,"seo":1758,"stem":1759,"tags":1760,"type":175,"updatedAt":176,"__hash__":1763},"articlesEn\u002Farticles\u002Fen\u002FOllama.md","How to have a performant local AI without depending on an external provider?",{"type":7,"value":183,"toc":1736},[184,189,192,196,199,202,205,209,213,216,248,251,255,258,286,290,293,296,303,318,322,325,355,358,365,369,372,375,379,393,396,402,406,409,462,465,476,479,485,489,500,642,645,795,802,806,809,816,920,923,927,1119,1122,1707,1710,1713,1716,1719,1723,1726,1729,1732],[185,186,188],"h1",{"id":187},"the-main-problem","The Main Problem",[15,190,191],{},"The main question we face is: how can we integrate a powerful AI into our business or projects without relying on an external provider, so that we can keep our data private?",[10,193,195],{"id":194},"the-solution-ollama","The Solution: Ollama",[15,197,198],{},"I believe Ollama is the best of both worlds. On one hand, Ollama is self-hostable, allowing you to import many open-source models from various providers (Meta, Microsoft, Mistral AI, etc.). On the other hand, because Ollama uses model quantization, you can achieve excellent performance even on a small server.",[15,200,201],{},"Ollama is available on all platforms (Linux, Mac, Windows) and is incredibly simple to download—just one command is enough. Moreover, Ollama is not just a local LLM runner; it opens the door to more advanced use cases (RAG, documentation, automation, etc.), and integration is straightforward through a single API endpoint.",[15,203,204],{},"Ollama offers numerous integrations with tools like notebooks, web searches, IDEs, and more. For developers and other professionals, this is a real game changer; the possibilities are truly impressive.",[10,206,208],{"id":207},"getting-started","Getting Started",[22,210,212],{"id":211},"step-1-downloading","Step 1: Downloading",[15,214,215],{},"First, we need to download Ollama to our computer or server. To do this, simply run the following command in your terminal:",[217,218,222],"pre",{"className":219,"code":220,"language":221,"meta":153,"style":153},"language-bash shiki shiki-themes material-theme-lighter github-light monokai","curl -fsSL https:\u002F\u002Follama.com\u002Finstall.sh | sh\n","bash",[38,223,224],{"__ignoreMap":153},[225,226,229,233,237,241,245],"span",{"class":227,"line":228},"line",1,[225,230,232],{"class":231},"ssU3Q","curl",[225,234,236],{"class":235},"sZ_HY"," -fsSL",[225,238,240],{"class":239},"sqNgn"," https:\u002F\u002Follama.com\u002Finstall.sh",[225,242,244],{"class":243},"sBHfy"," |",[225,246,247],{"class":231}," sh\n",[15,249,250],{},"This single command downloads Ollama, installs its associated toolkit, and prepares your AI environment. Note that it does not come with any pre-installed models.",[22,252,254],{"id":253},"step-2-verification","Step 2: Verification",[15,256,257],{},"You can type the following in your terminal to check if Ollama has been installed successfully:",[217,259,261],{"className":219,"code":260,"language":221,"meta":153,"style":153},"ollama serve \n# or just \nollama \n",[38,262,263,275,281],{"__ignoreMap":153},[225,264,265,268,271],{"class":227,"line":228},[225,266,267],{"class":231},"ollama",[225,269,270],{"class":239}," serve",[225,272,274],{"class":273},"s_bef"," \n",[225,276,277],{"class":227,"line":154},[225,278,280],{"class":279},"skxtS","# or just \n",[225,282,283],{"class":227,"line":159},[225,284,285],{"class":231},"ollama\n",[22,287,289],{"id":288},"step-3-downloading-a-model","Step 3: Downloading a Model",[15,291,292],{},"We need to download a model to chat with!",[15,294,295],{},"Our first model will be Phi-3 from Microsoft. This model is a great compromise between performance and size; you can run it perfectly on a laptop with 8GB of RAM. It's ideal for local testing or small-scale production for internal tools.",[15,297,298,299,302],{},"We'll use the ",[38,300,301],{},"phi3:3.8b"," version. Its size is very reasonable (2.2GB), and it features a 128K context window.",[217,304,306],{"className":219,"code":305,"language":221,"meta":153,"style":153},"ollama run phi3:3.8b\n",[38,307,308],{"__ignoreMap":153},[225,309,310,312,315],{"class":227,"line":228},[225,311,267],{"class":231},[225,313,314],{"class":239}," run",[225,316,317],{"class":239}," phi3:3.8b\n",[10,319,321],{"id":320},"step-4-checking-models","Step 4: Checking Models",[15,323,324],{},"Now we can check if our model has been downloaded successfully and is ready to use.",[217,326,328],{"className":219,"code":327,"language":221,"meta":153,"style":153},"ollama list # checks downloaded models\n# or\nollama ps # checks currently running models\n",[38,329,330,340,345],{"__ignoreMap":153},[225,331,332,334,337],{"class":227,"line":228},[225,333,267],{"class":231},[225,335,336],{"class":239}," list",[225,338,339],{"class":279}," # checks downloaded models\n",[225,341,342],{"class":227,"line":154},[225,343,344],{"class":279},"# or\n",[225,346,347,349,352],{"class":227,"line":159},[225,348,267],{"class":231},[225,350,351],{"class":239}," ps",[225,353,354],{"class":279}," # checks currently running models\n",[15,356,357],{},"In your terminal, you should see something like this:",[15,359,360],{},[361,362],"img",{"alt":363,"src":364},"ollama terminal","\u002Farticles\u002Follama\u002Fterminal.png",[10,366,368],{"id":367},"usage","Usage",[15,370,371],{},"Now that our model is ready, we can start interacting with it.",[15,373,374],{},"There are many ways to chat with your model: via the terminal, a web interface, the API, or integrations with various tools.",[22,376,378],{"id":377},"via-the-terminal","Via the Terminal",[217,380,382],{"className":219,"code":381,"language":221,"meta":153,"style":153},"ollama run phi3\n",[38,383,384],{"__ignoreMap":153},[225,385,386,388,390],{"class":227,"line":228},[225,387,267],{"class":231},[225,389,314],{"class":239},[225,391,392],{"class":239}," phi3\n",[15,394,395],{},"Now you have an interactive prompt to chat with your model. You can ask it anything, and it will answer you.",[15,397,398],{},[361,399],{"alt":400,"src":401},"ollama chat phi3","\u002Farticles\u002Follama\u002Fchat-phi3.png",[22,403,405],{"id":404},"via-curl","Via cURL",[15,407,408],{},"You can use cURL to send HTTP requests to your model. For example:",[217,410,412],{"className":219,"code":411,"language":221,"meta":153,"style":153},"curl -X POST http:\u002F\u002Flocalhost:11434\u002Fapi\u002Fgenerate -d '{\n  \"model\": \"phi3:3.8b\",\n  \"prompt\": \"Hello, how are you?\",\n  \"stream\": false\n}'\n",[38,413,414,437,442,447,453],{"__ignoreMap":153},[225,415,416,418,421,424,427,430,434],{"class":227,"line":228},[225,417,232],{"class":231},[225,419,420],{"class":235}," -X",[225,422,423],{"class":239}," POST",[225,425,426],{"class":239}," http:\u002F\u002Flocalhost:11434\u002Fapi\u002Fgenerate",[225,428,429],{"class":235}," -d",[225,431,433],{"class":432},"ssona"," '",[225,435,436],{"class":239},"{\n",[225,438,439],{"class":227,"line":154},[225,440,441],{"class":239},"  \"model\": \"phi3:3.8b\",\n",[225,443,444],{"class":227,"line":159},[225,445,446],{"class":239},"  \"prompt\": \"Hello, how are you?\",\n",[225,448,450],{"class":227,"line":449},4,[225,451,452],{"class":239},"  \"stream\": false\n",[225,454,456,459],{"class":227,"line":455},5,[225,457,458],{"class":239},"}",[225,460,461],{"class":432},"'\n",[15,463,464],{},"This method is very useful for integrating it into bash scripts for debugging tools, or for building your own custom chat interface.",[15,466,467,468,471,472,475],{},"The ",[38,469,470],{},"stream"," parameter is particularly important; setting it to ",[38,473,474],{},"true"," gives you real-time streaming responses, much like ChatGPT.",[15,477,478],{},"We can imagine many use cases for this method, such as creating scripts to generate code, documentation, or automated tests.",[15,480,481],{},[361,482],{"alt":483,"src":484},"ollama chat phi3 bash","\u002Farticles\u002Follama\u002Fchat-phi3-bash.png",[22,486,488],{"id":487},"via-python","Via Python",[15,490,491,492,499],{},"In Python, there is an official library to interact with Ollama, which is very simple to use. You can find it on ",[493,494,498],"a",{"href":495,"rel":496},"https:\u002F\u002Fgithub.com\u002Follama\u002Follama-python",[497],"nofollow","GitHub",".",[217,501,505],{"className":502,"code":503,"language":504,"meta":153,"style":153},"language-python shiki shiki-themes material-theme-lighter github-light monokai","from ollama import chat\n\nresponse = chat(\n    model='phi3',\n    messages=[{'role': 'user', 'content': 'Hello!'}],\n)\nprint(response.message.content)\n","python",[38,506,507,522,527,543,562,611,617],{"__ignoreMap":153},[225,508,509,513,516,519],{"class":227,"line":228},[225,510,512],{"class":511},"sLY2T","from",[225,514,515],{"class":273}," ollama ",[225,517,518],{"class":511},"import",[225,520,521],{"class":273}," chat\n",[225,523,524],{"class":227,"line":154},[225,525,526],{"emptyLinePlaceholder":167},"\n",[225,528,529,532,535,539],{"class":227,"line":159},[225,530,531],{"class":273},"response ",[225,533,534],{"class":243},"=",[225,536,538],{"class":537},"sSgJ6"," chat",[225,540,542],{"class":541},"sWZ6u","(\n",[225,544,545,549,551,554,557,559],{"class":227,"line":449},[225,546,548],{"class":547},"s8oAg","    model",[225,550,534],{"class":243},[225,552,553],{"class":432},"'",[225,555,556],{"class":239},"phi3",[225,558,553],{"class":432},[225,560,561],{"class":541},",\n",[225,563,564,567,569,572,574,577,579,582,584,587,589,592,594,597,599,601,603,606,608],{"class":227,"line":455},[225,565,566],{"class":547},"    messages",[225,568,534],{"class":243},[225,570,571],{"class":541},"[{",[225,573,553],{"class":432},[225,575,576],{"class":239},"role",[225,578,553],{"class":432},[225,580,581],{"class":541},":",[225,583,433],{"class":432},[225,585,586],{"class":239},"user",[225,588,553],{"class":432},[225,590,591],{"class":541},",",[225,593,433],{"class":432},[225,595,596],{"class":239},"content",[225,598,553],{"class":432},[225,600,581],{"class":541},[225,602,433],{"class":432},[225,604,605],{"class":239},"Hello!",[225,607,553],{"class":432},[225,609,610],{"class":541},"}],\n",[225,612,614],{"class":227,"line":613},6,[225,615,616],{"class":541},")\n",[225,618,620,624,627,630,632,636,638,640],{"class":227,"line":619},7,[225,621,623],{"class":622},"sOhXc","print",[225,625,626],{"class":541},"(",[225,628,629],{"class":537},"response",[225,631,499],{"class":541},[225,633,635],{"class":634},"saQHy","message",[225,637,499],{"class":541},[225,639,596],{"class":634},[225,641,616],{"class":541},[15,643,644],{},"Alternatively, we can make a standard HTTP request to the URL, similar to what we did with cURL.",[217,646,648],{"className":502,"code":647,"language":504,"meta":153,"style":153},"import requests\n\nollama_url = \"http:\u002F\u002Flocalhost:11434\u002Fapi\u002Fgenerate\"\n\nres = requests.post(ollama_url, json={\n    \"model\": \"phi3\",\n    \"prompt\": \"Hello, how are you?\",\n    \"stream\": False\n})\n\nprint(res.json())\n",[38,649,650,657,661,677,681,710,731,751,766,772,777],{"__ignoreMap":153},[225,651,652,654],{"class":227,"line":228},[225,653,518],{"class":511},[225,655,656],{"class":273}," requests\n",[225,658,659],{"class":227,"line":154},[225,660,526],{"emptyLinePlaceholder":167},[225,662,663,666,668,671,674],{"class":227,"line":159},[225,664,665],{"class":273},"ollama_url ",[225,667,534],{"class":243},[225,669,670],{"class":432}," \"",[225,672,673],{"class":239},"http:\u002F\u002Flocalhost:11434\u002Fapi\u002Fgenerate",[225,675,676],{"class":432},"\"\n",[225,678,679],{"class":227,"line":449},[225,680,526],{"emptyLinePlaceholder":167},[225,682,683,686,688,691,693,696,698,701,703,706,708],{"class":227,"line":455},[225,684,685],{"class":273},"res ",[225,687,534],{"class":243},[225,689,690],{"class":273}," requests",[225,692,499],{"class":541},[225,694,695],{"class":537},"post",[225,697,626],{"class":541},[225,699,700],{"class":537},"ollama_url",[225,702,591],{"class":541},[225,704,705],{"class":547}," json",[225,707,534],{"class":243},[225,709,436],{"class":541},[225,711,712,715,718,721,723,725,727,729],{"class":227,"line":613},[225,713,714],{"class":432},"    \"",[225,716,717],{"class":239},"model",[225,719,720],{"class":432},"\"",[225,722,581],{"class":541},[225,724,670],{"class":432},[225,726,556],{"class":239},[225,728,720],{"class":432},[225,730,561],{"class":541},[225,732,733,735,738,740,742,744,747,749],{"class":227,"line":619},[225,734,714],{"class":432},[225,736,737],{"class":239},"prompt",[225,739,720],{"class":432},[225,741,581],{"class":541},[225,743,670],{"class":432},[225,745,746],{"class":239},"Hello, how are you?",[225,748,720],{"class":432},[225,750,561],{"class":541},[225,752,754,756,758,760,762],{"class":227,"line":753},8,[225,755,714],{"class":432},[225,757,470],{"class":239},[225,759,720],{"class":432},[225,761,581],{"class":541},[225,763,765],{"class":764},"sIz4-"," False\n",[225,767,769],{"class":227,"line":768},9,[225,770,771],{"class":541},"})\n",[225,773,775],{"class":227,"line":774},10,[225,776,526],{"emptyLinePlaceholder":167},[225,778,780,782,784,787,789,792],{"class":227,"line":779},11,[225,781,623],{"class":622},[225,783,626],{"class":541},[225,785,786],{"class":537},"res",[225,788,499],{"class":541},[225,790,791],{"class":537},"json",[225,793,794],{"class":541},"())\n",[15,796,797,798,801],{},"If you are running Ollama locally, you can easily use the official Python library. However, if your Ollama instance is running in a remote container, you might need to supply the host URL to the library or simply use the ",[38,799,800],{},"requests"," method.",[10,803,805],{"id":804},"using-ollama-with-docker","Using Ollama with Docker",[15,807,808],{},"In my opinion, using Docker with Ollama is one of the best solutions for production environments. It allows you to achieve great performance even on a smaller server while remaining easy to deploy.",[15,810,811,812,815],{},"Here is an example of a ",[38,813,814],{},"docker-compose.yml"," file for Ollama:",[217,817,821],{"className":818,"code":819,"language":820,"meta":153,"style":153},"language-yaml shiki shiki-themes material-theme-lighter github-light monokai","services:\n  ollama:\n    image: ollama\u002Follama\n    container_name: ollama\n    ports:\n      - \"11434:11434\"\n    volumes:\n      - ollama_data:\u002Froot\u002F.ollama\n    restart: unless-stopped\n\nvolumes:\n  ollama_data:\n","yaml",[38,822,823,831,838,848,858,865,877,884,891,901,905,912],{"__ignoreMap":153},[225,824,825,829],{"class":227,"line":228},[225,826,828],{"class":827},"s5svD","services",[225,830,47],{"class":541},[225,832,833,836],{"class":227,"line":154},[225,834,835],{"class":827},"  ollama",[225,837,47],{"class":541},[225,839,840,843,845],{"class":227,"line":159},[225,841,842],{"class":827},"    image",[225,844,581],{"class":541},[225,846,847],{"class":239}," ollama\u002Follama\n",[225,849,850,853,855],{"class":227,"line":449},[225,851,852],{"class":827},"    container_name",[225,854,581],{"class":541},[225,856,857],{"class":239}," ollama\n",[225,859,860,863],{"class":227,"line":455},[225,861,862],{"class":827},"    ports",[225,864,47],{"class":541},[225,866,867,870,872,875],{"class":227,"line":613},[225,868,869],{"class":541},"      -",[225,871,670],{"class":432},[225,873,874],{"class":239},"11434:11434",[225,876,676],{"class":432},[225,878,879,882],{"class":227,"line":619},[225,880,881],{"class":827},"    volumes",[225,883,47],{"class":541},[225,885,886,888],{"class":227,"line":753},[225,887,869],{"class":541},[225,889,890],{"class":239}," ollama_data:\u002Froot\u002F.ollama\n",[225,892,893,896,898],{"class":227,"line":768},[225,894,895],{"class":827},"    restart",[225,897,581],{"class":541},[225,899,900],{"class":239}," unless-stopped\n",[225,902,903],{"class":227,"line":774},[225,904,526],{"emptyLinePlaceholder":167},[225,906,907,910],{"class":227,"line":779},[225,908,909],{"class":827},"volumes",[225,911,47],{"class":541},[225,913,915,918],{"class":227,"line":914},12,[225,916,917],{"class":827},"  ollama_data",[225,919,47],{"class":541},[15,921,922],{},"This official image from Ollama is optimized for performance and is available on Docker Hub.",[10,924,926],{"id":925},"example-project-structure-with-ollama","Example Project Structure with Ollama",[217,928,930],{"className":219,"code":929,"language":221,"meta":153,"style":153},".\n├── __pycache__\n│   ├── locustfile.cpython-311.pyc\n│   └── main.cpython-314.pyc\n├── docker-compose.yml\n├── Dockerfile\n├── get_reportings.py\n├── jmeter\n│   ├── __pycache__\n│   ├── plan.jmx\n│   └── results.jtl\n├── locustfile.py\n├── main.py\n├── prometheus\n│   └── prometheus.yml\n├── pytest.ini\n├── README.md\n├── reports\n├── requirements.txt\n├── sonar-project.properties\n└── tests\n    ├── __pycache__\n    └── test_api.py\n",[38,931,932,937,945,956,966,973,980,987,994,1002,1011,1020,1027,1035,1043,1053,1061,1069,1077,1085,1093,1102,1110],{"__ignoreMap":153},[225,933,934],{"class":227,"line":228},[225,935,936],{"class":622},".\n",[225,938,939,942],{"class":227,"line":154},[225,940,941],{"class":231},"├──",[225,943,944],{"class":239}," __pycache__\n",[225,946,947,950,953],{"class":227,"line":159},[225,948,949],{"class":231},"│  ",[225,951,952],{"class":239}," ├──",[225,954,955],{"class":239}," locustfile.cpython-311.pyc\n",[225,957,958,960,963],{"class":227,"line":449},[225,959,949],{"class":231},[225,961,962],{"class":239}," └──",[225,964,965],{"class":239}," main.cpython-314.pyc\n",[225,967,968,970],{"class":227,"line":455},[225,969,941],{"class":231},[225,971,972],{"class":239}," docker-compose.yml\n",[225,974,975,977],{"class":227,"line":613},[225,976,941],{"class":231},[225,978,979],{"class":239}," Dockerfile\n",[225,981,982,984],{"class":227,"line":619},[225,983,941],{"class":231},[225,985,986],{"class":239}," get_reportings.py\n",[225,988,989,991],{"class":227,"line":753},[225,990,941],{"class":231},[225,992,993],{"class":239}," jmeter\n",[225,995,996,998,1000],{"class":227,"line":768},[225,997,949],{"class":231},[225,999,952],{"class":239},[225,1001,944],{"class":239},[225,1003,1004,1006,1008],{"class":227,"line":774},[225,1005,949],{"class":231},[225,1007,952],{"class":239},[225,1009,1010],{"class":239}," plan.jmx\n",[225,1012,1013,1015,1017],{"class":227,"line":779},[225,1014,949],{"class":231},[225,1016,962],{"class":239},[225,1018,1019],{"class":239}," results.jtl\n",[225,1021,1022,1024],{"class":227,"line":914},[225,1023,941],{"class":231},[225,1025,1026],{"class":239}," locustfile.py\n",[225,1028,1030,1032],{"class":227,"line":1029},13,[225,1031,941],{"class":231},[225,1033,1034],{"class":239}," main.py\n",[225,1036,1038,1040],{"class":227,"line":1037},14,[225,1039,941],{"class":231},[225,1041,1042],{"class":239}," prometheus\n",[225,1044,1046,1048,1050],{"class":227,"line":1045},15,[225,1047,949],{"class":231},[225,1049,962],{"class":239},[225,1051,1052],{"class":239}," prometheus.yml\n",[225,1054,1056,1058],{"class":227,"line":1055},16,[225,1057,941],{"class":231},[225,1059,1060],{"class":239}," pytest.ini\n",[225,1062,1064,1066],{"class":227,"line":1063},17,[225,1065,941],{"class":231},[225,1067,1068],{"class":239}," README.md\n",[225,1070,1072,1074],{"class":227,"line":1071},18,[225,1073,941],{"class":231},[225,1075,1076],{"class":239}," reports\n",[225,1078,1080,1082],{"class":227,"line":1079},19,[225,1081,941],{"class":231},[225,1083,1084],{"class":239}," requirements.txt\n",[225,1086,1088,1090],{"class":227,"line":1087},20,[225,1089,941],{"class":231},[225,1091,1092],{"class":239}," sonar-project.properties\n",[225,1094,1096,1099],{"class":227,"line":1095},21,[225,1097,1098],{"class":231},"└──",[225,1100,1101],{"class":239}," tests\n",[225,1103,1105,1108],{"class":227,"line":1104},22,[225,1106,1107],{"class":231},"    ├──",[225,1109,944],{"class":239},[225,1111,1113,1116],{"class":227,"line":1112},23,[225,1114,1115],{"class":231},"    └──",[225,1117,1118],{"class":239}," test_api.py\n",[15,1120,1121],{},"The principal file for see the power of ollama is here :",[217,1123,1125],{"className":502,"code":1124,"language":504,"meta":153,"style":153},"import requests\nimport datetime\n\nquery = \"http_requests_created[1m]\"\nollama_url = \"http:\u002F\u002Flocalhost:11434\u002Fapi\u002Fgenerate\"\nurl = f\"http:\u002F\u002Flocalhost:9090\u002Fapi\u002Fv1\u002Fquery?query={query}\"\n\nresponse = requests.get(url).json()\n\ntry:\n    with open(\"jmeter\u002Fresults.jtl\", \"r\", encoding=\"utf-8\") as f:\n        jmeter_content = f.read()\nexcept FileNotFoundError:\n    print(\"JMeter results file not found.\\n\")\n    jmeter_content = \"Aucun résultat JMeter disponible.\"\n\nprompt = f\"\"\"\nAnalyse this metrics from Prometheus:\n \n{response}\n\nAnd give me an report with this configuration:\n\n# title\n\n## Analyse metrics come from prometheus.\n\n### Your ananalyse (max 5-6 lines)\n\n### how we can fix or update it for better result ? (in 2 lines max)\n\n\"\"\"\n\nres = requests.post(ollama_url, json={\n    \"model\": \"phi3\",\n    \"prompt\": prompt,\n    \"stream\": False\n})\n\nnow = datetime.datetime.now().strftime(\"%Y-%m-%d_%H-%M\")\n\nwith open(f\"reports\u002Freport_{now}.md\", \"w\", encoding=\"utf-8\") as f:\n    f.write(\"Prometheus report\\n\\n\")\n    f.write(res.json()['response'])\n    f.write(\"\\n\\n\")\n\n",[38,1126,1127,1133,1140,1144,1158,1170,1195,1199,1225,1229,1236,1286,1302,1313,1333,1347,1351,1363,1368,1372,1381,1385,1390,1394,1400,1405,1411,1416,1422,1427,1433,1438,1443,1448,1473,1492,1508,1521,1526,1531,1575,1580,1634,1659,1688],{"__ignoreMap":153},[225,1128,1129,1131],{"class":227,"line":228},[225,1130,518],{"class":511},[225,1132,656],{"class":273},[225,1134,1135,1137],{"class":227,"line":154},[225,1136,518],{"class":511},[225,1138,1139],{"class":273}," datetime\n",[225,1141,1142],{"class":227,"line":159},[225,1143,526],{"emptyLinePlaceholder":167},[225,1145,1146,1149,1151,1153,1156],{"class":227,"line":449},[225,1147,1148],{"class":273},"query ",[225,1150,534],{"class":243},[225,1152,670],{"class":432},[225,1154,1155],{"class":239},"http_requests_created[1m]",[225,1157,676],{"class":432},[225,1159,1160,1162,1164,1166,1168],{"class":227,"line":455},[225,1161,665],{"class":273},[225,1163,534],{"class":243},[225,1165,670],{"class":432},[225,1167,673],{"class":239},[225,1169,676],{"class":432},[225,1171,1172,1175,1177,1181,1184,1188,1191,1193],{"class":227,"line":613},[225,1173,1174],{"class":273},"url ",[225,1176,534],{"class":243},[225,1178,1180],{"class":1179},"sWNEL"," f",[225,1182,1183],{"class":239},"\"http:\u002F\u002Flocalhost:9090\u002Fapi\u002Fv1\u002Fquery?query=",[225,1185,1187],{"class":1186},"sYBsF","{",[225,1189,1190],{"class":273},"query",[225,1192,458],{"class":1186},[225,1194,676],{"class":239},[225,1196,1197],{"class":227,"line":619},[225,1198,526],{"emptyLinePlaceholder":167},[225,1200,1201,1203,1205,1207,1209,1212,1214,1217,1220,1222],{"class":227,"line":753},[225,1202,531],{"class":273},[225,1204,534],{"class":243},[225,1206,690],{"class":273},[225,1208,499],{"class":541},[225,1210,1211],{"class":537},"get",[225,1213,626],{"class":541},[225,1215,1216],{"class":537},"url",[225,1218,1219],{"class":541},").",[225,1221,791],{"class":537},[225,1223,1224],{"class":541},"()\n",[225,1226,1227],{"class":227,"line":768},[225,1228,526],{"emptyLinePlaceholder":167},[225,1230,1231,1234],{"class":227,"line":774},[225,1232,1233],{"class":511},"try",[225,1235,47],{"class":541},[225,1237,1238,1241,1244,1246,1248,1251,1253,1255,1257,1260,1262,1264,1267,1269,1271,1274,1276,1279,1282,1284],{"class":227,"line":779},[225,1239,1240],{"class":511},"    with",[225,1242,1243],{"class":622}," open",[225,1245,626],{"class":541},[225,1247,720],{"class":432},[225,1249,1250],{"class":239},"jmeter\u002Fresults.jtl",[225,1252,720],{"class":432},[225,1254,591],{"class":541},[225,1256,670],{"class":432},[225,1258,1259],{"class":239},"r",[225,1261,720],{"class":432},[225,1263,591],{"class":541},[225,1265,1266],{"class":547}," encoding",[225,1268,534],{"class":243},[225,1270,720],{"class":432},[225,1272,1273],{"class":239},"utf-8",[225,1275,720],{"class":432},[225,1277,1278],{"class":541},")",[225,1280,1281],{"class":511}," as",[225,1283,1180],{"class":273},[225,1285,47],{"class":541},[225,1287,1288,1291,1293,1295,1297,1300],{"class":227,"line":914},[225,1289,1290],{"class":273},"        jmeter_content ",[225,1292,534],{"class":243},[225,1294,1180],{"class":273},[225,1296,499],{"class":541},[225,1298,1299],{"class":537},"read",[225,1301,1224],{"class":541},[225,1303,1304,1307,1311],{"class":227,"line":1029},[225,1305,1306],{"class":511},"except",[225,1308,1310],{"class":1309},"sYDhL"," FileNotFoundError",[225,1312,47],{"class":541},[225,1314,1315,1318,1320,1322,1325,1329,1331],{"class":227,"line":1037},[225,1316,1317],{"class":622},"    print",[225,1319,626],{"class":541},[225,1321,720],{"class":432},[225,1323,1324],{"class":239},"JMeter results file not found.",[225,1326,1328],{"class":1327},"sE9CP","\\n",[225,1330,720],{"class":432},[225,1332,616],{"class":541},[225,1334,1335,1338,1340,1342,1345],{"class":227,"line":1045},[225,1336,1337],{"class":273},"    jmeter_content ",[225,1339,534],{"class":243},[225,1341,670],{"class":432},[225,1343,1344],{"class":239},"Aucun résultat JMeter disponible.",[225,1346,676],{"class":432},[225,1348,1349],{"class":227,"line":1055},[225,1350,526],{"emptyLinePlaceholder":167},[225,1352,1353,1356,1358,1360],{"class":227,"line":1063},[225,1354,1355],{"class":273},"prompt ",[225,1357,534],{"class":243},[225,1359,1180],{"class":1179},[225,1361,1362],{"class":239},"\"\"\"\n",[225,1364,1365],{"class":227,"line":1071},[225,1366,1367],{"class":239},"Analyse this metrics from Prometheus:\n",[225,1369,1370],{"class":227,"line":1079},[225,1371,274],{"class":239},[225,1373,1374,1376,1378],{"class":227,"line":1087},[225,1375,1187],{"class":1186},[225,1377,629],{"class":273},[225,1379,1380],{"class":1186},"}\n",[225,1382,1383],{"class":227,"line":1095},[225,1384,526],{"emptyLinePlaceholder":167},[225,1386,1387],{"class":227,"line":1104},[225,1388,1389],{"class":239},"And give me an report with this configuration:\n",[225,1391,1392],{"class":227,"line":1112},[225,1393,526],{"emptyLinePlaceholder":167},[225,1395,1397],{"class":227,"line":1396},24,[225,1398,1399],{"class":239},"# title\n",[225,1401,1403],{"class":227,"line":1402},25,[225,1404,526],{"emptyLinePlaceholder":167},[225,1406,1408],{"class":227,"line":1407},26,[225,1409,1410],{"class":239},"## Analyse metrics come from prometheus.\n",[225,1412,1414],{"class":227,"line":1413},27,[225,1415,526],{"emptyLinePlaceholder":167},[225,1417,1419],{"class":227,"line":1418},28,[225,1420,1421],{"class":239},"### Your ananalyse (max 5-6 lines)\n",[225,1423,1425],{"class":227,"line":1424},29,[225,1426,526],{"emptyLinePlaceholder":167},[225,1428,1430],{"class":227,"line":1429},30,[225,1431,1432],{"class":239},"### how we can fix or update it for better result ? (in 2 lines max)\n",[225,1434,1436],{"class":227,"line":1435},31,[225,1437,526],{"emptyLinePlaceholder":167},[225,1439,1441],{"class":227,"line":1440},32,[225,1442,1362],{"class":239},[225,1444,1446],{"class":227,"line":1445},33,[225,1447,526],{"emptyLinePlaceholder":167},[225,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471],{"class":227,"line":1450},34,[225,1452,685],{"class":273},[225,1454,534],{"class":243},[225,1456,690],{"class":273},[225,1458,499],{"class":541},[225,1460,695],{"class":537},[225,1462,626],{"class":541},[225,1464,700],{"class":537},[225,1466,591],{"class":541},[225,1468,705],{"class":547},[225,1470,534],{"class":243},[225,1472,436],{"class":541},[225,1474,1476,1478,1480,1482,1484,1486,1488,1490],{"class":227,"line":1475},35,[225,1477,714],{"class":432},[225,1479,717],{"class":239},[225,1481,720],{"class":432},[225,1483,581],{"class":541},[225,1485,670],{"class":432},[225,1487,556],{"class":239},[225,1489,720],{"class":432},[225,1491,561],{"class":541},[225,1493,1495,1497,1499,1501,1503,1506],{"class":227,"line":1494},36,[225,1496,714],{"class":432},[225,1498,737],{"class":239},[225,1500,720],{"class":432},[225,1502,581],{"class":541},[225,1504,1505],{"class":537}," prompt",[225,1507,561],{"class":541},[225,1509,1511,1513,1515,1517,1519],{"class":227,"line":1510},37,[225,1512,714],{"class":432},[225,1514,470],{"class":239},[225,1516,720],{"class":432},[225,1518,581],{"class":541},[225,1520,765],{"class":764},[225,1522,1524],{"class":227,"line":1523},38,[225,1525,771],{"class":541},[225,1527,1529],{"class":227,"line":1528},39,[225,1530,526],{"emptyLinePlaceholder":167},[225,1532,1534,1537,1539,1542,1544,1547,1549,1552,1555,1558,1560,1562,1565,1568,1571,1573],{"class":227,"line":1533},40,[225,1535,1536],{"class":273},"now ",[225,1538,534],{"class":243},[225,1540,1541],{"class":273}," datetime",[225,1543,499],{"class":541},[225,1545,1546],{"class":634},"datetime",[225,1548,499],{"class":541},[225,1550,1551],{"class":537},"now",[225,1553,1554],{"class":541},"().",[225,1556,1557],{"class":537},"strftime",[225,1559,626],{"class":541},[225,1561,720],{"class":432},[225,1563,1564],{"class":239},"%Y-%m-",[225,1566,1567],{"class":1186},"%d",[225,1569,1570],{"class":239},"_%H-%M",[225,1572,720],{"class":432},[225,1574,616],{"class":541},[225,1576,1578],{"class":227,"line":1577},41,[225,1579,526],{"emptyLinePlaceholder":167},[225,1581,1583,1586,1588,1590,1593,1596,1598,1600,1602,1605,1607,1609,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632],{"class":227,"line":1582},42,[225,1584,1585],{"class":511},"with",[225,1587,1243],{"class":622},[225,1589,626],{"class":541},[225,1591,1592],{"class":1179},"f",[225,1594,1595],{"class":239},"\"reports\u002Freport_",[225,1597,1187],{"class":1186},[225,1599,1551],{"class":537},[225,1601,458],{"class":1186},[225,1603,1604],{"class":239},".md\"",[225,1606,591],{"class":541},[225,1608,670],{"class":432},[225,1610,1611],{"class":239},"w",[225,1613,720],{"class":432},[225,1615,591],{"class":541},[225,1617,1266],{"class":547},[225,1619,534],{"class":243},[225,1621,720],{"class":432},[225,1623,1273],{"class":239},[225,1625,720],{"class":432},[225,1627,1278],{"class":541},[225,1629,1281],{"class":511},[225,1631,1180],{"class":273},[225,1633,47],{"class":541},[225,1635,1637,1640,1642,1645,1647,1649,1652,1655,1657],{"class":227,"line":1636},43,[225,1638,1639],{"class":273},"    f",[225,1641,499],{"class":541},[225,1643,1644],{"class":537},"write",[225,1646,626],{"class":541},[225,1648,720],{"class":432},[225,1650,1651],{"class":239},"Prometheus report",[225,1653,1654],{"class":1327},"\\n\\n",[225,1656,720],{"class":432},[225,1658,616],{"class":541},[225,1660,1662,1664,1666,1668,1670,1672,1674,1676,1679,1681,1683,1685],{"class":227,"line":1661},44,[225,1663,1639],{"class":273},[225,1665,499],{"class":541},[225,1667,1644],{"class":537},[225,1669,626],{"class":541},[225,1671,786],{"class":537},[225,1673,499],{"class":541},[225,1675,791],{"class":537},[225,1677,1678],{"class":541},"()[",[225,1680,553],{"class":432},[225,1682,629],{"class":239},[225,1684,553],{"class":432},[225,1686,1687],{"class":541},"])\n",[225,1689,1691,1693,1695,1697,1699,1701,1703,1705],{"class":227,"line":1690},45,[225,1692,1639],{"class":273},[225,1694,499],{"class":541},[225,1696,1644],{"class":537},[225,1698,626],{"class":541},[225,1700,720],{"class":432},[225,1702,1654],{"class":1327},[225,1704,720],{"class":432},[225,1706,616],{"class":541},[15,1708,1709],{},"We use ollama URL local because project is using Docker and run in container and script who is using ollama is in my computer not in docker so we need to use \"localhost\" and not name of container.",[15,1711,1712],{},"This script get data from Jmetter and Prometheus and send a simple prompt to Ollama (model using is PHI3:3.8b) and generate a report in markdown format.",[15,1714,1715],{},"The file is saved in reports\u002F folder with name like this : report_YYYY-MM-DD_HH-MM.md",[15,1717,1718],{},"For sure this is very simple exemple but it's a good exemple of what you can do with Ollama.",[10,1720,1722],{"id":1721},"conclusion","Conclusion",[15,1724,1725],{},"Ollama is for me an exeptionel tool for dev and other pro who want to use LLM locally without internet connection and with a very simple interface.",[15,1727,1728],{},"Is totaly free and open source, you can used it for serious project or just for fun, the possibilities are very impressive.",[15,1730,1731],{},"I dont explore any possibility with it for now, but i will do it in the future, for exemple we can use it with open claw or claude code or many provider compatible with it.",[1733,1734,1735],"style",{},"html pre.shiki code .ssU3Q, html code.shiki .ssU3Q{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#A6E22E}html pre.shiki code .sZ_HY, html code.shiki .sZ_HY{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#AE81FF}html pre.shiki code .sqNgn, html code.shiki .sqNgn{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#E6DB74}html pre.shiki code .sBHfy, html code.shiki .sBHfy{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F92672}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s_bef, html code.shiki .s_bef{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#F8F8F2}html pre.shiki code .skxtS, html code.shiki .skxtS{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#88846F;--shiki-dark-font-style:inherit}html pre.shiki code .ssona, html code.shiki .ssona{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#E6DB74}html pre.shiki code .sLY2T, html code.shiki .sLY2T{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F92672;--shiki-dark-font-style:inherit}html pre.shiki code .sSgJ6, html code.shiki .sSgJ6{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#F8F8F2}html pre.shiki code .sWZ6u, html code.shiki .sWZ6u{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#F8F8F2}html pre.shiki code .s8oAg, html code.shiki .s8oAg{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FD971F;--shiki-dark-font-style:italic}html pre.shiki code .sOhXc, html code.shiki .sOhXc{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#66D9EF}html pre.shiki code .saQHy, html code.shiki .saQHy{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#F8F8F2}html pre.shiki code .sIz4-, html code.shiki .sIz4-{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#AE81FF}html pre.shiki code .s5svD, html code.shiki .s5svD{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#F92672}html pre.shiki code .sWNEL, html code.shiki .sWNEL{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .sYBsF, html code.shiki .sYBsF{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#AE81FF}html pre.shiki code .sYDhL, html code.shiki .sYDhL{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .sE9CP, html code.shiki .sE9CP{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#AE81FF}",{"title":153,"searchDepth":154,"depth":154,"links":1737},[1738,1739,1744,1745,1750,1751,1752],{"id":194,"depth":154,"text":195},{"id":207,"depth":154,"text":208,"children":1740},[1741,1742,1743],{"id":211,"depth":159,"text":212},{"id":253,"depth":159,"text":254},{"id":288,"depth":159,"text":289},{"id":320,"depth":154,"text":321},{"id":367,"depth":154,"text":368,"children":1746},[1747,1748,1749],{"id":377,"depth":159,"text":378},{"id":404,"depth":159,"text":405},{"id":487,"depth":159,"text":488},{"id":804,"depth":154,"text":805},{"id":925,"depth":154,"text":926},{"id":1721,"depth":154,"text":1722},"2026-03-15","How to have an excellent AI for your business or projects without using an external provider, keeping your data secure?","\u002Farticles\u002Follama\u002Follama.png",{},"\u002Farticles\u002Fen\u002Follama",{"title":181,"description":1754},"articles\u002Fen\u002FOllama",[1761,267,1762,504,221],"ai","docker","kOjLeHOiiR9Ad1uHpAnh32eDlKuKgF6eZwRMpurTodo",{"id":4,"title":5,"body":1765,"date":162,"description":163,"extension":164,"image":165,"meta":1864,"navigation":167,"path":168,"seo":1865,"stem":170,"tags":1866,"type":175,"updatedAt":176,"__hash__":177},{"type":7,"value":1766,"toc":1857},[1767,1769,1771,1773,1775,1813,1815,1837,1839,1853,1855],[10,1768,13],{"id":12},[15,1770,17],{},[15,1772,20],{},[22,1774,25],{"id":24},[27,1776,1777,1783,1805,1809],{},[30,1778,1779,36,1781,41],{},[33,1780,35],{},[38,1782,40],{},[30,1784,1785,47,1787],{},[33,1786,46],{},[27,1788,1789,1793,1797,1801],{},[30,1790,1791,55],{},[33,1792,54],{},[30,1794,1795,61],{},[33,1796,60],{},[30,1798,1799,67],{},[33,1800,66],{},[30,1802,1803,73],{},[33,1804,72],{},[30,1806,1807,79],{},[33,1808,78],{},[30,1810,1811,85],{},[33,1812,84],{},[22,1814,89],{"id":88},[27,1816,1817,1821,1825,1829,1833],{},[30,1818,1819,97],{},[33,1820,96],{},[30,1822,1823,103],{},[33,1824,102],{},[30,1826,1827,109],{},[33,1828,108],{},[30,1830,1831,115],{},[33,1832,114],{},[30,1834,1835,121],{},[33,1836,120],{},[22,1838,125],{"id":124},[27,1840,1841,1845,1849],{},[30,1842,1843,133],{},[33,1844,132],{},[30,1846,1847,139],{},[33,1848,138],{},[30,1850,1851,145],{},[33,1852,144],{},[15,1854,148],{},[15,1856,151],{},{"title":153,"searchDepth":154,"depth":154,"links":1858},[1859],{"id":12,"depth":154,"text":13,"children":1860},[1861,1862,1863],{"id":24,"depth":159,"text":25},{"id":88,"depth":159,"text":89},{"id":124,"depth":159,"text":125},{},{"title":5,"description":163},[172,173,174,175],{"id":4,"title":5,"body":1868,"date":162,"description":163,"extension":164,"image":165,"meta":1967,"navigation":167,"path":168,"seo":1968,"stem":170,"tags":1969,"type":175,"updatedAt":176,"__hash__":177},{"type":7,"value":1869,"toc":1960},[1870,1872,1874,1876,1878,1916,1918,1940,1942,1956,1958],[10,1871,13],{"id":12},[15,1873,17],{},[15,1875,20],{},[22,1877,25],{"id":24},[27,1879,1880,1886,1908,1912],{},[30,1881,1882,36,1884,41],{},[33,1883,35],{},[38,1885,40],{},[30,1887,1888,47,1890],{},[33,1889,46],{},[27,1891,1892,1896,1900,1904],{},[30,1893,1894,55],{},[33,1895,54],{},[30,1897,1898,61],{},[33,1899,60],{},[30,1901,1902,67],{},[33,1903,66],{},[30,1905,1906,73],{},[33,1907,72],{},[30,1909,1910,79],{},[33,1911,78],{},[30,1913,1914,85],{},[33,1915,84],{},[22,1917,89],{"id":88},[27,1919,1920,1924,1928,1932,1936],{},[30,1921,1922,97],{},[33,1923,96],{},[30,1925,1926,103],{},[33,1927,102],{},[30,1929,1930,109],{},[33,1931,108],{},[30,1933,1934,115],{},[33,1935,114],{},[30,1937,1938,121],{},[33,1939,120],{},[22,1941,125],{"id":124},[27,1943,1944,1948,1952],{},[30,1945,1946,133],{},[33,1947,132],{},[30,1949,1950,139],{},[33,1951,138],{},[30,1953,1954,145],{},[33,1955,144],{},[15,1957,148],{},[15,1959,151],{},{"title":153,"searchDepth":154,"depth":154,"links":1961},[1962],{"id":12,"depth":154,"text":13,"children":1963},[1964,1965,1966],{"id":24,"depth":159,"text":25},{"id":88,"depth":159,"text":89},{"id":124,"depth":159,"text":125},{},{"title":5,"description":163},[172,173,174,175],1775574494706]