<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Llm on Marian Zeis Blog</title>
    <link>https://blog.zeis.de/tags/llm/</link>
    <description>Recent content in Llm on Marian Zeis Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 20 Apr 2026 20:00:00 +0200</lastBuildDate>
    <atom:link href="https://blog.zeis.de/tags/llm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How I Use AI for Development and Why Context Matters</title>
      <link>https://blog.zeis.de/posts/2026-04-20-how-i-use-ai/</link>
      <pubDate>Mon, 20 Apr 2026 20:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-04-20-how-i-use-ai/</guid>
      <description>&lt;p&gt;Series note: This post is part of my &lt;a href=&#34;https://blog.zeis.de/tags/ai-abap-development-series/&#34;&gt;AI ABAP development series&lt;/a&gt;, where I go from AI development in general, to ABAP-specific problems, and then to ARC-1.&lt;/p&gt;&#xA;&lt;p&gt;When it comes to AI, I do not really think about magic.&lt;/p&gt;&#xA;&lt;p&gt;I think more about another colleague helping me out.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes that means architecture. Sometimes implementation. Sometimes testing, review, CI/CD, or deployment.&lt;/p&gt;&#xA;&lt;p&gt;But this only works with trust, and trust needs communication.&lt;/p&gt;&#xA;&lt;p&gt;If I do not know something, I ask. If code looks strange, I ask. If tests fail, I ask.&lt;/p&gt;&#xA;&lt;p&gt;The less I need to ask, the more likely it is because I already gave enough context up front: architecture, documentation, constraints, examples, and what I actually want. Even then I still review the result.&lt;/p&gt;&#xA;&lt;p&gt;That is why using AI well is a skill you build over time.&lt;/p&gt;&#xA;&lt;p&gt;My first larger projects with AI were much less smooth than newer ones. Over time I learned that better context, better tooling, and better guardrails lead to much better results. AI can speed things up a lot, but it does not remove engineering judgement.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-workflow-changed-over-the-last-year&#34;&gt;My workflow changed over the last year&lt;/h2&gt;&#xA;&lt;p&gt;Last year I was mostly just using ChatGPT directly, before tools like Claude Code became more normal. I asked something, copied the generated code into my project, checked if it runs, copied the error back if it failed, and repeated that loop.&lt;/p&gt;&#xA;&lt;p&gt;The error message was context. The result of trying it out was context. That manual loop slowly improved the output.&lt;/p&gt;&#xA;&lt;p&gt;What changed over time was not only the model. More and more the AI can get context itself.&lt;/p&gt;&#xA;&lt;p&gt;Before I had to spoon feed much more manually. Now tools can search, read docs, inspect files, and in some cases get the needed context on their own. For me that is one of the biggest improvements, because the AI does not only answer, it can first understand more.&lt;/p&gt;&#xA;&lt;p&gt;That is also why I liked &lt;a href=&#34;https://www.stavros.io/posts/how-i-write-software-with-llms/&#34;&gt;How I write software with LLMs&lt;/a&gt; by Stavros. Not because I use exactly the same workflow, but because it shows quite well that this is not only about the model. The workflow around the model matters a lot as well.&lt;/p&gt;&#xA;&lt;h2 id=&#34;context-matters-more-than-people-first-think&#34;&gt;Context matters more than people first think&lt;/h2&gt;&#xA;&lt;p&gt;A lot of the time the biggest value is not even that the model writes code for me.&lt;/p&gt;&#xA;&lt;p&gt;Very often it helps with understanding. It can explain a codebase, compare options, write down a plan, summarize documentation, help with tests and refactoring, or point me to the next thing I should check. For a lot of developers that alone is already useful, without going fully agentic.&lt;/p&gt;&#xA;&lt;p&gt;In many projects the important information is not only in the source code. It is in documentation, issues, diagrams, product docs, logs, dumps, table data, screenshots, pipeline output, and things people in the team just know. If the model only sees one file, it often gives you an answer that sounds nice but misses the actual problem.&lt;/p&gt;&#xA;&lt;p&gt;That is why I really liked the post &lt;a href=&#34;https://secondphase.com.au/context-slop-vs-shipping/&#34;&gt;Context is the Difference Between Slop and Shipping&lt;/a&gt;. I think the core point is right.&lt;/p&gt;&#xA;&lt;p&gt;If you do not understand the system first, or if the model does not get the right grounding, then you just get plausible looking nonsense faster. It looks like momentum, but often it is just wrong output with confidence.&lt;/p&gt;&#xA;&lt;p&gt;One of the first places where I really noticed this was UI5, especially with controls like the UI5 Wizard. I had to explain the API again and again, and without that extra context the output was often just wrong. That was one of the first moments where I noticed more clearly that in SAP development good context is not optional.&lt;/p&gt;&#xA;&lt;p&gt;Especially in SAP I noticed pretty quickly that you need some kind of grounding. You want to be able to say: use this documentation, use this guideline, use this code reference, trust this as the source of truth and do not just invent something.&lt;/p&gt;&#xA;&lt;p&gt;It still hallucinates sometimes, that does not fully go away, but it becomes less. Especially weaker models benefit a lot from having the right information at the right time.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-i-care-so-much-about-tooling-around-the-model&#34;&gt;Why I care so much about tooling around the model&lt;/h2&gt;&#xA;&lt;p&gt;That is also one reason why last year I started building my own MCP server for context. It can search GitHub repositories, SAP Help, and related sources, so I can bring better grounding into the workflow.&lt;/p&gt;&#xA;&lt;p&gt;For SAP development especially this helped, because so much is not directly visible in one code file. If the model can pull in SAP documentation, guidelines, and related references, it gets pushed much more into the right direction.&lt;/p&gt;&#xA;&lt;p&gt;I now almost always have that SAP docs setup with me. At the beginning it felt even more important, because the models were weaker and hallucinations were stronger. Today it is a bit better with the stronger frontier models.&lt;/p&gt;&#xA;&lt;p&gt;I also noticed this with BTP and Cloud Foundry work. There the models can often already use the CLI and public documentation quite well. So the models are improving.&lt;/p&gt;&#xA;&lt;p&gt;But the more special something gets, the more hidden it is, or the more SAP specific it is, the more important that extra context becomes again.&lt;/p&gt;&#xA;&lt;p&gt;That is also why I do not find the current AI discussion fully convincing sometimes. People talk a lot about models, but much less about the system around the model. To me, context and tooling matter more in real projects than benchmark discussions alone.&lt;/p&gt;&#xA;&lt;h2 id=&#34;model-quality-still-matters-but-it-is-not-the-whole-story&#34;&gt;Model quality still matters, but it is not the whole story&lt;/h2&gt;&#xA;&lt;p&gt;I already wrote two separate blog posts about ABAP LLM benchmark results, one more around &lt;a href=&#34;https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/&#34;&gt;code generation&lt;/a&gt; and one around &lt;a href=&#34;https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/&#34;&gt;understanding&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;My takeaway there was that strong general models are currently still the more practical choice for me, and that tooling and grounding are often the bigger lever than hoping for one SAP specific model to solve everything by itself.&lt;/p&gt;&#xA;&lt;p&gt;What also helps a lot is that my MCP SAP docs setup is not only pure API documentation. There are also style guides, DSAG guidelines, and other recommendations in there. These are often not hard rules, but they still push you in a certain direction. So even if I do not know the exact recommendation by heart, I can ask the model to look for guidelines and it gets nudged more automatically towards a better direction.&lt;/p&gt;&#xA;&lt;p&gt;And context is not only documentation. If I say change this class, then the context is not just that class. It is also the tables that are used, the other classes that are called, similar implementations, internal guidelines, what this system can even do, and what is already there in working code. That broader context improves quality a lot more than just throwing one file at the model.&lt;/p&gt;&#xA;&lt;h2 id=&#34;i-am-still-skeptical-of-full-agentic-hype&#34;&gt;I am still skeptical of full agentic hype&lt;/h2&gt;&#xA;&lt;p&gt;There is also a very practical spectrum in how much AI help you even want. You can just ask questions about context. You can ask it to find docs and let you read them. You can use it for analysis and planning. Or you can let it implement things more autonomously. That is not one binary choice. It is more a slider, and depending on the project, the team, and the risk, you move that slider differently.&lt;/p&gt;&#xA;&lt;p&gt;At the same time I am still not sure that going more agentic automatically makes you faster. Pure AI assistance already helps me a lot. But once it becomes more agentic, other things get harder again. The coding itself is very fast, but then you spend more time on plans, instructions, guardrails, review, and correction.&lt;/p&gt;&#xA;&lt;p&gt;This also matches quite well with the &lt;a href=&#34;https://arxiv.org/abs/2507.09089&#34;&gt;METR study on experienced open-source developers&lt;/a&gt;. What I found interesting there is not some simple &amp;ldquo;AI bad&amp;rdquo; takeaway, but more the gap between feeling faster and actually being faster.&lt;/p&gt;&#xA;&lt;p&gt;If less time goes into typing code, but more time goes into prompting, reviewing, waiting, and correcting, then it can still feel fast while the total time says something else. That matches quite well with what I notice myself.&lt;/p&gt;&#xA;&lt;p&gt;At the same time I also do not want to overcorrect too much into pure skepticism. The post &lt;a href=&#34;https://lalitm.com/post/building-syntaqlite-ai/&#34;&gt;Eight years of wanting, three months of building with AI&lt;/a&gt; is a good counterexample. AI helped a lot there, but the first more maximalist agentic approach also created a messy codebase, and things only got better again with tighter ownership and stronger review. That feels much closer to reality than either extreme.&lt;/p&gt;&#xA;&lt;p&gt;For me there is still a big difference between strong AI assistance and just letting the agent fully take over. Writing the code is now often the easiest part. I spend more time before coding on research, testing, planning, and architecture. And I spend more time after coding on review, rework, manual testing, and documentation.&lt;/p&gt;&#xA;&lt;p&gt;It is still faster in my opinion, but the time moved.&lt;/p&gt;&#xA;&lt;h2 id=&#34;process-helps-but-process-is-also-overhead&#34;&gt;Process helps, but process is also overhead&lt;/h2&gt;&#xA;&lt;p&gt;This also fits well to &lt;a href=&#34;https://community.sap.com/t5/artificial-intelligence-blogs-posts/how-i-teach-claude-code-to-work-my-way/ba-p/14349299&#34;&gt;How I teach Claude Code to work my way&lt;/a&gt;. What I like there is that the focus is not on one magical prompt, but on process. Explore first, think first, plan first, then execute.&lt;/p&gt;&#xA;&lt;p&gt;I do not use exactly the same process everywhere, but the general idea fits very well to what I learned myself. If you give the AI a process, it usually follows one. If you do not, it drifts more easily. At the same time, process also creates overhead, so it is only worth it when the task is big enough.&lt;/p&gt;&#xA;&lt;p&gt;That is also why I often want the model to first find a reference before it gives me a strong answer. Search for the SAP documentation. Find the guideline. Show me a similar implementation. Do not just make something up because it sounds right.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-gets-harder-in-sap&#34;&gt;Why this gets harder in SAP&lt;/h2&gt;&#xA;&lt;p&gt;Security is also part of that trust question. How much trust do you put in the llm itself, how much in the model provider, and how much in the tools around it? How much security are you willing to give up to move faster? For toy projects people often accept a lot of risk. In enterprise development that looks very different.&lt;/p&gt;&#xA;&lt;p&gt;In SAP this matters even more, because so much important context is outside the code itself. The actual code change can be very small, but understanding why you need that change can require docs, config, logs, dumps, table entries, business process context, authorizations, and knowledge about how the landscape is set up.&lt;/p&gt;&#xA;&lt;p&gt;At the same time SAP is also moving. I was pleasantly surprised when SAP released MCP servers for &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server/bc-p/14206959&#34;&gt;UI5&lt;/a&gt;, &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/boost-your-cap-development-with-ai-introducing-the-mcp-server-for-cap/ba-p/14202849&#34;&gt;CAP&lt;/a&gt;, and &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/sap-fiori-tools-update-first-release-of-the-sap-fiori-mcp-server-for/ba-p/14204694&#34;&gt;Fiori&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In that world it already feels much more natural, because a lot of that development is off stack anyway. You work locally, use git, run pipelines, get peer review, and if something goes wrong you can usually revert it. That is much easier territory for AI assisted development.&lt;/p&gt;&#xA;&lt;p&gt;So the interesting question for me is not if AI can help in SAP development. It already can. The more interesting question is where it helps today, where it becomes risky, and why especially ABAP development is still much harder than frontend or CAP development.&lt;/p&gt;&#xA;&lt;p&gt;In frontend and CAP development, AI can already fit quite naturally into workflows many teams already have. In ABAP, things look very different.&lt;/p&gt;&#xA;&lt;p&gt;The next post is where I want to look more concrete at that gap: what is already possible today, which patterns exist, and why enterprise guardrails matter much more there.&lt;/p&gt;&#xA;&lt;h2 id=&#34;discuss-this-post&#34;&gt;Discuss this post&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://saptodon.org/@Mianbsp/116439309593074502&#34;&gt;Saptodon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/marian.zeis.de/post/3mjxi4yqxtk2k&#34;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/posts/marianzeis_how-i-use-ai-for-development-and-why-context-activity-7452215820195184641-r-uK&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.stavros.io/posts/how-i-write-software-with-llms/&#34;&gt;How I write software with LLMs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://secondphase.com.au/context-slop-vs-shipping/&#34;&gt;Context is the Difference Between Slop and Shipping&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lalitm.com/post/building-syntaqlite-ai/&#34;&gt;Eight years of wanting, three months of building with AI&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/2507.09089&#34;&gt;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/artificial-intelligence-blogs-posts/how-i-teach-claude-code-to-work-my-way/ba-p/14349299&#34;&gt;How I teach Claude Code to work my way&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-02-04-abap-mcp-server/&#34;&gt;Finally: An MCP Server for ABAP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-03-05-sap-ai-mcp-servers-overview/&#34;&gt;SAP MCP Servers: The Missing Overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/&#34;&gt;Benchmarking LLMs for ABAP: Why ABAP-1 Isn&amp;rsquo;t a Code Generator (Yet)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/&#34;&gt;SAP’s ABAP-1 Loses Every ABAP Benchmark, Even “Explaining”&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server/bc-p/14206959&#34;&gt;Give Your AI Agent Some Tools: Introducing the UI5 MCP Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/boost-your-cap-development-with-ai-introducing-the-mcp-server-for-cap/ba-p/14202849&#34;&gt;Boost your CAP Development with AI: Introducing the MCP Server for CAP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/sap-fiori-tools-update-first-release-of-the-sap-fiori-mcp-server-for/ba-p/14204694&#34;&gt;SAP Fiori Tools Update - First Release of the SAP Fiori MCP Server for Agentic AI Workflows&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>SAP’s ABAP-1 Loses Every ABAP Benchmark, Even “Explaining”</title>
      <link>https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/</link>
      <pubDate>Tue, 03 Mar 2026 22:00:00 +0100</pubDate>
      <guid>https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Previous post (code generation benchmark):&lt;/strong&gt; &lt;a href=&#34;https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/&#34;&gt;Benchmarking LLMs for ABAP&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Live benchmark results (old + new):&lt;/strong&gt; &lt;a href=&#34;https://abap-llm-benchmark.marianzeis.de/&#34;&gt;abap-llm-benchmark.marianzeis.de&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In my first evaluation (based on the TH Köln benchmark paper), I extended the original setup with additional models and focused on a very concrete question: how well can LLMs generate ABAP code that actually compiles and passes ABAP Unit tests?&lt;/p&gt;&#xA;&lt;p&gt;I also tested SAP’s model &lt;strong&gt;ABAP-1&lt;/strong&gt;, and it performed very poorly for code generation. To be fair: SAP also states this in the documentation. ABAP-1 is primarily meant &lt;a href=&#34;https://help.sap.com/docs/sap-ai-core/generative-ai/sap-abap-1?locale=en-US&#34;&gt;for explaining ABAP code&lt;/a&gt; not for reliably generating full working implementations.&lt;/p&gt;&#xA;&lt;p&gt;So I built a second test that targets exactly that: understanding and explaining ABAP.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-understanding-test&#34;&gt;The “Understanding” test&lt;/h2&gt;&#xA;&lt;p&gt;In the “Understanding” benchmark, the model gets existing ABAP code plus the corresponding ABAP Unit tests (so this is not a generation task). From that, it must extract concrete facts as structured JSON, for example:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;which classes and methods are relevant&lt;/li&gt;&#xA;&lt;li&gt;expected behavior and validations&lt;/li&gt;&#xA;&lt;li&gt;inputs and outputs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The JSON output is then scored automatically against a reference, so we can measure in a reproducible way how well a model understands ABAP code and describes it correctly. This works without running SAP or ADT.&lt;/p&gt;&#xA;&lt;p&gt;Here is the key result as a chart (cumulative success across feedback rounds):&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;ABAP understanding benchmark: cumulative success rates by model and feedback round&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/images/understanding_success_by_model_by_feedbackround_in_percent.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-this-says-about-abap-1&#34;&gt;What this says about ABAP-1&lt;/h2&gt;&#xA;&lt;p&gt;As expected, ABAP-1 is clearly better in this “Understanding” setup than in code generation. But it still does not keep up with current general-purpose models.&lt;/p&gt;&#xA;&lt;p&gt;Even the current Anthropic Haiku model (optimized for speed and cost) beats ABAP-1 on this benchmark.&lt;/p&gt;&#xA;&lt;p&gt;That makes the practical conclusion pretty simple: &lt;strong&gt;for almost any ABAP use case, ABAP-1 is not a good default choice.&lt;/strong&gt; It is priced closer to premium models, but does not deliver premium results. So the “maybe it is cheaper” argument also does not hold.&lt;/p&gt;&#xA;&lt;h2 id=&#34;new-models&#34;&gt;New models&lt;/h2&gt;&#xA;&lt;p&gt;After the first post, people asked for more models to be added. I’m tracking those requests as GitHub issues here: &lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation/issues?q=sort%3Aupdated-desc%20is%3Aissue&#34;&gt;LLM-Benchmark-ABAP-Code-Generation issues&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I added the following models:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DeepSeek Reasoner&lt;/li&gt;&#xA;&lt;li&gt;Mistral Large 2512&lt;/li&gt;&#xA;&lt;li&gt;GPT-5.3 Codex&lt;/li&gt;&#xA;&lt;li&gt;Claude Haiku 4.5&lt;/li&gt;&#xA;&lt;li&gt;Gemini 3.1 Flash Preview&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;To put the “new models” into context, here is the updated &lt;strong&gt;code generation&lt;/strong&gt; overview (this is the original benchmark: generate ABAP, then iterate with compiler/test feedback up to 5 rounds). The plot already includes the new lineup:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;ABAP code generation benchmark: cumulative successful code generations by model and feedback round&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-03-05-abap-llm-benchmark-understanding/images/success_by_model_by_feedbackround_in_percent.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;GPT-5.3 Codex produced very strong results and even beat Opus 4.5 on some metrics. My guess is: if we compare against Opus 4.6, the gap will likely be small (or they might end up roughly equal).&lt;/p&gt;&#xA;&lt;p&gt;Depending on the metric, Opus 4.5 is still excellent: it has the highest first-try success rate (Round 0) and the best AUC across all feedback rounds.&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, Mistral’s current “best” model performed worse than I expected and does not look like a great choice for ABAP.&lt;/p&gt;&#xA;&lt;p&gt;For price/performance, DeepSeek Reasoner is the clear winner in this lineup.&lt;/p&gt;&#xA;&lt;p&gt;Using the public list prices (at the time of writing), Codex is at around &lt;strong&gt;$1.75 per 1M input tokens&lt;/strong&gt;, while DeepSeek Reasoner is at &lt;strong&gt;$0.28 per 1M input tokens&lt;/strong&gt; (more than 6x cheaper). The bigger difference is output: DeepSeek output is &lt;strong&gt;$0.42 per 1M tokens&lt;/strong&gt;, while Codex output is around &lt;strong&gt;$14.00 per 1M tokens&lt;/strong&gt; (about 33x).&lt;/p&gt;&#xA;&lt;h3 id=&#34;gemini-31-flash-preview&#34;&gt;Gemini 3.1 Flash Preview&lt;/h3&gt;&#xA;&lt;p&gt;Gemini 3.1 Flash Preview also surprised me with strong results. It is cheap and in my runs it was even slightly ahead of GPT-5.3 Codex, while being significantly cheaper.&lt;/p&gt;&#xA;&lt;p&gt;At the time of writing, Gemini Flash was roughly &lt;strong&gt;$0.50 per 1M input tokens&lt;/strong&gt; and &lt;strong&gt;$3.00 per 1M output tokens&lt;/strong&gt;, which is a big difference compared to Codex pricing.&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, I could not test Gemini 3.1 Pro: the rate limit was effectively capped at ~25 requests per minute and I repeatedly hit 503 errors (“system overloaded”). With several thousand requests, that made a full benchmark run impractical. My guess is that Gemini 3.1 Pro would be similar to, or better than, GPT-5.3 Codex, but Flash already delivered very good results.&lt;/p&gt;&#xA;&lt;h3 id=&#34;why-haiku-45-did-so-badly-here&#34;&gt;Why Haiku 4.5 did so badly here&lt;/h3&gt;&#xA;&lt;p&gt;Haiku 4.5 failed systematically because it kept using CDS-style type notation like &lt;code&gt;abap.char(20)&lt;/code&gt; in classic ABAP implementations (syntax errors). Worse, misleading parser error messages made it hard for the model to identify the real root cause, so it did not correct itself even across multiple feedback rounds.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-practical-takeaway&#34;&gt;A practical takeaway&lt;/h2&gt;&#xA;&lt;p&gt;For me, this is now a pretty solid baseline to decide which models are worth considering for ABAP, and which ones are not, depending on whether you care more about API calls (cost) or daily development (quality + speed).&lt;/p&gt;&#xA;&lt;p&gt;One important reminder: these models acted only on what they already “know”. Results can be improved a lot with tooling and better context, for example:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;ABAP MCP Server&lt;/strong&gt; for ABAP best practices and keyword documentation: &lt;a href=&#34;https://github.com/marianfoo/abap-mcp-server&#34;&gt;marianfoo/abap-mcp-server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;abaplint&lt;/strong&gt; for static checks and fast feedback loops: &lt;a href=&#34;https://abaplint.org/&#34;&gt;abaplint.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;With that kind of tooling and feedback loop, you can generate very good ABAP code even if you “only” use a strong general model.&lt;/p&gt;&#xA;&lt;p&gt;And yes, my conclusion from the first post still stands: I would not recommend ABAP-1. If SAP wants better outcomes, I think the bigger lever is not “yet another model”, but better tools and better integration so frontier models (OpenAI, Anthropic, Google) can reliably produce correct ABAP in real-world projects.&lt;/p&gt;&#xA;&lt;p&gt;You can still suggest models I have not tested yet, but benchmarks like this are not cheap. For now I will pause adding more models unless there is a very strong reason to do another run.&lt;/p&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;TH Köln paper: &lt;a href=&#34;https://arxiv.org/html/2601.15188v1&#34;&gt;Benchmarking Large Language Models for ABAP Code Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Previous post (code generation benchmark): &lt;a href=&#34;https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/&#34;&gt;Benchmarking LLMs for ABAP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Live results website: &lt;a href=&#34;https://abap-llm-benchmark.marianzeis.de/&#34;&gt;abap-llm-benchmark.marianzeis.de&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Original benchmark repo (TH Köln): &lt;a href=&#34;https://github.com/timkoehne/LLM-Benchmark-ABAP-Code-Generation&#34;&gt;timkoehne/LLM-Benchmark-ABAP-Code-Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Dataset (prompts + ABAP Unit tests): &lt;a href=&#34;https://github.com/timkoehne/LLM-Benchmark-ABAP-Code-Generation/tree/main/dataset&#34;&gt;dataset folder&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Benchmark repo (my fork with updates): &lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation&#34;&gt;marianfoo/LLM-Benchmark-ABAP-Code-Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Model requests / discussion: &lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation/issues?q=sort%3Aupdated-desc%20is%3Aissue&#34;&gt;GitHub issues&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;SAP ABAP-1 documentation: &lt;a href=&#34;https://help.sap.com/docs/sap-ai-core/generative-ai/sap-abap-1?locale=en-US&#34;&gt;SAP ABAP-1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;ABAP Cloud Developer Trial (Docker image used by the benchmark): &lt;a href=&#34;https://github.com/SAP-docs/abap-platform-trial-image&#34;&gt;SAP-docs/abap-platform-trial-image&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Batch APIs (used for running large benchmarks cheaper): &lt;a href=&#34;https://platform.openai.com/docs/guides/batch&#34;&gt;OpenAI Batch API&lt;/a&gt;, &lt;a href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/batch-processing&#34;&gt;Anthropic batch processing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Pricing references:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OpenAI: &lt;a href=&#34;https://openai.com/api/pricing&#34;&gt;API pricing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek: &lt;a href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;&gt;Pricing (official docs)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Google Gemini: &lt;a href=&#34;https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing&#34;&gt;generative AI pricing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Anthropic: &lt;a href=&#34;https://docs.anthropic.com/en/docs/about-claude/pricing&#34;&gt;Claude API pricing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Benchmarking LLMs for ABAP: Why ABAP-1 Isn&#39;t a Code Generator (Yet)</title>
      <link>https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/</link>
      <pubDate>Mon, 09 Feb 2026 09:30:00 +0100</pubDate>
      <guid>https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Live benchmark results:&lt;/strong&gt; &lt;a href=&#34;http://abap-llm-benchmark.marianzeis.de/&#34;&gt;abap-llm-benchmark.marianzeis.de&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In a lot of SAP webcasts and webinars, especially around AI, the question comes up very early: which model are you using, and which one do you recommend?&lt;/p&gt;&#xA;&lt;p&gt;For &lt;a href=&#34;https://cap.cloud.sap/docs/&#34;&gt;CAP&lt;/a&gt; and &lt;a href=&#34;https://ui5.sap.com/&#34;&gt;UI5&lt;/a&gt; the answer is usually pretty simple: use the current best model from Anthropic. If you add good context via &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/sap-build-introduces-new-mcp-servers-to-enable-agentic-development-for/ba-p/14205602&#34;&gt;MCP servers&lt;/a&gt; from the community or SAP, you are basically fine. There is just a lot of public knowledge available, and most of it is in JavaScript/TypeScript, which LLMs handle extremely well.&lt;/p&gt;&#xA;&lt;p&gt;With ABAP it&amp;rsquo;s different.&lt;/p&gt;&#xA;&lt;p&gt;ABAP is not the framework, it&amp;rsquo;s the language. And compared to JavaScript/TypeScript, far less ABAP knowledge and code is publicly accessible, so models simply know much less about it.&lt;/p&gt;&#xA;&lt;p&gt;Sure, you can help with extra context and tooling, but if you want this to work well, the model should already have a solid ABAP base. A good foundation makes it much easier to build on top.&lt;/p&gt;&#xA;&lt;p&gt;So how do you figure out which models are actually best for ABAP? Anthropic, Google, OpenAI, or maybe &lt;a href=&#34;https://help.sap.com/docs/sap-ai-core/generative-ai/sap-abap-1?locale=en-US&#34;&gt;ABAP-1&lt;/a&gt; from SAP?&lt;/p&gt;&#xA;&lt;p&gt;Luckily, TH Köln recently published a paper that answers exactly this question: &lt;a href=&#34;https://arxiv.org/html/2601.15188v1&#34;&gt;Benchmarking Large Language Models for ABAP Code Generation&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-benchmark&#34;&gt;The benchmark&lt;/h2&gt;&#xA;&lt;p&gt;The paper builds a benchmark so different LLMs can be compared fairly for ABAP code generation.&lt;/p&gt;&#xA;&lt;p&gt;It includes 180 tasks (&lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation/tree/main/dataset/abap_canonical_solution&#34;&gt;HumanEval&lt;/a&gt; adapted to ABAP plus a set of ABAP/SAP practical scenarios). The flow is fully automated: the model generates ABAP code, the code is created and activated in a fixed SAP environment (&lt;a href=&#34;https://github.com/SAP-docs/abap-platform-trial-image&#34;&gt;ABAP Cloud Developer Trial image documentation&lt;/a&gt;), and then ABAP Unit tests run against it.&lt;/p&gt;&#xA;&lt;p&gt;If syntax checks or tests fail, the model gets the error messages as feedback and can try again for up to 5 rounds. In the end, it&amp;rsquo;s not about whether the code &amp;ldquo;looks plausible&amp;rdquo;, but whether it actually passes the tests (and how quickly it gets there).&lt;/p&gt;&#xA;&lt;p&gt;The nice part: the authors published everything.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Original code&lt;/strong&gt;: &lt;a href=&#34;https://github.com/timkoehne/LLM-Benchmark-ABAP-Code-Generation&#34;&gt;LLM-Benchmark-ABAP-Code-Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dataset (prompts, unit tests, expected classes)&lt;/strong&gt;: &lt;a href=&#34;https://github.com/timkoehne/LLM-Benchmark-ABAP-Code-Generation/tree/main/dataset&#34;&gt;dataset folder&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;My updated benchmark repo (additional models, speed-ups, plots, data, webpage)&lt;/strong&gt;: &lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation&#34;&gt;marianfoo/LLM-Benchmark-ABAP-Code-Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;updating-the-benchmark&#34;&gt;Updating the benchmark&lt;/h2&gt;&#xA;&lt;p&gt;One small problem: the evaluation in the paper is from mid-2025 (for example using GPT-5 and Claude Sonnet 4). The model landscape moves fast, and now we already have things like GPT-5.3 and &lt;a href=&#34;https://www.anthropic.com/news/claude-opus-4-6&#34;&gt;Claude Opus 4.6&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So I wanted a way to update the results and include additional models that are relevant for ABAP.&lt;/p&gt;&#xA;&lt;p&gt;I built on the original benchmark and added runs for additional models, so I can compare them against the original GPT-5 and Sonnet numbers:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Anthropic Claude Opus 4.5 (4.6 will be next)&lt;/li&gt;&#xA;&lt;li&gt;OpenAI GPT-5.2&lt;/li&gt;&#xA;&lt;li&gt;SAP ABAP-1&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I also made a few changes to speed up execution:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For OpenAI and Anthropic I used the vendor batch APIs like in the original code (&lt;a href=&#34;https://platform.openai.com/docs/guides/batch&#34;&gt;OpenAI Batch API&lt;/a&gt;, &lt;a href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/batch-processing&#34;&gt;Anthropic batch processing&lt;/a&gt;). GPT-5.2 Codex was not available via batch for me yet, but that model will be next.&lt;/li&gt;&#xA;&lt;li&gt;ABAP-1 has no batch API, so I implemented a parallel execution with multiple threads.&lt;/li&gt;&#xA;&lt;li&gt;I also parallelized the execution on the ABAP Trial system itself to reduce overall runtime. I&amp;rsquo;m happy I have a well-equipped MacBook, but during the runs RAM usage and fan speed were definitely not idle.&lt;/li&gt;&#xA;&lt;li&gt;Since there is a lot of Python code and I don&amp;rsquo;t know Python well enough, all the coding was done with AI help.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The next step is a small website with an overview of the current results and an easy model comparison.&lt;/p&gt;&#xA;&lt;p&gt;You can find the current results here: &lt;a href=&#34;http://abap-llm-benchmark.marianzeis.de/&#34;&gt;abap-llm-benchmark.marianzeis.de&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;so-what-is-the-best-model-for-abap&#34;&gt;So what is the best model for ABAP?&lt;/h2&gt;&#xA;&lt;p&gt;Not too surprising: the best results came from GPT-5 and Claude Opus 4.5, with a small edge for Opus.&lt;/p&gt;&#xA;&lt;p&gt;To make it more concrete, here are the cumulative success rates from my current comparison (Round 0 = first attempt, Round 5 = after up to 5 feedback iterations with compiler/test errors):&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Model&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;Round 0&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;Round 5&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Claude Opus 4.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;31.61%&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;78.72%&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;GPT-5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;19.28%&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;77.11%&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;GPT-5.2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;16.33%&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;64.00%&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;SAP ABAP-1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;10.67%&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;19.89%&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Here is the same as a chart:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;ABAP LLM benchmark: cumulative success rates by model (GPT-5, Claude Opus 4.5, ABAP-1) and feedback round&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-02-09-abap-llm-benchmark/success_by_model_by_feedbackround_in_percent.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;cost-rough-numbers&#34;&gt;Cost (rough numbers)&lt;/h3&gt;&#xA;&lt;p&gt;One more thing people ask quickly: cost.&lt;/p&gt;&#xA;&lt;p&gt;For my run, I ended up at about $20.26 for GPT-5.2, $39.76 for Claude Opus 4.5 (8,973,159 tokens), and EUR 98.80 for ABAP-1 (17,983,990 tokens).&lt;/p&gt;&#xA;&lt;p&gt;To be fair: for OpenAI and Anthropic I used batch processing, so these numbers are already discounted (batch is usually cheaper, sometimes roughly half compared to the regular API). ABAP-1 has no batch API, so there is no discount like that.&lt;/p&gt;&#xA;&lt;p&gt;Why was ABAP-1 so much more expensive? The benchmark is iterative: when activation or ABAP Unit tests fail, you send the error back to the model and try again. Since ABAP-1 produced errors much more often, many prompts did not get &amp;ldquo;finished&amp;rdquo; early and had to be sent again and again, which drives up tokens and cost.&lt;/p&gt;&#xA;&lt;p&gt;What I find interesting here is not only the final number, but also how the models behave across the feedback loops.&lt;/p&gt;&#xA;&lt;h3 id=&#34;why-is-gpt-52-worse-than-gpt-5-in-this-benchmark&#34;&gt;Why is GPT-5.2 worse than GPT-5 (in this benchmark)?&lt;/h3&gt;&#xA;&lt;p&gt;I can&amp;rsquo;t prove the exact reason (this is a black box), but based on the patterns in the benchmark it looks like GPT-5 is simply better at using compiler feedback to dig itself out of ABAP syntax and declaration issues.&lt;/p&gt;&#xA;&lt;p&gt;GPT-5.2 still does fine, but compared to GPT-5 it is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;less consistent across reruns (about 41% of prompts solved 10/10 vs about 59% for GPT-5)&lt;/li&gt;&#xA;&lt;li&gt;less likely to recover from certain ABAP-specific errors within a few feedback rounds&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My best guess is that GPT-5.2 is tuned differently (for example more general, faster, cheaper, or optimized for other coding workflows), and that does not translate 1:1 to &amp;ldquo;generate a full ABAP class that compiles and passes ABAP Unit tests&amp;rdquo;. Maybe when using the codex model, the results are better.&lt;/p&gt;&#xA;&lt;h3 id=&#34;claude-opus-45&#34;&gt;Claude Opus 4.5&lt;/h3&gt;&#xA;&lt;p&gt;Opus starts very strong in Round 0. That usually means less back and forth for basic ABAP class structure and syntax, and more time spent on the actual logic.&lt;/p&gt;&#xA;&lt;p&gt;In practice, this is what you want: you want to reach the unit test stage quickly, because that feedback is much more actionable than &amp;ldquo;your code does not activate&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sap-abap-1&#34;&gt;SAP ABAP-1&lt;/h3&gt;&#xA;&lt;p&gt;ABAP-1 is clearly not competitive for code generation in this benchmark, and it also benefits much less from the feedback loops.&lt;/p&gt;&#xA;&lt;p&gt;This matches what SAP writes in the docs: ABAP-1 is mainly meant to explain ABAP code, while generation is experimental. For me, ABAP-1 is still useful as an &amp;ldquo;ABAP explainer&amp;rdquo;, but if you want to generate correct ABAP code fast, you still want a strong general model plus good tooling and feedback loops.&lt;/p&gt;&#xA;&lt;h3 id=&#34;what-this-means-in-practice&#34;&gt;What this means in practice&lt;/h3&gt;&#xA;&lt;p&gt;This matters most when you work with APIs and actually build things. If you only call APIs, the model choice matters more. If you actively develop, it matters a bit less because we can add a lot of context and feedback loops.&lt;/p&gt;&#xA;&lt;p&gt;When developing ABAP, we can provide much more context (for example via my &lt;a href=&#34;https://github.com/marianfoo/abap-mcp-server&#34;&gt;ABAP MCP server&lt;/a&gt;), catch syntax errors early, run tools like &lt;a href=&#34;https://abaplint.org/&#34;&gt;abaplint&lt;/a&gt;, and then feed that back into the LLM to improve the code, basically like in TypeScript. That usually gets you to pretty good ABAP code that also follows your rules.&lt;/p&gt;&#xA;&lt;p&gt;Depending on cost, I&amp;rsquo;ll try to keep this up to date with newer models. If you have a model you want to see in the comparison, just open an issue in the benchmark repo: &lt;a href=&#34;https://github.com/marianfoo/LLM-Benchmark-ABAP-Code-Generation/issues&#34;&gt;GitHub issues&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Big thanks to Stephan Wallraven, Tim Köhne, Hartmut Westenberger, and Andreas Moser for creating the foundation with their benchmark and paper.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Supercharged Local Open Source Joule for Consultants: Search Your Data &amp; Code</title>
      <link>https://blog.zeis.de/posts/2025-10-29-librechat/</link>
      <pubDate>Wed, 29 Oct 2025 09:30:00 +0100</pubDate>
      <guid>https://blog.zeis.de/posts/2025-10-29-librechat/</guid>
      <description>&lt;p&gt;This post is a mirrored copy of my LinkedIn article, kept here so it remains searchable and independent from external platforms.&#xA;You can still find the original on LinkedIn: &lt;a href=&#34;https://www.linkedin.com/pulse/supercharged-local-open-source-joule-consultants-search-marian-zeis-gepbf/&#34;&gt;LinkedIn Pulse article&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.sap.com/germany/products/artificial-intelligence/ai-assistant/sap-consulting-capability.html&#34;&gt;Joule for Consultants&lt;/a&gt; costs 250 € and mainly searches SAP Help, SAP Community and SAP for Me (Notes). That is useful, but it stops where real projects start: your own systems, codebase and sensitive data. Even though public assistants like ChatGPT and Claude can already reach SAP Help and SAP Community, the real gap is internal/authenticated data and code.&lt;/p&gt;&#xA;&lt;p&gt;For this case I created a &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat&#34;&gt;LibreChat fork&lt;/a&gt; that includes and auto-starts SAP MCP servers (Docs, Notes, S/4 OData and ABAP ADT) via Docker. So the MCP Server are local inside your Docker and no external MCP Server is used. &lt;a href=&#34;https://www.librechat.ai/&#34;&gt;LibreChat&lt;/a&gt; is an open‑source local chat UI with MCP support and built‑in Ollama integration, and it also supports many other model providers. You get a private assistant that can read official docs, inspect code and data from your systems without sending customer context to third‑party clouds. The fork’s documentation is here: &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/tree/main/sap-mcp-docs&#34;&gt;sap‑mcp‑docs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Running the assistant locally means the client, tools and, if you choose, the model stay on your machine (LibreChat supports Ollama), so you avoid pasting sensitive context into public chats. By adding S/4 OData and ABAP ADT, you bring real metadata, code and data into the loop.&lt;/p&gt;&#xA;&lt;h3 id=&#34;which-mcp-servers-are-used-here&#34;&gt;Which MCP servers are used here?&lt;/h3&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-docs&#34;&gt;SAP Docs MCP&lt;/a&gt; provides unified search and fetch across SAPUI5/OpenUI5, CAP, ABAP keyword docs, SAP Help and SAP Community. The &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-notes&#34;&gt;SAP Notes MCP&lt;/a&gt; is for searching and fetching SAP Notes when you have an error, OSS number or concrete symptom; it requires an S‑User certificate (Passport). The &lt;a href=&#34;https://github.com/mario-andreschak/mcp-abap-adt&#34;&gt;ABAP ADT MCP&lt;/a&gt; reads ABAP sources, DDIC structures and tables content via ADT APIs so you never paste code into chat and still get precise context. The &lt;a href=&#34;https://github.com/lemaiwo/btp-sap-odata-to-mcp-server&#34;&gt;S/4 OData MCP&lt;/a&gt; discovers services and exposes safe CRUD tools so your assistant can read and write via approved APIs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-this-works-in-practice&#34;&gt;How this works in practice&lt;/h2&gt;&#xA;&lt;p&gt;In my example I used o4‑mini from OpenAI, but LibreChat supports many &lt;a href=&#34;https://www.librechat.ai/docs/configuration/pre_configured_ai&#34;&gt;model providers&lt;/a&gt; including OpenAI, Anthropic, Google, Azure AI Foundry and even SAP AI Core (not tested by me). The key point: you can also use a local &lt;a href=&#34;https://www.librechat.ai/blog/2024-03-02_ollama#getting-started-with-ollama&#34;&gt;model via Ollama&lt;/a&gt;. Depending on your use case, a local model is smart enough to call the right tools and MCP servers. I also use an ABAP Cloud Developer Trial instance connected via the S/4 OData and ADT MCP servers.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sap-notes-lookup--abap-table-verification&#34;&gt;SAP Notes lookup + ABAP table verification&lt;/h3&gt;&#xA;&lt;p&gt;This first example flow combines the SAP Notes MCP and ABAP ADT MCP. First the assistant searches and fetches a specific SAP Note (&lt;code&gt;sap_note_search&lt;/code&gt;, &lt;code&gt;sap_note_get&lt;/code&gt;), then verifies the relevant DDIC table and fields via ADT. This confirms the symptom and the fix steps before proposing a safe, auditable corrective action (for example, an OData action). This is the pattern for many “error → note → verify → fix” tasks.&lt;/p&gt;&#xA;&lt;img src=&#34;example-sap-notes-lookup.jpg&#34; alt=&#34;LibreChat example flow: SAP Notes lookup plus ABAP table verification via ADT MCP tools&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;h3 id=&#34;service-metadata--valuelist-guidance&#34;&gt;Service metadata + ValueList guidance&lt;/h3&gt;&#xA;&lt;p&gt;The assistant uses the S/4 MCP to discover the Football service and inspect entity schema (&lt;code&gt;search-sap-services&lt;/code&gt;, &lt;code&gt;discover-service-entities&lt;/code&gt;, &lt;code&gt;get-entity-schema&lt;/code&gt;). It then pivots to the SAP Docs MCP to &lt;code&gt;sap_help_search&lt;/code&gt; and &lt;code&gt;sap_help_get&lt;/code&gt; the ValueList documentation and shows exactly where to add annotations. This marries live service metadata with the official docs so consultants can implement confidently, then validate in a Fiori app.&lt;/p&gt;&#xA;&lt;img src=&#34;example-service-metadata-valuelist.jpg&#34; alt=&#34;LibreChat example flow: S/4 service metadata plus ValueList guidance via SAP Docs MCP&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;h3 id=&#34;cds-view-value-help-research&#34;&gt;CDS view Value Help research&lt;/h3&gt;&#xA;&lt;p&gt;For CDS‑centric cases, the assistant focuses on SAP Docs MCP to collect the canonical examples for &lt;code&gt;Common.ValueList&lt;/code&gt; and relevant ABAP/CDS annotations. If needed, ABAP ADT MCP can retrieve the current CDS definition (&lt;code&gt;GetStructure&lt;/code&gt;/&lt;code&gt;GetInclude&lt;/code&gt;) to compare the as‑is state and generate the minimal edit plan.&lt;/p&gt;&#xA;&lt;img src=&#34;example-cds-value-help.jpg&#34; alt=&#34;LibreChat example flow: CDS value help research with ABAP ADT MCP context&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;h3 id=&#34;other-options-and-clients&#34;&gt;Other options and clients&lt;/h3&gt;&#xA;&lt;p&gt;There are other options and clients to use these MCP servers. If you prefer the Microsoft ecosystem, Visual Studio Code’s GitHub Copilot Chat supports MCP servers so you can connect the same SAP MCP endpoints there, as described in the &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&#34;&gt;VS Code Copilot Chat MCP guide&lt;/a&gt;. This is a simpler setup compared to the LibreChat fork. For a more governed setup you can use &lt;a href=&#34;https://adoption.microsoft.com/ai-agents/copilot-studio/&#34;&gt;Copilot Studio&lt;/a&gt; together with the hosted S/4 OData MCP server from &lt;a href=&#34;https://www.sap.com/products/artificial-intelligence/partners/nessi-nv-ai-data-enabler.html?countryCode=US&#34;&gt;Nessi NV&lt;/a&gt; and the SAP Docs MCP Server.&lt;/p&gt;&#xA;&lt;p&gt;I talked about these MCP servers and showed a live example of Copilot Studio and other LLM clients at SAP Inside Track Munich 2025. The recording is here: &lt;a href=&#34;https://www.youtube.com/watch?v=vTZCeaxsOwU&#34;&gt;SAP Inside Track Munich 2025&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can also build your own LLM client and use the MCP servers directly. I tried a quick PoC with the current libraries and tools. It worked, but turning it into a production‑ready assistant with robust MCP support is non‑trivial; I would not recommend rolling your own for production. The PoC is here: &lt;a href=&#34;https://github.com/marianfoo/custom-llm-client&#34;&gt;Custom LLM Client&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;getting-started&#34;&gt;Getting started&lt;/h3&gt;&#xA;&lt;p&gt;To run this on your own machine, clone the repository, configure the &lt;code&gt;.env&lt;/code&gt; and &lt;code&gt;librechat.yaml&lt;/code&gt; files and start the Docker container. The docs are in this &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/tree/main/sap-mcp-docs&#34;&gt;folder&lt;/a&gt; and the setup guide is here: &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/blob/main/sap-mcp-docs/MCP_SETUP_GUIDE.md&#34;&gt;MCP_SETUP_GUIDE.md&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Minimal path (see guides for details):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Clone and configure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd local-llm-client-for-sap-consultants-librechat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp librechat.example.yaml librechat.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Configure the .env and librechat.yaml files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Start in Docker&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;security-running-ai-and-mcp-locally&#34;&gt;Security: running AI and MCP locally&lt;/h3&gt;&#xA;&lt;p&gt;Because the client, MCP server and (optionally) the model run on your machine, prompts, retrieved docs and tool results stay inside your environment. When you do connect to external sources, do it intentionally and stick to trusted endpoints. Operationally keep it simple and start read-only by default and enable write tools only when you require it. The short version: a local, open-source stack is the safer option here; unlike cloud assistants, your information never leaves your machine unless you choose to send it.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;&#xA;&lt;p&gt;With MCP servers, LLM clients become smarter and more useful in real projects. LLMs simply cannot know everything, especially internal context that lives on enterprise networks and changes quickly. Because the Model Context Protocol is still relatively new in the enterprise, treat adoption with care and integrate it securely. Keeping information on your own machine and using open-source libraries lets you see exactly what runs and how.&lt;/p&gt;&#xA;&lt;p&gt;SAP clearly wants to position Joule for Consultants as a unique product; today it still lags behind community projects for these use cases. At TechEd next week we’ll see whether community MCP servers are embraced and whether SAP’s own products improve enough to justify the price.&lt;/p&gt;&#xA;&lt;h3 id=&#34;references&#34;&gt;References&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Custom LLM Client PoC: &lt;a href=&#34;https://github.com/marianfoo/custom-llm-client&#34;&gt;https://github.com/marianfoo/custom-llm-client&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;SAP Inside Track Munich 2025 session: &lt;a href=&#34;https://www.youtube.com/watch?v=vTZCeaxsOwU&#34;&gt;https://www.youtube.com/watch?v=vTZCeaxsOwU&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;SAP partner listing (S/4 integration via OAuth): &lt;a href=&#34;https://www.sap.com/products/artificial-intelligence/partners/nessi-nv-ai-data-enabler.html?countryCode=US&#34;&gt;https://www.sap.com/products/artificial-intelligence/partners/nessi-nv-ai-data-enabler.html?countryCode=US&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;MCP clients overview (Claude Desktop etc.): &lt;a href=&#34;https://modelcontextprotocol.io/clients/&#34;&gt;https://modelcontextprotocol.io/clients/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Copilot Studio: &lt;a href=&#34;https://adoption.microsoft.com/ai-agents/copilot-studio/&#34;&gt;https://adoption.microsoft.com/ai-agents/copilot-studio/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;VS Code Copilot Chat MCP docs: &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&#34;&gt;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;CAP MCP server (official): &lt;a href=&#34;https://github.com/cap-js/mcp-server&#34;&gt;https://github.com/cap-js/mcp-server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;CAP MCP plugin (community): &lt;a href=&#34;https://github.com/gavdilabs/cap-mcp-plugin&#34;&gt;https://github.com/gavdilabs/cap-mcp-plugin&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;S/4 OData MCP: &lt;a href=&#34;https://github.com/lemaiwo/btp-sap-odata-to-mcp-server&#34;&gt;https://github.com/lemaiwo/btp-sap-odata-to-mcp-server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;ABAP ADT MCP: &lt;a href=&#34;https://github.com/mario-andreschak/mcp-abap-adt&#34;&gt;https://github.com/mario-andreschak/mcp-abap-adt&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;SAP Notes MCP: &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-notes&#34;&gt;https://github.com/marianfoo/mcp-sap-notes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;SAP Docs MCP: &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-docs&#34;&gt;https://github.com/marianfoo/mcp-sap-docs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat Ollama guide: &lt;a href=&#34;https://www.librechat.ai/blog/2024-03-02_ollama#getting-started-with-ollama&#34;&gt;https://www.librechat.ai/blog/2024-03-02_ollama#getting-started-with-ollama&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat model providers: &lt;a href=&#34;https://www.librechat.ai/docs/configuration/pre_configured_ai&#34;&gt;https://www.librechat.ai/docs/configuration/pre_configured_ai&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat website: &lt;a href=&#34;https://www.librechat.ai/&#34;&gt;https://www.librechat.ai/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat fork setup guide: &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/blob/main/sap-mcp-docs/MCP_SETUP_GUIDE.md&#34;&gt;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/blob/main/sap-mcp-docs/MCP_SETUP_GUIDE.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat fork docs folder: &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/tree/main/sap-mcp-docs&#34;&gt;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat/tree/main/sap-mcp-docs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LibreChat fork (SAP consultants, with MCP servers): &lt;a href=&#34;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat&#34;&gt;https://github.com/marianfoo/local-llm-client-for-sap-consultants-librechat&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
