[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-bentoml-turns-model-serving-into-python-apis-en":3,"article-related-bentoml-turns-model-serving-into-python-apis-en":30,"series-tools-58924f21-83f4-405d-8d9a-4af334e9d030":84},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"58924f21-83f4-405d-8d9a-4af334e9d030","bentoml-turns-model-serving-into-python-apis-en","BentoML turns model serving into Python APIs","\u003Cp data-speakable=\"summary\">BentoML turns models and Python code into deployable AI APIs.\u003C\u002Fp>\u003Cp>I’ve been around enough model-serving stacks to know when one is pretending to be simple. BentoML kept annoying me in a specific way: it looked like “just a Python library,” but once I tried to wire real \u003Ca href=\"\u002Ftag\u002Finference\">inference\u003C\u002Fa> into it, the nice demo story started getting messy. I’d have one model in one runtime, a second model in another, a queue for background work, some batching for throughput, and then a third service that needed to call both. That’s where most frameworks get smug and fall apart.\u003C\u002Fp>\u003Cp>What I wanted was boring: one place to define the service, one way to expose it, and enough primitives that I wasn’t hand-rolling orchestration glue at 2 a.m. BentoML’s \u003Ca href=\"\u002Ftag\u002Fgithub\">GitHub\u003C\u002Fa> repo is the thing that finally made that shape obvious. It’s not just “serve a model.” It’s serving, batching, task queues, multi-model chains, distributed orchestration, and \u003Ca href=\"\u002Ftag\u002Fopenai\">OpenAI\u003C\u002Fa>-compatible endpoints all sitting in the same world. That’s the part worth unpacking.\u003C\u002Fp>\u003Cp>The source that kicked this off for me is the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\">BentoML GitHub organization\u003C\u002Fa>, especially the main \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FBentoML\">BentoML repo\u003C\u002Fa> and the linked examples. The repo doesn’t give me a neat marketing paragraph and call it done; it shows the shape of the system through the projects around it: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FOpenLLM\">OpenLLM\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FYatai\">Yatai\u003C\u002Fa>, and the example repos for RAG, voice agents, and multimodel apps. I’m not using star counts here because the source text didn’t provide a clean, trustworthy snapshot in a way I’d want to quote.\u003C\u002Fp>\u003Ch2>BentoML is really an API factory, not a model wrapper\u003C\u002Fh2>\u003Cblockquote>BentoML is a Python library for building online serving systems optimized for AI apps and model inference.\u003C\u002Fblockquote>\u003Cp>What this actually means is that BentoML is not trying to be your model. It’s trying to be the thing that wraps whatever model you already have and gets it into a shape users can hit over HTTP, with the annoying production details already in the room.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781054304942-bxxs.png\" alt=\"BentoML turns model serving into Python APIs\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>I’ve seen people approach serving frameworks like they’re model adapters. That’s too small a mental model. The minute you need request validation, transport formatting, concurrency control, or a second code path for non-model logic, the “wrapper” story gets flimsy. BentoML’s pitch is broader: the service is the unit, not the model file.\u003C\u002Fp>\u003Cp>That matters because real AI apps are rarely one model and one endpoint. You want a classifier, a reranker, maybe a generator, maybe a post-processor, and sometimes a bit of plain Python glue that doesn’t belong inside the model runtime at all. BentoML explicitly supports custom Python code alongside model runtimes, which is exactly the kind of thing I wish more serving tools said up front instead of making me discover it after the third refactor.\u003C\u002Fp>\u003Cp>How to apply it: stop asking “how do I serve this model?” and start asking “what is the service boundary?” If the boundary includes preprocessing, routing, queueing, or chaining multiple model calls, put that in the service definition from day one. Don’t bury it in a notebook and hope you’ll clean it later. You won’t.\u003C\u002Fp>\u003Ch2>The primitives matter more than the happy path demo\u003C\u002Fh2>\u003Cblockquote>It offers the key primitives for serving optimizations, task queues, batching, multi-model chains, distributed orchestration, and multi-GPU serving.\u003C\u002Fblockquote>\u003Cp>What this actually means is BentoML is trying to give you building blocks, not a rigid opinionated app shell. That’s a good thing. The bad version of this category tells you “just deploy the model” and then acts surprised when you ask about throughput, fan-out, or background work.\u003C\u002Fp>\u003Cp>Batching is the most obvious example. If you’ve ever run inference at scale, you know the GPU hates tiny lonely requests. Batching is how you stop wasting hardware. Task queues matter when your request is not a request anymore but a job: generate a transcript, run a long synthesis step, fan out to multiple models, or wait on external tools. Multi-model chains matter because one model often isn’t enough, and distributed orchestration matters because your service graph stops fitting in one process once the app becomes real.\u003C\u002Fp>\u003Cp>I ran into this exact mess on a retrieval app where the “simple” path was: embed query, retrieve docs, rerank, generate answer, log everything, and retry on partial failure. If I had shoved that into a single model server, I’d have created a maintenance trap. BentoML’s primitives are the right level because they let me keep the orchestration visible instead of pretending the model runtime can magically handle application logic.\u003C\u002Fp>\u003Cp>How to apply it: draw the request lifecycle before you write code. Mark which steps are synchronous, which can be batched, which can be queued, and which are separate model calls. Then map each step to a BentoML primitive instead of cramming everything into one endpoint function.\u003C\u002Fp>\u003Cul>\u003Cli>Use batching when throughput matters more than single-request latency.\u003C\u002Fli>\u003Cli>Use queues when the user can wait for a job result.\u003C\u002Fli>\u003Cli>Use chains when one model output feeds another model or tool step.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>OpenAI-compatible APIs are the practical shortcut, not a gimmick\u003C\u002Fh2>\u003Cblockquote>Run any open-source LLMs (Llama, Mistral, Qwen, Phi and more) or custom fine-tuned models as OpenAI-compatible APIs with a single command.\u003C\u002Fblockquote>\u003Cp>What this actually means is BentoML is trying to reduce integration friction for the rest of your stack. If your app, frontend, or \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> framework already speaks OpenAI-style chat\u002Fcompletions semantics, you don’t want to rewrite everything just because you changed the backend model.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781054301665-btsu.png\" alt=\"BentoML turns model serving into Python APIs\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>I’m not sentimental about API shapes. I care whether I can swap the backend without rewriting half the app. OpenAI-compatible endpoints are useful because they let me keep the client side boring. That’s the point. If I’m testing Llama, Mistral, Qwen, or a fine-tuned model, I want the switch to be about deployment and inference behavior, not about teaching every downstream caller a new protocol.\u003C\u002Fp>\u003Cp>BentoML’s OpenLLM project is where this gets more concrete. The repo says it can expose open-\u003Ca href=\"\u002Fnews\u002Fchinese-open-source-ai-models-set-the-pace-en\">source models\u003C\u002Fa> as OpenAI-compatible endpoints, and that’s a real productivity gain when you’re building agents or internal tools that already assume the OpenAI-shaped interface. The less ceremony around swapping models, the faster I can \u003Ca href=\"\u002Ftag\u002Fbenchmark\">benchmark\u003C\u002Fa>, compare, and roll back when something gets weird.\u003C\u002Fp>\u003Cp>How to apply it: keep your client contract stable and move the variability into the serving layer. If you’re building an app with multiple model backends, define one OpenAI-like interface for the app and let BentoML handle the translation beneath it. That gives you a clean escape hatch when a model underperforms or costs too much.\u003C\u002Fp>\u003Cul>\u003Cli>Use compatibility to preserve your app code.\u003C\u002Fli>\u003Cli>Use different backends to compare latency, cost, and quality.\u003C\u002Fli>\u003Cli>Use one interface so your evals stay honest.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>The examples repo is the real documentation for actual builders\u003C\u002Fh2>\u003Cblockquote>A collection of examples for BentoML, from deploying OpenAI-compatible LLM service, to building voice phone calling agents and RAG applications.\u003C\u002Fblockquote>\u003Cp>What this actually means is that the examples are not filler. They’re the shortest path to understanding where BentoML expects you to put the interesting parts of your app.\u003C\u002Fp>\u003Cp>I trust example repos more than polished docs when I’m trying to see the shape of a framework. Docs tell me what the authors wish I’d do. Examples show me what they had to solve when they built something real. The BentoML examples cover a useful spread: OpenAI-compatible LLM services, voice agents, and RAG applications. That spread tells me the framework isn’t just for toy inference. It’s meant for multi-step systems where serving is only one part of the story.\u003C\u002Fp>\u003Cp>That matters because a lot of teams are now building AI products that look more like workflows than models. A phone agent needs speech-to-text, response generation, maybe retrieval, and text-to-speech. A RAG app needs indexing, retrieval, ranking, and answer synthesis. The examples tell me BentoML is comfortable living in that middle layer where model calls become product behavior.\u003C\u002Fp>\u003Cp>How to apply it: don’t start by writing your own architecture from scratch. Pick the closest example in the repo, then strip it down to the minimum shape that matches your product. If you’re building a voice workflow, don’t begin with a chat demo and hope to “add voice later.” Start from the voice example and remove what you don’t need.\u003C\u002Fp>\u003Cp>Also, read examples as design intent. If the repo gives you a RAG example, a phone agent example, and an OpenAI-compatible service example, that’s the framework telling you which combinations it expects to be common. That’s useful signal, not just sample code.\u003C\u002Fp>\u003Ch2>Mojo and Modular MAX explain where the stack is headed\u003C\u002Fh2>\u003Cblockquote>For end-to-end performance and portability across the AI execution stack, see Modular MAX. As Mojo matures, BentoML will leverage Mojo's compiled performance for CPU and GPU kernels to push model inference performance even further.\u003C\u002Fblockquote>\u003Cp>What this actually means is BentoML is not trying to live in isolation. It’s part of a broader Modular stack that includes hardware-optimized runtimes and Mojo for systems-level performance work. I care about that because serving frameworks eventually hit the wall where Python ergonomics stop being enough for hot paths.\u003C\u002Fp>\u003Cp>This is one of those places where I’m mildly skeptical and also interested. Skeptical, because every stack promises performance somewhere down the road. Interested, because the repo is at least explicit about the boundary: BentoML handles serving and orchestration, Modular MAX handles optimized runtimes, and Mojo is the language story for kernels and systems work. That division makes more sense than pretending one layer can do everything.\u003C\u002Fp>\u003Cp>If you’re building inference systems, the important lesson is not “go learn another language right now.” It’s that your architecture should leave room for acceleration beneath the serving layer. The serving API should stay stable while the runtime underneath gets faster. That’s the whole point of separating concerns in the first place.\u003C\u002Fp>\u003Cp>How to apply it: keep your service contract narrow and your runtime swappable. If a future optimization requires a different backend, you should be able to change the engine without rewriting request handling, auth, routing, or business logic. That’s the difference between a service and a science project.\u003C\u002Fp>\u003Cp>For the supporting links, I’d read the main \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FBentoML\">BentoML repository\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FOpenLLM\">OpenLLM repository\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FYatai\">Yatai repository\u003C\u002Fa>, and the \u003Ca href=\"https:\u002F\u002Fwww.modular.com\u002Fmax\">Modular MAX page\u003C\u002Fa> if you want the broader runtime context.\u003C\u002Fp>\u003Ch2>How I’d use BentoML without overcomplicating it\u003C\u002Fh2>\u003Cp>Here’s the part I wish more framework repos would say plainly: you do not need to use every feature on day one. In fact, if you do, you’ll probably make a mess. Start with a single service, one model backend, one clean API shape, and only add queues or batching when the workload proves you need them.\u003C\u002Fp>\u003Cp>BentoML is useful when your app is already more than a single model call. That’s the sweet spot. If your problem is “I need to expose a model with sane production boundaries,” it fits. If your problem is “I want a giant platform before I have traffic,” you’re probably just buying complexity early.\u003C\u002Fp>\u003Cp>I’d use it in three phases. First, get the model serving path correct. Second, add batching or async work where the metrics justify it. Third, split out multi-model orchestration only when the request graph actually needs it. That order keeps you honest and saves you from inventing abstractions for a workload you don’t have yet.\u003C\u002Fp>\u003Cp>One more thing: the repo’s organization around BentoML, OpenLLM, Yatai, and the examples is telling you that the ecosystem is meant to be practical. You can stay at the library level, or you can move into deployment and platform pieces later. That’s a sane progression, and honestly, it’s the kind of progression I trust more than a one-size-fits-all platform pitch.\u003C\u002Fp>\u003Ch2>The template you can copy\u003C\u002Fh2>\u003Cpre>\u003Ccode># BentoML-style OpenAI-compatible service template\n\nThis template gives you a clean starting point for serving a model, wrapping custom Python code, and keeping the API compatible with OpenAI-style clients.\n\n## 1) Service shape\n- One service = one stable API boundary\n- Keep preprocessing, inference, and postprocessing inside the service\n- Add queues, batching, or multi-model steps only when the workload needs them\n\n## 2) What to expose\n- `\u002Fv1\u002Fchat\u002Fcompletions`-style endpoint for LLM apps\n- `\u002Fhealthz` for readiness checks\n- `\u002Fmetrics` if you are tracking latency, throughput, and queue depth\n\n## 3) What to keep swappable\n- Model runtime\n- Model format\n- Batch size\n- Queue backend\n- GPU\u002FCPU execution target\n\n## 4) Service skeleton\n\npython\n# service.py\nimport bentoml\nfrom pydantic import BaseModel\n\nclass ChatRequest(BaseModel):\n    model: str | None = None\n    messages: list[dict]\n    temperature: float = 0.7\n\nclass ChatResponse(BaseModel):\n    id: str\n    object: str\n    content: str\n\nsvc = bentoml.Service(\"my_ai_service\")\n\n@svc.api(input=bentoml.io.JSON(), output=bentoml.io.JSON())\ndef chat(req: dict):\n    # 1. validate\n    data = ChatRequest(**req)\n\n    # 2. preprocess\n    prompt = \"\\n\".join(m.get(\"content\", \"\") for m in data.messages)\n\n    # 3. inference\n    # Replace this with your model call\n    result = f\"Model response to: {prompt}\"\n\n    # 4. postprocess\n    return ChatResponse(\n        id=\"chatcmpl-local\",\n        object=\"chat.completion\",\n        content=result,\n    ).model_dump()\n\n\n## 5) Add batching when needed\nUse batching if your GPU utilization is low and request volume is high.\n\npython\n# pseudo-pattern\n@svc.api(input=bentoml.io.JSON(), output=bentoml.io.JSON())\n@bentoml.batch\nasync def batched_chat(reqs: list[dict]):\n    outputs = []\n    for req in reqs:\n        data = ChatRequest(**req)\n        prompt = \"\\n\".join(m.get(\"content\", \"\") for m in data.messages)\n        outputs.append({\n            \"id\": \"chatcmpl-local\",\n            \"object\": \"chat.completion\",\n            \"content\": f\"Model response to: {prompt}\",\n        })\n    return outputs\n\n\n## 6) Add a queue when the task is slow\nUse a queue when the user can wait for a job result instead of holding the request open.\n\npython\n# pseudo-pattern\n@svc.task\ndef generate_report(payload: dict):\n    # long-running inference or multi-step pipeline\n    return {\"status\": \"done\", \"result\": \"...\"}\n\n\n## 7) Multi-model chain pattern\nUse separate steps when one model feeds another.\n\npython\n# pseudo-pattern\nsummary = summarize(text)\nanswer = generate_answer(summary)\nranked = rerank(answer, candidates)\n\n\n## 8) Deployment checklist\n- Confirm the API shape matches your client\n- Test one request path before adding batching\n- Measure latency before and after queueing\n- Keep model selection externalized\n- Verify GPU memory headroom before scaling workers\n\n## 9) Minimal client example\n\npython\nimport requests\n\nresp = requests.post(\n    \"http:\u002F\u002Flocalhost:3000\u002Fv1\u002Fchat\u002Fcompletions\",\n    json={\n        \"messages\": [\n            {\"role\": \"user\", \"content\": \"Write a short summary of BentoML.\"}\n        ],\n        \"temperature\": 0.2,\n    },\n    timeout=30,\n)\nprint(resp.json())\n\n\n## 10) Rule I’d actually follow\nStart with one model, one endpoint, one stable contract.\nOnly add batching, queues, and orchestration after the workload proves you need them.\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The original source for this breakdown is the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\">BentoML GitHub organization\u003C\u002Fa>, especially the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbentoml\u002FBentoML\">BentoML repo\u003C\u002Fa> and its linked examples. My template above is original and opinionated, but it’s directly informed by the serving, batching, orchestration, and OpenAI-compatible patterns shown in that source.\u003C\u002Fp>","I break down BentoML’s serving model and give you a copy-ready template for OpenAI-compatible model APIs.","github.com","https:\u002F\u002Fgithub.com\u002Fbentoml",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781054304942-bxxs.png","tools","en","d5af1522-28aa-4cfb-8779-1ecf168bc0b5",[17,18,19,20,21],"BentoML","model serving","OpenAI-compatible APIs","LLM inference","Python",[23,24,25],"BentoML is best treated as a service boundary, not a thin model wrapper.","Its real value is the set of primitives for batching, queues, and orchestration.","The examples and OpenLLM repos show how to keep client APIs stable while swapping backends.",0,"2026-06-10T01:17:56.721066+00:00","2026-06-10T01:17:56.713+00:00","7c0b9a23-11c5-44b3-a9e5-8ddcd2ef083a",{"tags":31,"relatedLang":43,"relatedPosts":47},[32,34,37,39,41],{"name":17,"slug":33},"bentoml",{"name":35,"slug":36},"Model Serving","model-serving",{"name":21,"slug":38},"python",{"name":19,"slug":40},"openai-compatible-apis",{"name":20,"slug":42},"llm-inference",{"id":15,"slug":44,"title":45,"language":46},"bentoml-turns-model-serving-into-python-apis-zh","BentoML 把模型服務變成 Python API","zh",[48,54,60,66,72,78],{"id":49,"slug":50,"title":51,"cover_image":52,"image_url":52,"created_at":53,"category":13},"1e0d71a2-19ae-44f4-970b-d27f77ad5a8a","nvidia-lg-ai-collaboration-playbook-en","Nvidia and LG turn AI plans into a playbook","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056992194-i3tx.png","2026-06-10T02:02:46.922181+00:00",{"id":55,"slug":56,"title":57,"cover_image":58,"image_url":58,"created_at":59,"category":13},"9db77f6f-0d31-4686-86d9-16eb9615633d","ollama-best-free-ai-path-2026-en","Ollama is the best free AI path in 2026 for real work","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056075632-qzpq.png","2026-06-10T01:47:25.10989+00:00",{"id":61,"slug":62,"title":63,"cover_image":64,"image_url":64,"created_at":65,"category":13},"c12c0470-eb29-4e44-872d-c133a84a1bc8","awesome-production-ml-turns-chaos-into-stack-en","This MLOps list turns chaos into a stack","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781055237524-86fa.png","2026-06-10T01:33:15.495884+00:00",{"id":67,"slug":68,"title":69,"cover_image":70,"image_url":70,"created_at":71,"category":13},"aa96e422-2b01-4480-b4ce-a646be8e0993","magenta-realtime-2-score-inside-daw-en","Magenta RealTime 2 lets you score in the DAW","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781046208039-ksdz.png","2026-06-09T23:02:56.428086+00:00",{"id":73,"slug":74,"title":75,"cover_image":76,"image_url":76,"created_at":77,"category":13},"c79bca38-50b2-4d80-9a48-7f4d1afd051a","open-source-ai-tools-beat-claude-paid-tiers-en","Open-source AI tools beat Claude’s paid tiers on value","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781045269190-a1ow.png","2026-06-09T22:47:20.7972+00:00",{"id":79,"slug":80,"title":81,"cover_image":82,"image_url":82,"created_at":83,"category":13},"fbd166b2-30ad-451c-bfa5-8f190d0c4252","500-ai-agent-projects-show-where-agents-work-now-en","500 AI agent projects show where agents work now","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781033595427-zvq5.png","2026-06-09T19:32:37.573706+00:00",[85,90,95,100,105,110,115,120,125,130],{"id":86,"slug":87,"title":88,"created_at":89},"8008f1a9-7a00-4bad-88c9-3eedc9c6b4b1","surepath-ai-mcp-policy-controls-en","SurePath AI's New MCP Policy Controls Enhance AI Security","2026-03-26T01:26:52.222015+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"27e39a8f-b65d-4f7b-a875-859e2b210156","mcp-standard-ai-tools-2026-en","MCP Standard in 2026: Integrating AI Tools","2026-03-26T01:27:43.127519+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"165f9a19-c92d-46ba-b3f0-7125f662921d","rag-2026-transforming-enterprise-ai-en","How RAG in 2026 is Transforming Enterprise AI","2026-03-26T01:28:11.485236+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"6a2a8e6e-b956-49d8-be12-cc47bdc132b2","mastering-ai-prompts-2026-guide-en","Mastering AI Prompts: A 2026 Guide for Developers","2026-03-26T01:29:07.835148+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"3ab2c67e-4664-4c67-a013-687a2f605814","garry-tan-open-sources-claude-code-toolkit-en","Garry Tan Open-Sources a Claude Code Toolkit","2026-03-26T08:26:20.245934+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"66a7cbf8-7e76-41d4-9bbf-eaca9761bf69","github-ai-projects-to-watch-in-2026-en","20 GitHub AI Projects to Watch in 2026","2026-03-26T08:28:09.752027+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"9f332fda-eace-448a-a292-2283951eee71","practical-github-guide-learning-ml-2026-en","A Practical GitHub Guide to Learning ML in 2026","2026-03-27T01:16:50.125678+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"1b1f637d-0f4d-42bd-974b-07b53829144d","aiml-2026-student-ai-ml-lab-repo-review-en","AIML-2026 Is a Bare-Bones Student Lab Repo","2026-03-27T01:21:51.661231+00:00",{"id":126,"slug":127,"title":128,"created_at":129},"6d1bf3f6-e191-4d30-b55b-8a0722fa6afe","ai-trending-github-repos-and-research-feeds-en","AI Trending Tracks Repos and Research Feeds","2026-03-27T01:31:35.709532+00:00",{"id":131,"slug":132,"title":133,"created_at":134},"010539a1-4c3a-4bd3-937a-26616422ee0d","awesome-ai-for-science-research-tools-map-en","Awesome AI for Science Is Becoming a Real Research Map","2026-03-27T01:46:50.89513+00:00"]