<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>kmail.at — tutorials &amp; field notes</title>
    <link>https://kmail.at/tutorials</link>
    <description>Terminal lessons, technology deep-dives and field notes by Mohammed Kmail.</description>
    <language>en</language>
    <atom:link href="https://kmail.at/feed.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>Field note — AI regulatory compliance</title>
    <link>https://kmail.at/knowledge/field-notes/ai-regulatory-compliance</link>
    <guid isPermaLink="true">https://kmail.at/knowledge/field-notes/ai-regulatory-compliance</guid>
    <pubDate>Sun, 16 Aug 2026 12:36:34 GMT</pubDate>
    <description>KI-VO · AI Act · reallabore</description>
  </item>
  <item>
    <title>Field note — DevOps &amp; reverse proxy</title>
    <link>https://kmail.at/knowledge/field-notes/devops-reverse-proxy</link>
    <guid isPermaLink="true">https://kmail.at/knowledge/field-notes/devops-reverse-proxy</guid>
    <pubDate>Sun, 16 Aug 2026 12:36:34 GMT</pubDate>
    <description>traefik · nginx · docker</description>
  </item>
  <item>
    <title>Field note — Data analysis &amp; notebooks</title>
    <link>https://kmail.at/knowledge/field-notes/data-analysis-notebooks</link>
    <guid isPermaLink="true">https://kmail.at/knowledge/field-notes/data-analysis-notebooks</guid>
    <pubDate>Sun, 16 Aug 2026 12:36:34 GMT</pubDate>
    <description>marimo · pandas · reports</description>
  </item>
  <item>
    <title>Field note — Custom LLM environments</title>
    <link>https://kmail.at/knowledge/field-notes/custom-llm-environments</link>
    <guid isPermaLink="true">https://kmail.at/knowledge/field-notes/custom-llm-environments</guid>
    <pubDate>Sun, 16 Aug 2026 12:36:34 GMT</pubDate>
    <description>open-webui · rag · ollama</description>
  </item>
  <item>
    <title>rm — remove files and directories</title>
    <link>https://kmail.at/tutorials/rm</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/rm</guid>
    <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
    <description>Delete files and directories. Simple, permanent, and unforgiving — the command that demands respect.</description>
  </item>
  <item>
    <title>Docling — turn messy documents into clean, AI-ready data</title>
    <link>https://kmail.at/tutorials/docling</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/docling</guid>
    <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
    <description>Convert PDFs, DOCX, PPTX, images and web pages into clean Markdown, HTML or JSON with layout awareness, table recognition, OCR and provenance.</description>
  </item>
  <item>
    <title>mv — move and rename files</title>
    <link>https://kmail.at/tutorials/mv</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/mv</guid>
    <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
    <description>Relocate files between directories or give them a new name. Also the safe way to overwrite.</description>
  </item>
  <item>
    <title>Graphiti — temporal knowledge graphs for AI agents</title>
    <link>https://kmail.at/tutorials/graphiti</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/graphiti</guid>
    <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
    <description>Build knowledge graphs that evolve over time, track what was true and when, and give AI agents rich, queryable context instead of flat document chunks.</description>
  </item>
  <item>
    <title>cp — copy files and directories</title>
    <link>https://kmail.at/tutorials/cp</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/cp</guid>
    <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
    <description>Duplicate files and directories, preserving or changing their contents. The everyday copy tool.</description>
  </item>
  <item>
    <title>init_chat_model Gains a langsmith Provider</title>
    <link>https://kmail.at/tutorials/lc-2026-08-14-langsmith-provider</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-14-langsmith-provider</guid>
    <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.15 adds LangSmith as a first-class provider to init_chat_model, so you can call LangSmith-hosted models through the same unified factory.</description>
  </item>
  <item>
    <title>uv — the ultra-fast Python package &amp; project manager</title>
    <link>https://kmail.at/tutorials/uv</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/uv</guid>
    <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
    <description>A single Rust binary that replaces pip, pip-tools, virtualenv, pyenv, and Poetry — with a lockfile, project management, and 10-100x faster installs.</description>
  </item>
  <item>
    <title>chmod — change file permissions</title>
    <link>https://kmail.at/tutorials/chmod</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/chmod</guid>
    <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
    <description>Control who can read, write, and execute a file. The key to sane, secure permissions.</description>
  </item>
  <item>
    <title>reasoning_effort via init_chat_model and the Routing Pattern</title>
    <link>https://kmail.at/tutorials/lc-2026-08-13-reasoning-effort-init</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-13-reasoning-effort-init</guid>
    <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
    <description>A provider-agnostic reasoning_effort parameter usable through init_chat_model, enabling cheap classification passes and expensive reasoning only where it pays.</description>
  </item>
  <item>
    <title>ls — list directory contents</title>
    <link>https://kmail.at/tutorials/ls</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/ls</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>The first command you learn. List files and directories with rich formatting.</description>
  </item>
  <item>
    <title>grep — search text using patterns</title>
    <link>https://kmail.at/tutorials/grep</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/grep</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>The pattern-matching powerhouse. Search files and streams with regular expressions.</description>
  </item>
  <item>
    <title>find — locate files by criteria</title>
    <link>https://kmail.at/tutorials/find</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/find</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>Search the filesystem by name, type, size, and time. More powerful than you think.</description>
  </item>
  <item>
    <title>tar — archive and compress files</title>
    <link>https://kmail.at/tutorials/tar</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/tar</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>Bundle files into a single archive, optionally compressed. The universal backup and transfer tool.</description>
  </item>
  <item>
    <title>marimo — reactive Python notebooks &amp; apps</title>
    <link>https://kmail.at/tutorials/marimo</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/marimo</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>A reactive notebook and app framework that runs cells on input change, stores notebooks as pure Python, and deploys as scripts or web apps.</description>
  </item>
  <item>
    <title>gzip — compress and decompress files</title>
    <link>https://kmail.at/tutorials/gzip</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/gzip</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>Shrink a file with LZ77 + Huffman coding. The default compressor Linux ships with.</description>
  </item>
  <item>
    <title>reasoning_effort as a Standard Chat Model Parameter</title>
    <link>https://kmail.at/tutorials/lc-2026-08-12-reasoning-effort-standard</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-12-reasoning-effort-standard</guid>
    <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.4 adds reasoning_effort as a standard, provider-agnostic chat model parameter, unifying how you control reasoning depth across providers.</description>
  </item>
  <item>
    <title>ChatOpenAI Tool-Call Filtering via _convert_responses_to_tool_calls</title>
    <link>https://kmail.at/tutorials/lc-2026-08-11-openai-tool-call-filtering</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-11-openai-tool-call-filtering</guid>
    <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.4.3 filters malformed tool calls from model content, so your agent loop only ever sees well-formed, callable entries.</description>
  </item>
  <item>
    <title>Handling ContextWindowExceededError with BadRequestError in langchain-openai</title>
    <link>https://kmail.at/tutorials/lc-2026-08-10-openai-context-window-handling</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-10-openai-context-window-handling</guid>
    <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.4.2 surfaces context overflow as a catchable openai.BadRequestError, enabling explicit truncation or model-switch recovery.</description>
  </item>
  <item>
    <title>Surfacing ContextWindowExceededError Cleanly in langchain-openai</title>
    <link>https://kmail.at/tutorials/lc-2026-08-09-openai-context-window</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-09-openai-context-window</guid>
    <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.4.2 wraps OpenAI context overflow as a proper LangChain exception you can catch, inspect, and recover from.</description>
  </item>
  <item>
    <title>ContextWindowExceededError: Better Overflow Handling in langchain-openai 1.4.2</title>
    <link>https://kmail.at/tutorials/lc-2026-08-08-openai-context-window-error</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-08-openai-context-window-error</guid>
    <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.4.2 catches ContextWindowExceededError and re-raises a clean error with the model name and token context.</description>
  </item>
  <item>
    <title>user_profile_id as a Convenience Attribute on ChatAnthropic</title>
    <link>https://kmail.at/tutorials/lc-2026-08-07-anthropic-user-profile-id</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-07-anthropic-user-profile-id</guid>
    <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-anthropic adds a user_profile_id convenience attribute for tagging requests with a user profile for billing, analytics, and access control.</description>
  </item>
  <item>
    <title>Tool Schemas with Unsupported Top-Level Composition (langchain-anthropic 1.5.4)</title>
    <link>https://kmail.at/tutorials/lc-2026-08-06-anthropic-tool-schema-composition</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-06-anthropic-tool-schema-composition</guid>
    <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-anthropic 1.5.4 catches unsupported top-level schema composition (oneOf, allOf, bare array) early instead of failing at runtime.</description>
  </item>
  <item>
    <title>Gateway Env Vars: Empty vs Unset Semantics</title>
    <link>https://kmail.at/tutorials/lc-2026-08-04-gateway-empty-env-vars</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-04-gateway-empty-env-vars</guid>
    <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
    <description>A deeper look at how langchain-core 1.5.2 distinguishes a variable that is unset (None) from one explicitly set to empty (</description>
  </item>
  <item>
    <title>Handling Empty-String Gateway Env Vars (PR #39107)</title>
    <link>https://kmail.at/tutorials/lc-2026-08-03-gateway-empty-env</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-03-gateway-empty-env</guid>
    <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.2 treats an explicitly empty gateway env var as unset, falling back to LANGSMITH_API_KEY instead of failing auth silently.</description>
  </item>
  <item>
    <title>LANGSMITH_API_KEY Gateway Fallback in langchain-core 1.5.3</title>
    <link>https://kmail.at/tutorials/lc-2026-08-02-gateway-key-fallback</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-08-02-gateway-key-fallback</guid>
    <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
    <description>The LangChain gateway now falls back to LANGSMITH_API_KEY when no explicit key is in config, aligning server-side init with the rest of the client.</description>
  </item>
  <item>
    <title>LANGSMITH_API_KEY Fallback</title>
    <link>https://kmail.at/tutorials/langchain-langsmith-api-key-fallback</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-langsmith-api-key-fallback</guid>
    <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.3 lets the gateway fall back to LANGSMITH_API_KEY when LANGCHAIN_API_KEY is missing, ending manual sync.</description>
  </item>
  <item>
    <title>Gateway Empty-Var Fallback</title>
    <link>https://kmail.at/tutorials/langchain-gateway-empty-var-fallback</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-gateway-empty-var-fallback</guid>
    <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.2 falls back to the next credential source when a gateway env var is empty, ending silent auth failures.</description>
  </item>
  <item>
    <title>Coerce Empty Strings to None</title>
    <link>https://kmail.at/tutorials/langchain-empty-string-env-coerce</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-empty-string-env-coerce</guid>
    <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.2 coerces empty gateway env vars to None so LangServe and tracing stay stable in real deployments.</description>
  </item>
  <item>
    <title>Empty Gateway Env Fix</title>
    <link>https://kmail.at/tutorials/langchain-empty-gateway-env-crash</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-empty-gateway-env-crash</guid>
    <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.2 stops crashing when a gateway env var is set to an empty string instead of being unset.</description>
  </item>
  <item>
    <title>Gateway Key from Env Var</title>
    <link>https://kmail.at/tutorials/langchain-gateway-api-key-env</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-gateway-api-key-env</guid>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <description>LANGCHAIN_LANGCHAIN_GATEWAY_API_KEY lets one env var authenticate every LangChain model client against LangSmith Gateway.</description>
  </item>
  <item>
    <title>Tool Schema Cache for Throughput</title>
    <link>https://kmail.at/tutorials/langchain-tool-schema-cache-throughput</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-tool-schema-cache-throughput</guid>
    <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.1 refactors BaseTool token counting to serve the schema from a warm cache, cutting latency and token overhead.</description>
  </item>
  <item>
    <title>Cached Schema Token Counting</title>
    <link>https://kmail.at/tutorials/langchain-token-counting-cache-schema</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-token-counting-cache-schema</guid>
    <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
    <description>count_tokens_approximately now leans on a per-tool tool_call_schema cache, making repeated counting far cheaper in high-frequency loops.</description>
  </item>
  <item>
    <title>Deterministic Token Counting</title>
    <link>https://kmail.at/tutorials/langchain-token-counting-determinism</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-token-counting-determinism</guid>
    <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.1 fixes count_tokens_approximately for BaseTool so identical tool schemas return stable counts every call.</description>
  </item>
  <item>
    <title>Cached Tool Call Schemas</title>
    <link>https://kmail.at/tutorials/langchain-tool-call-schema-cache</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-tool-call-schema-cache</guid>
    <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.1 memoizes each BaseTool tool_call_schema, slashing redundant serialization during high-frequency token counting.</description>
  </item>
  <item>
    <title>Standardized reasoning_effort</title>
    <link>https://kmail.at/tutorials/langchain-reasoning-effort-standard</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-reasoning-effort-standard</guid>
    <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
    <description>LangChain unifies reasoning depth control across Grok, Claude, GPT-4o, and Fireworks with one standard chat-model parameter.</description>
  </item>
  <item>
    <title>reasoning_effort Across Providers: OpenAI, XAI, Fireworks, Anthropic</title>
    <link>https://kmail.at/tutorials/langchain-reasoning-effort-provider-knob</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-reasoning-effort-provider-knob</guid>
    <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
    <description>The langchain-core 1.5.0 release (PR #38887) normalises reasoning_effort into a single interface mapping to xai_reasoning_effort, thinking tokens, and more.</description>
  </item>
  <item>
    <title>reasoning_effort: A Standard Chat Model Parameter</title>
    <link>https://kmail.at/tutorials/langchain-reasoning-effort-unified</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-reasoning-effort-unified</guid>
    <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.5.0 (PR #38887) introduces reasoning_effort as a standard parameter mapping to provider-specific thinking knobs across chat models.</description>
  </item>
  <item>
    <title>init_chat_model: Meta Extra for Provider-Agnostic Model Setup</title>
    <link>https://kmail.at/tutorials/langchain-meta-init-chat-model</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-meta-init-chat-model</guid>
    <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.13 (PR #38786) adds a meta extra so init_chat_model can spin up Meta-backed chat models through the unified ChatModel interface.</description>
  </item>
  <item>
    <title>ToolErrorMiddleware: Intercept and Transform Tool Errors via on_error</title>
    <link>https://kmail.at/tutorials/langchain-toolerror-middleware-callback</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-toolerror-middleware-callback</guid>
    <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.13 adds ToolErrorMiddleware with an on_error callback for logging, transforming, or falling back on tool failures at the infrastructure level.</description>
  </item>
  <item>
    <title>ToolErrorMiddleware: Centralised, Configurable Tool Error Handling</title>
    <link>https://kmail.at/tutorials/langchain-toolerror-middleware-default</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-toolerror-middleware-default</guid>
    <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.14 (PR #38781) intercepts tool errors and wraps them in a structured response, optionally retrying or falling back to a default value.</description>
  </item>
  <item>
    <title>ToolRetryMiddleware: Honouring Interrupts Instead of Swallowing Them</title>
    <link>https://kmail.at/tutorials/langchain-toolretry-interrupt-revocation</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-toolretry-interrupt-revocation</guid>
    <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
    <description>The langchain 1.3.12 bug fix (PR #38722) stops ToolRetryMiddleware from swallowing cancel signals, fixing resource leaks and runaway loops.</description>
  </item>
  <item>
    <title>CacheConfig: TTL-Aware Explicit Prompt Caching</title>
    <link>https://kmail.at/tutorials/langchain-openai-cache-config</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-openai-cache-config</guid>
    <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.5 accepts a cache parameter plus CacheConfig so you control which message blocks stick in cache and for how long.</description>
  </item>
  <item>
    <title>cache_weight: Explicit Prompt Caching in langchain-openai</title>
    <link>https://kmail.at/tutorials/langchain-openai-cache-weight</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-openai-cache-weight</guid>
    <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.5 accepts a cache_weight hint on ChatOpenAI so LangChain wires the right OpenAI caching structure for you.</description>
  </item>
  <item>
    <title>ToolRetryMiddleware: Interrupts Now Propagate Through Retries</title>
    <link>https://kmail.at/tutorials/langchain-toolretry-interrupt-propagate</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-toolretry-interrupt-propagate</guid>
    <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.12 (PR #38722) ensures an interrupt raised during a tool retry loop is honoured instead of being silently swallowed.</description>
  </item>
  <item>
    <title>openai.completions: Explicit Prompt Caching with cache_control</title>
    <link>https://kmail.at/tutorials/langchain-openai-cache-control-explicit</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-openai-cache-control-explicit</guid>
    <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.5 lets you mark stable message blocks as cacheable with cache_control, so OpenAI caches them at the token level and discounts repeated context.</description>
  </item>
  <item>
    <title>init_chat_model: meta Extra and langchain-meta Support</title>
    <link>https://kmail.at/tutorials/langchain-init-chat-model-meta</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-init-chat-model-meta</guid>
    <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
    <description>init_chat_model now supports a meta extra for instantiating langchain-meta backed chat models through one provider-agnostic interface.</description>
  </item>
  <item>
    <title>ChatOpenAI: Explicit Prompt Caching to Cut Latency and Cost</title>
    <link>https://kmail.at/tutorials/langchain-openai-prompt-caching</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-openai-prompt-caching</guid>
    <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.5 adds cache_implicit for explicit prompt caching, surfacing cache hits in additional_kwargs.</description>
  </item>
  <item>
    <title>fix(core): Output Parser Bugs in xml.py and pydantic.py</title>
    <link>https://kmail.at/tutorials/langchain-output-parser-bugfix</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-output-parser-bugfix</guid>
    <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.4.9 adds context-rich error messages and corrects XML continuation-line parsing for edge-case LLM output.</description>
  </item>
  <item>
    <title>XMLOutputParser and PydanticOutputParser Fixes in langchain-core 1.4.9</title>
    <link>https://kmail.at/tutorials/langchain-core-output-parsers</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-core-output-parsers</guid>
    <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.4.9 patches XML continuation-line parsing and surfaces clear ValidationError messages from Pydantic.</description>
  </item>
  <item>
    <title>Citation Metadata in langchain-mistralai: Trace RAG Answers</title>
    <link>https://kmail.at/tutorials/langchain-mistral-citation-metadata</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-mistral-citation-metadata</guid>
    <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-mistralai 1.1.6 promotes Mistral citations to structured AIMessage metadata for traceability and hallucination detection.</description>
  </item>
  <item>
    <title>default_headers: Custom HTTP Header Injection for OpenRouter</title>
    <link>https://kmail.at/tutorials/langchain-openrouter-default-headers</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-openrouter-default-headers</guid>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-openrouter 0.2.6 adds a default_headers parameter to inject custom HTTP headers into every request.</description>
  </item>
  <item>
    <title>ChatMistralAI: Surface Citation Metadata from Chat Responses</title>
    <link>https://kmail.at/tutorials/langchain-mistral-citations-rag</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-mistral-citations-rag</guid>
    <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-mistralai 1.1.6 exposes Mistral citations as structured metadata on the AIMessage for grounded RAG answers.</description>
  </item>
  <item>
    <title>Streaming Claude: content_block_start Now Carries Initial Text</title>
    <link>https://kmail.at/tutorials/langchain-anthropic-streaming-initial-text</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-anthropic-streaming-initial-text</guid>
    <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-anthropic 1.4.8 ensures the first streamed token is captured even when it shares a chunk with the block start marker.</description>
  </item>
  <item>
    <title>ProviderStrategy: strict=True Only for OpenAI-Compatible Models</title>
    <link>https://kmail.at/tutorials/langchain-provider-strategy-strict</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-provider-strategy-strict</guid>
    <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.11 makes bind_tools provider-aware, applying strict=True only where the provider actually supports it.</description>
  </item>
  <item>
    <title>Keep the First Token: content_block_start in Anthropic Streaming</title>
    <link>https://kmail.at/tutorials/langchain-anthropic-content-block-start</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-anthropic-content-block-start</guid>
    <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
    <description>langchain-anthropic 1.4.8 stops dropping the initial text chunk that arrives with the content_block_start event.</description>
  </item>
  <item>
    <title>Parallel Tool Calls via bind_tools</title>
    <link>https://kmail.at/tutorials/langchain-parallel-tools-bind-vienna</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-parallel-tools-bind-vienna</guid>
    <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
    <description>Eliminate the round-trip tax with parallel_tool_calls via bind_tools on the OpenRouter integration, from two round-trips to one.</description>
  </item>
  <item>
    <title>Parallel Tool Calls on bind_tools (July)</title>
    <link>https://kmail.at/tutorials/langchain-parallel-tools-bind-july</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-parallel-tools-bind-july</guid>
    <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    <description>The parallel_tool_calls flag on bind_tools revisited in July, focused on fan-out/fan-in architectures and executing the returned calls.</description>
  </item>
  <item>
    <title>Parallel Tool Calls &amp; Provider Strategy</title>
    <link>https://kmail.at/tutorials/langchain-parallel-tools-provider</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-parallel-tools-provider</guid>
    <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
    <description>The parallel_tool_calls knob plus the ProviderStrategy fix that stops strict=True from leaking to non-OpenAI providers.</description>
  </item>
  <item>
    <title>Parallel Tool Calls on OpenRouter</title>
    <link>https://kmail.at/tutorials/langchain-parallel-tools-openrouter</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-parallel-tools-openrouter</guid>
    <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
    <description>Native parallel_tool_calls=True on the langchain-openrouter integration, with LangChain handling chunk reassembly automatically.</description>
  </item>
  <item>
    <title>Parallel Tool Calls in bind_tools</title>
    <link>https://kmail.at/tutorials/langchain-parallel-tools-bind</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-parallel-tools-bind</guid>
    <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
    <description>Enable parallel_tool_calls=True on bind_tools so your OpenRouter model fires multiple tools in a single response turn.</description>
  </item>
  <item>
    <title>Disallow Any Generics</title>
    <link>https://kmail.at/tutorials/langchain-disallow-any-generics</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-disallow-any-generics</guid>
    <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
    <description>Enforce strict generic typing across LangChain components with the disallow_any_generics flag to catch type-safety bugs at the source.</description>
  </item>
  <item>
    <title>Usage on Every Streaming Chunk</title>
    <link>https://kmail.at/tutorials/langchain-streaming-usage-chunks</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-streaming-usage-chunks</guid>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
    <description>Read cumulative token usage on each AIMessageChunk as it streams, enabling live cost meters and streaming-aware budgets.</description>
  </item>
  <item>
    <title>Memoized Tool Call Schemas</title>
    <link>https://kmail.at/tutorials/langchain-tool-schema-memoization</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-tool-schema-memoization</guid>
    <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
    <description>BaseTool.tool_call_schema is now cached per tool instance in langchain-core 1.4.8 — a quiet performance win for tool-heavy chains.</description>
  </item>
  <item>
    <title>Preserve Usage Tokens in v3 Streaming</title>
    <link>https://kmail.at/tutorials/langchain-preserve-usage-streaming-v3</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/langchain-preserve-usage-streaming-v3</guid>
    <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
    <description>Keep accurate token-usage metadata when you stream LLM responses via the v3 streaming protocol, instead of losing it to the ether.</description>
  </item>
  <item>
    <title>normalize_v1_streamed_tool_calls: The Reliable Stream Fix</title>
    <link>https://kmail.at/tutorials/lc-2026-06-18-normalize-streamed-tool-calls-fix</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-18-normalize-streamed-tool-calls-fix</guid>
    <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.1 / core 1.4.7 standardize streamed tool-call events so AIMessageChunk.tool_calls is always a consistent, non-duplicated list of ToolCall objects.</description>
  </item>
  <item>
    <title>Streaming Tool Calls in Agents: The 1.3.1 Normalization</title>
    <link>https://kmail.at/tutorials/lc-2026-06-17-normalize-streamed-tool-calls-agent</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-17-normalize-streamed-tool-calls-agent</guid>
    <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.1 fixes the v1 stream parser so agentic pipelines get clean, complete ToolCallChunk objects with no duplicates or partial strings.</description>
  </item>
  <item>
    <title>create_agent Type Overloads for Safer Agent Composition</title>
    <link>https://kmail.at/tutorials/lc-2026-06-16-create-agent-overloads</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-16-create-agent-overloads</guid>
    <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.8 adds PEP 484 overloads to create_agent so type checkers infer the exact return type from your tools and model.</description>
  </item>
  <item>
    <title>Pydantic v1 Support Fix in tools/runnable</title>
    <link>https://kmail.at/tutorials/lc-2026-06-15-pydantic-v1-runnable</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-15-pydantic-v1-runnable</guid>
    <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.4.7 fixes serialization, deserialization, and tool-binding for Pydantic v1 schemas so legacy codebases get reliable tool calling.</description>
  </item>
  <item>
    <title>BaseTool Pydantic v1 Compatibility Fix</title>
    <link>https://kmail.at/tutorials/lc-2026-06-14-basetool-pydantic-v1</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-14-basetool-pydantic-v1</guid>
    <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.4.7 fixes Pydantic v1 support in tools/runnable so custom tools build correct schemas on legacy Pydantic setups.</description>
  </item>
  <item>
    <title>Consistent Tool-Call Chunks in the v1 Stream</title>
    <link>https://kmail.at/tutorials/lc-2026-06-13-normalize-streamed-tool-calls-chunks</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-13-normalize-streamed-tool-calls-chunks</guid>
    <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-openai 1.3.1 and core 1.4.7 normalize streamed tool-call chunks so token-by-token output matches non-streamed ToolCall shape.</description>
  </item>
  <item>
    <title>normalize_v1_streamed_tool_calls: Clean Streamed Tool Calls</title>
    <link>https://kmail.at/tutorials/lc-2026-06-12-normalize-streamed-tool-calls</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-12-normalize-streamed-tool-calls</guid>
    <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain-core 1.4.6 fixes how OpenAI v1 streamed tool call deltas are normalized into canonical ToolCall format, killing duplicates and dropped args.</description>
  </item>
  <item>
    <title>ProviderToolSearchMiddleware: Auto-Routed Tool Selection</title>
    <link>https://kmail.at/tutorials/lc-2026-06-11-provider-tool-search</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-11-provider-tool-search</guid>
    <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.7 introduces ProviderToolSearchMiddleware, which routes each query through a provider-native tool search step before the model responds.</description>
  </item>
  <item>
    <title>SummarizationMiddleware: AND-Capable Triggers</title>
    <link>https://kmail.at/tutorials/lc-2026-06-10-summarization-middleware</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-10-summarization-middleware</guid>
    <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
    <description>langchain 1.3.5 adds compound trigger conditions to SummarizationMiddleware so summarization fires only when token count and message count both cross thresholds.</description>
  </item>
  <item>
    <title>dict() is Deprecated: Switch to asdict()</title>
    <link>https://kmail.at/tutorials/lc-2026-06-09-dict-asdict</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-09-dict-asdict</guid>
    <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
    <description>LangChain 1.4.2 deprecates .dict() across all objects in favor of .asdict(), fixing a clash with Python\u2019s builtin dict annotation.</description>
  </item>
  <item>
    <title>_convert_to_message and the Constructor-Envelope Wire Shape</title>
    <link>https://kmail.at/tutorials/lc-2026-06-08-convert-to-message</link>
    <guid isPermaLink="true">https://kmail.at/tutorials/lc-2026-06-08-convert-to-message</guid>
    <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
    <description>LangChain core 1.4.1 fixes message round-tripping so Serializable constructor-envelope payloads deserialize back into Message objects.</description>
  </item>
  </channel>
</rss>
