<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: albe_sf</title>
    <description>The latest articles on DEV Community by albe_sf (@albertomontagnese).</description>
    <link>https://dev.to/albertomontagnese</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3928059%2F8788e7f6-c941-4959-b1cf-18686efc9034.jpg</url>
      <title>DEV Community: albe_sf</title>
      <link>https://dev.to/albertomontagnese</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/albertomontagnese"/>
    <language>en</language>
    <item>
      <title>Stop Copy-Pasting: Claude Artifacts Change the Inner Loop</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Mon, 13 Jul 2026 15:03:15 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/stop-copy-pasting-claude-artifacts-change-the-inner-loop-53d8</link>
      <guid>https://dev.to/albertomontagnese/stop-copy-pasting-claude-artifacts-change-the-inner-loop-53d8</guid>
      <description>&lt;p&gt;The new Artifacts feature in Claude 3.5 Sonnet is the first meaningful change to the core AI-assisted development loop I've seen in a while. It's not just another model claiming a few more benchmark points. It’s a direct response to the friction we all feel, collapsing the tedious cycle of generating, copying, pasting, and context-switching into a single, fluid workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  the old loop is broken
&lt;/h2&gt;

&lt;p&gt;For the last couple of years, the workflow for using an LLM to write code has been the same. You have a chat interface on one screen and your IDE on the other. You write a prompt, get a code block, copy it, and paste it into a local file. You run it, it fails, you copy the error message, and you paste it back into the chat. This back-and-forth is slow and full of friction.&lt;/p&gt;

&lt;p&gt;Every time you switch from the chat to your editor, you break your flow. The model loses the full context of your environment, and you waste time managing two separate sessions. It’s a conversational paradigm bolted onto a creative one, and it feels inefficient because it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  how artifacts create a workspace
&lt;/h2&gt;

&lt;p&gt;Artifacts change this by introducing a dedicated panel next to your conversation. When you ask Claude to generate content that has a visual or interactive representation—like a React component, an SVG diagram, or a single-page website—it appears in this new window. This creates a dynamic workspace where you can see, edit, and build on Claude's output in real time.&lt;/p&gt;

&lt;p&gt;Instead of copying and pasting, you iterate directly on the Artifact. You can ask for changes in the chat, and the rendered output in the Artifacts pane updates immediately. This transforms the interaction from a simple Q&amp;amp;A into a collaborative session. You're no longer just getting snippets; you're building a component inside a live environment that closes the feedback loop between your instructions and the final product. The workflow becomes prompt, preview, iterate—all in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  a practical example
&lt;/h2&gt;

&lt;p&gt;This is most powerful for self-contained visual components. Instead of trying to describe a UI change and hoping the model gets it right, you can see the result instantly. Consider generating a quick diagram for documentation.&lt;/p&gt;

&lt;p&gt;You can ask the model to create a diagram from a description, and it will generate the code and render it as an SVG in the Artifacts window.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;prompt: &lt;span class="s2"&gt;"Create an SVG of a simple database icon with a blue cylinder and a grey base."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model doesn't just return a code block. It generates the SVG code and immediately renders it in the Artifacts panel, providing instant visual feedback. If the blue is the wrong shade, you can just say "make it a lighter blue" and watch it update.&lt;/p&gt;

&lt;p&gt;This is especially effective for web components. You can ask for a React component, and then iterate on the styling or functionality while seeing the live, interactive component right in the workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  what this means for builders
&lt;/h2&gt;

&lt;p&gt;The Artifacts feature is still a preview, and it's not going to replace your local IDE for complex, multi-file applications. But it’s a clear signal of where AI-native development tools are headed. The future is not about better chatbots that write code. It's about integrated environments that collapse the feedback loop between intent and execution.&lt;/p&gt;

&lt;p&gt;For builders, this is a tangible improvement for rapid prototyping and component-level work. It makes the initial, exploratory phase of development faster and more intuitive. It's a step away from conversational AI and toward a truly collaborative work environment. Pay attention to this interaction pattern; it’s likely to become the new standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet" rel="noopener noreferrer"&gt;Introducing Claude 3.5 Sonnet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Grok 4.5 is Here, And It's All About Developer Efficiency</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Fri, 10 Jul 2026 15:03:03 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/grok-45-is-here-and-its-all-about-developer-efficiency-2ga6</link>
      <guid>https://dev.to/albertomontagnese/grok-45-is-here-and-its-all-about-developer-efficiency-2ga6</guid>
      <description>&lt;p&gt;xAI's Grok 4.5 just shipped, and the main takeaway isn't just its performance, but its sharp focus on developer economics. With significantly lower token counts on coding tasks and aggressive pricing, it's a direct challenge to the cost-per-task of established models.&lt;/p&gt;

&lt;h2&gt;
  
  
  what just shipped
&lt;/h2&gt;

&lt;p&gt;xAI released Grok 4.5 on July 8, 2026, positioning it as a direct competitor to other frontier models. The company's founder described it as an “Opus-class model, but faster, more token-efficient and lower cost” than Anthropic's flagship offering. This release is the first since xAI's IPO and is built on their 1.5 trillion parameter V9 foundation model.&lt;/p&gt;

&lt;p&gt;A key detail for developers is the training data. The model includes supplemental training data from Cursor, suggesting a strategic focus on sourcing high-quality, domain-specific data for engineering tasks. While it may not top every single benchmark—internal charts show it trailing Fable and GPT 5.5 on the DeepSWE 1.0 evaluation—it's engineered for practical, real-world development work.&lt;/p&gt;

&lt;h2&gt;
  
  
  the efficiency angle
&lt;/h2&gt;

&lt;p&gt;The most important metric for builders is often not a raw benchmark score, but the cost and latency to complete a task. This is where Grok 4.5 makes its strongest case. On the SWE Bench Pro evaluation, the model reportedly resolves tasks using an average of 15,954 output tokens, which is about 4.2 times fewer than a comparable Opus model.&lt;/p&gt;

&lt;p&gt;This level of token efficiency has direct implications for building agentic systems, where verbose outputs can cause costs to spiral. When your agent is performing multi-step reasoning or code generation, a 4x reduction in token count per step changes the fundamental economics of the system.&lt;/p&gt;

&lt;p&gt;The pricing structure reinforces this focus. At a reported $2 per million input tokens and $6 per million output tokens, the cost is set to be highly competitive. For teams shipping AI features at scale, this combination of lower token usage and competitive pricing is a significant variable.&lt;/p&gt;

&lt;p&gt;Here is an illustrative example of what an API call might look like, following a common pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.x.ai/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$XAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
          "model": "grok-4.5",
          "messages": [
            {
              "role": "system",
              "content": "You are a helpful coding assistant."
            },
            {
              "role": "user",
              "content": "Write a Python function to calculate the Fibonacci sequence up to n, with memoization for efficiency."
            }
          ],
          "temperature": 0.7,
          "max_tokens": 2048
     }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is about making agentic workflows more financially viable and performant enough for production use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  where to use it now
&lt;/h2&gt;

&lt;p&gt;This isn't a paper model or a private beta with a waitlist. Grok 4.5 is available now in the tools many AI-focused engineers already use. It has been integrated as the default model in Grok Build, xAI's own command-line coding tool.&lt;/p&gt;

&lt;p&gt;More broadly, it is also available in the Cursor IDE on all plans. This deep integration into a popular AI-native IDE means you can immediately start evaluating its performance on your own codebase without needing to build custom API integrations. For teams that have adopted Cursor, this is a drop-in replacement that could yield immediate cost and performance benefits.&lt;/p&gt;

&lt;p&gt;The model is, of course, also available through the xAI API for custom applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  the so-what
&lt;/h2&gt;

&lt;p&gt;The release of Grok 4.5 signals a potential shift in the model wars, moving from a singular focus on capability benchmarks to the practicalities of shipping products. For builders, the total-cost-of-task is a critical metric, and token efficiency is the primary lever to manage it. This release makes it clear that xAI is competing on that vector as much as on raw intelligence. It's a pragmatic move for a market that is rapidly maturing beyond demos and into production systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://x.ai/" rel="noopener noreferrer"&gt;xAI News&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>devtools</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Gemma 2 is here. The architectural tweaks are what matter.</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Wed, 08 Jul 2026 15:02:36 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/gemma-2-is-here-the-architectural-tweaks-are-what-matter-477f</link>
      <guid>https://dev.to/albertomontagnese/gemma-2-is-here-the-architectural-tweaks-are-what-matter-477f</guid>
      <description>&lt;p&gt;Google has released Gemma 2, the next version of its open model family, in 9B and 27B parameter sizes. While the performance improvements are notable, with the 27B model offering a competitive alternative to models more than twice its size, the more interesting story for builders is the set of architectural changes under the hood. These modifications directly impact inference efficiency and change the calculus for fine-tuning on custom tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  what is gemma 2?
&lt;/h2&gt;

&lt;p&gt;Gemma 2 is a family of decoder-only, text-to-text large language models. The initial release includes a 9-billion and a 27-billion parameter model, with both pretrained (base) and instruction-tuned variants available. These models are built using similar research and technology as the Gemini models and are designed to run efficiently on hardware like a single NVIDIA H100 GPU or a Google TPU host, which lowers the barrier for deployment.&lt;/p&gt;

&lt;p&gt;The models were trained on a mix of web documents, code, and scientific articles, with the 27B model seeing 13 trillion tokens and the 9B model trained on 8 trillion. They maintain a context length of 8192 tokens, the same as the first generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  architectural shifts that improve efficiency
&lt;/h2&gt;

&lt;p&gt;The most significant changes in Gemma 2 are not about scale but about efficiency. The architecture introduces a hybrid attention mechanism that alternates between local sliding window attention and global attention in different layers. The local attention has a window of 4096 tokens, while the global attention spans the full 8192 token context. This structure allows the model to process long contexts more efficiently than a purely global attention approach.&lt;/p&gt;

&lt;p&gt;Additionally, Gemma 2 incorporates Grouped-Query Attention (GQA). GQA is a known technique for reducing the computational and memory overhead of the attention mechanism during inference, making the model faster and less resource-intensive without a major hit to quality. Other stability-focused features include logit soft-capping, which prevents extreme values during training and generation, and the use of RMSNorm for normalization.&lt;/p&gt;

&lt;h2&gt;
  
  
  getting started with gemma 2
&lt;/h2&gt;

&lt;p&gt;You can access the Gemma 2 models through Hugging Face, Kaggle, and Google AI Studio. For local development, integration with frameworks like PyTorch and TensorFlow via Hugging Face Transformers is straightforward.&lt;/p&gt;

&lt;p&gt;Here is a basic example of how you might load the instruction-tuned 9B model and its tokenizer using &lt;code&gt;transformers&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="c1"&gt;# The specific model identifier from Hugging Face
&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-2-9b-it&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Load the tokenizer and model
# Using a lower precision like bfloat16 can help with memory
&lt;/span&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bfloat16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Prepare the input prompt according to the model's chat template
&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What are the key architectural changes in Gemma 2?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tokenize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;add_generation_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate a response
&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;add_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For teams looking to run models locally, quantized versions are also available, which can significantly reduce the VRAM and memory footprint for inference on consumer hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  the so-what for builders
&lt;/h2&gt;

&lt;p&gt;The release of Gemma 2 is another step in the trend of smaller, more efficient open models that can compete with much larger, proprietary counterparts. The architectural choices—interleaving local and global attention, using GQA—are direct answers to the high cost of inference that plagues many production systems. For engineers and researchers, these models provide a powerful and more accessible base for fine-tuning and building specialized applications. The focus on efficiency means that deploying a custom-tuned, high-performance model is becoming more feasible for teams without access to massive GPU clusters.&lt;/p&gt;

&lt;h2&gt;
  
  
  sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.google/" rel="noopener noreferrer"&gt;Google AI Blog: Gemma 2 is now available to researchers and developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2406.19445" rel="noopener noreferrer"&gt;arXiv: Gemma 2: Improving Open Language Models at a Practical Size&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Cohere's Aya 23 Release: A Practical Look at Open, Multilingual Models</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:03:21 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/coheres-aya-23-release-a-practical-look-at-open-multilingual-models-429e</link>
      <guid>https://dev.to/albertomontagnese/coheres-aya-23-release-a-practical-look-at-open-multilingual-models-429e</guid>
      <description>&lt;p&gt;The open-source AI landscape has a new, serious contender for multilingual tasks. Cohere's release of the Aya 23 family, with 8B and 35B parameter open-weight models, provides a much-needed, high-performance baseline for builders working in the 23 languages it covers. This isn't just another model drop; it's a practical alternative to relying on closed APIs or fine-tuning English-centric models for global applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  what is aya 23
&lt;/h2&gt;

&lt;p&gt;Aya 23 is a family of instruction-tuned, decoder-only transformer models released by Cohere for AI, the company's non-profit research lab. It comes in two sizes: an 8-billion parameter model designed for accessibility and a larger 35-billion parameter version for more complex tasks.&lt;/p&gt;

&lt;p&gt;This release represents a strategic shift from its predecessor, Aya 101, which aimed for breadth across 101 languages. Aya 23 instead focuses on depth, allocating more training capacity to a curated list of 23 languages, including Arabic, Chinese, German, Hindi, Japanese, Spanish, and Vietnamese. The goal is to provide state-of-the-art capabilities for a set of languages that cover roughly half the world's population.&lt;/p&gt;

&lt;p&gt;The models are based on Cohere's Command series and were fine-tuned on the Aya Collection dataset. By releasing the model weights, Cohere allows researchers and developers to inspect and build on top of their work, a move that distinguishes it from fully closed-source offerings.&lt;/p&gt;

&lt;h2&gt;
  
  
  why this matters for builders
&lt;/h2&gt;

&lt;p&gt;For engineers building products for non-English speaking markets, the options have often been limited. You could use a proprietary, closed-source API, which offers high performance but limited customizability and potential lock-in. Or, you could take a powerful open-source but English-centric model and attempt to fine-tune it, with performance often lagging in other languages.&lt;/p&gt;

&lt;p&gt;Aya 23 offers a compelling middle ground. The 8B model, in particular, is designed to be accessible, running on consumer-grade hardware, which significantly lowers the barrier to entry for developers and researchers. The 35B model provides a more powerful option that benchmarks show outperforms other popular open models like Gemma and Mistral on a range of multilingual tasks.&lt;/p&gt;

&lt;p&gt;This enables more robust applications in areas like multilingual customer support, content moderation, and language learning tools without starting from scratch. Having a strong, open baseline model that is already pre-trained on a diverse set of languages saves significant computational cost and data sourcing effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  getting started and considerations
&lt;/h2&gt;

&lt;p&gt;You can access the models on Hugging Face. The weights are available under a CC-BY-NC license, which is permissive for research but has non-commercial restrictions. Here's a quick example of how you might run inference with the 8B model using the &lt;code&gt;transformers&lt;/code&gt; library.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CohereForAI/aya-23-8B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CohereForAI/aya-23-8B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Format the prompt using the ChatML template
# Each message is a dictionary with 'role' and 'content'
&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a helpful assistant.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Wie ist das Wetter heute in Berlin?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;input_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tokenize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;add_generation_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate a response
&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things to keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Hardware:&lt;/strong&gt; While the 8B model is more accessible, the 35B version still requires significant computational resources. Quantization will likely be necessary for running it on local or consumer-grade hardware.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Licensing:&lt;/strong&gt; The Creative Commons non-commercial license means you need to consider your use case. It's ideal for research, experimentation, and internal tools, but commercial applications may require a different approach.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Evaluation:&lt;/strong&gt; Benchmarks are useful, but always evaluate the model's performance on your specific tasks and target languages. Performance can vary, and what works for a general benchmark may not hold for your specific domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  the takeaway
&lt;/h2&gt;

&lt;p&gt;The release of Aya 23 is a meaningful step toward democratizing high-performance AI beyond English. It provides builders with a powerful, open set of tools to create more globally relevant and linguistically inclusive applications. For teams that have been hampered by the cost of proprietary APIs or the performance limitations of English-first open models, Aya 23 is a development worth investigating.&lt;/p&gt;

&lt;h2&gt;
  
  
  sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2405.13531" rel="noopener noreferrer"&gt;Aya 23: Open Weight Releases to Further Multilingual Progress (Technical Report)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/CohereForAI" rel="noopener noreferrer"&gt;Cohere For AI on Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/CohereForAI/aya-23-8B" rel="noopener noreferrer"&gt;https://huggingface.co/CohereForAI/aya-23-8B&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Text-to-SQL is still brittle. Snowflake's Cortex Sense is a new take.</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Fri, 03 Jul 2026 15:03:00 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/text-to-sql-is-still-brittle-snowflakes-cortex-sense-is-a-new-take-2ahj</link>
      <guid>https://dev.to/albertomontagnese/text-to-sql-is-still-brittle-snowflakes-cortex-sense-is-a-new-take-2ahj</guid>
      <description>&lt;p&gt;Natural language to SQL has always been a brittle last mile for enterprise AI. Snowflake's new Cortex Sense proposes a different approach: instead of you manually defining a semantic layer, it automatically builds a working model of your business by observing how analysts and tools already query your data. This moves the bottleneck from manual curation to automated inference, tackling the context problem head-on.&lt;/p&gt;

&lt;h2&gt;
  
  
  the accuracy floor
&lt;/h2&gt;

&lt;p&gt;The core problem with text-to-SQL is context, not syntax. Large language models are perfectly capable of writing SQL. What they lack is the deep, implicit knowledge of your business encoded in your database schema: which &lt;code&gt;user_id&lt;/code&gt; joins to which &lt;code&gt;account_id&lt;/code&gt;, what a "power user" actually means, and which cryptic enum value signifies a churned customer.&lt;/p&gt;

&lt;p&gt;Without this semantic grounding, agent accuracy is predictably low. Internal Snowflake data and independent measurements from Anthropic both put the baseline accuracy for text-to-SQL agents without a context layer at around 21-25%. This is simply not reliable enough for production business intelligence. The traditional answer has been a manually curated semantic layer, but this creates its own bottleneck and struggles to keep pace as the business changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  mining the semantic layer
&lt;/h2&gt;

&lt;p&gt;Cortex Sense is designed to solve this by creating the semantic layer automatically. Instead of being a static catalog of tables you maintain, it builds a working model of your business by observing the signals your organization already produces.&lt;/p&gt;

&lt;p&gt;This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries your analysts have run in the past.&lt;/li&gt;
&lt;li&gt;Models defined in your transformation tools.&lt;/li&gt;
&lt;li&gt;Metrics that already live in your BI dashboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This context can be ingested via Snowflake Horizon Connectors, creating a dynamic understanding of your data landscape. The goal is to give an AI agent the same institutional knowledge a human analyst builds over time by observing how data is actually used in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  from naive to contextual queries
&lt;/h2&gt;

&lt;p&gt;The difference in output is significant. A naive LLM might generate a syntactically correct query that fails because it doesn't understand your business's specific conventions. An agent grounded by Cortex Sense can translate vague business language into precise SQL.&lt;/p&gt;

&lt;p&gt;Consider a request like, "Show me our top 10 customers in the northeast."&lt;/p&gt;

&lt;p&gt;A naive model might produce something that looks right but fails on your schema.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Naive LLM attempt&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
  &lt;span class="n"&gt;customer_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order_value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;total_spend&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;region&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'northeast'&lt;/span&gt; &lt;span class="c1"&gt;-- Fails if region is an enum or stored in another table&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An agent with the mined context from Cortex Sense understands the necessary joins and filter logic because it has seen similar queries before.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Agent with Cortex Sense context&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
  &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;total_spend&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;app_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;app_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customers&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;app_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;locations&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;location_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;state_code&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'NY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'MA'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'VT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'NH'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ME'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'CT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'RI'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'PA'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'NJ'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;-- Contextual understanding of 'northeast'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  the risk of being confidently wrong
&lt;/h2&gt;

&lt;p&gt;This automated approach is not without risk. The source material—past queries and BI dashboards—may contain errors, outdated logic, or inefficient patterns. A system that automatically mines this context could potentially learn and propagate bad habits, being confidently wrong without human oversight.&lt;/p&gt;

&lt;p&gt;This is the fundamental trade-off. You exchange the slow, manual work of building a semantic layer for the speed and scale of automation, but you also accept the risk that the automated system will inherit the flaws of its source data. For any team implementing this, building in verification steps and human-in-the-loop review will be critical.&lt;/p&gt;

&lt;p&gt;This is a move away from brute-force LLM intelligence and toward systems that ground AI in the lived reality of an organization's data culture. For builders, it’s a reminder that the most valuable context for an agent isn't in a prompt, but in the years of query logs you already have. It is an approach worth watching to see if automated semantic modeling can finally solve the text-to-SQL problem at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.snowflake.com/" rel="noopener noreferrer"&gt;Cortex Sense for Enterprise AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>Google's V2A is the other half of generative video</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Wed, 01 Jul 2026 15:02:34 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/googles-v2a-is-the-other-half-of-generative-video-4f16</link>
      <guid>https://dev.to/albertomontagnese/googles-v2a-is-the-other-half-of-generative-video-4f16</guid>
      <description>&lt;p&gt;The flood of generative video models has one glaring omission: sound. Most of what we've seen so far are silent films. Google DeepMind's new video-to-audio (V2A) technology is the first serious step toward solving the other half of the problem, generating rich, synchronized soundscapes directly from video pixels and natural language prompts.&lt;/p&gt;

&lt;p&gt;This is more than just adding stock sound effects. V2A represents a move toward truly multimodal generation, where the audio is contextually aware of the visual action, tone, and characters.&lt;/p&gt;

&lt;h2&gt;
  
  
  what v2a does
&lt;/h2&gt;

&lt;p&gt;At its core, V2A technology analyzes video footage and, guided by a text prompt, generates a corresponding soundtrack. This can include sound effects, ambient noise, and even musical scores that match the video's mood and pacing. The system is designed to be paired with video generation models, like Google's own Veo, to create a complete audiovisual output from a single set of prompts.&lt;/p&gt;

&lt;p&gt;Crucially, it's not limited to AI-generated clips. The technology can be applied to existing footage, including archival material and silent films, opening up significant creative possibilities. The system can generate a potentially unlimited number of audio tracks for a single video, allowing creators to experiment with different sonic interpretations.&lt;/p&gt;

&lt;h2&gt;
  
  
  how it works: diffusion models for audio
&lt;/h2&gt;

&lt;p&gt;Google's team settled on a diffusion-based model for V2A after finding it delivered the most compelling and realistic results for synchronizing audio and video. The process starts by encoding the input video into a compressed representation. From there, the diffusion model iteratively refines audio from random noise, guided by both the compressed video data and the text prompts.&lt;/p&gt;

&lt;p&gt;This allows the model to generate audio that is semantically linked to the visuals. To improve the quality and specificity, the model was also trained on AI-generated annotations that describe sounds in detail, along with dialogue transcripts. The final output is an audio waveform that can be merged directly with the video.&lt;/p&gt;

&lt;p&gt;A prompt for this system isn't just a simple description. It can be a layered command to guide the generation, including negative prompts to steer the model away from undesired sounds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"video_input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"path/to/scene_042.mp4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"positive_prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Cinematic, thriller, horror film, music, tension, ambience, footsteps on concrete"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"negative_prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"upbeat music, birds chirping, dialogue"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This level of control is key. It moves beyond simple foley work and into genuine sound design, directed by the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  the builder implications
&lt;/h2&gt;

&lt;p&gt;For engineers and builders, V2A is a signal of where multimodal systems are heading. The immediate application is for content creation, streamlining post-production by generating synchronized sound effects and scores. But the underlying technology has broader implications.&lt;/p&gt;

&lt;p&gt;Imagine game development environments where ambient audio is generated in real-time based on the player's actions and the visual state of the world. Or consider synthetic data generation for training more robust robotics and agentic systems; a model that understands the relationship between an action (a glass falling) and its sound can build a more complete world model.&lt;/p&gt;

&lt;p&gt;However, there are acknowledged limitations. The audio quality is dependent on the input video quality; visual artifacts and distortions in the source video can negatively impact the final sound. Furthermore, lip-syncing for dialogue remains a significant challenge, as the video model and audio model may not be perfectly aligned.&lt;/p&gt;

&lt;h2&gt;
  
  
  the takeaway
&lt;/h2&gt;

&lt;p&gt;Most of the industry has been focused on the visual half of generative media. V2A is a strong reminder that audio is not an afterthought. For builders, the core takeaway is the architectural pattern: using diffusion models conditioned on both visual embeddings and text prompts to generate a separate but synchronized modality. As video models become commoditized, the ability to generate the complete, multimodal experience will be the real differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/discover/blog/generating-audio-for-video/" rel="noopener noreferrer"&gt;Google DeepMind: Generating audio for video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The AI Paradox: We're Coding Faster, But Not Shipping Faster</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Mon, 29 Jun 2026 15:04:16 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/the-ai-paradox-were-coding-faster-but-not-shipping-faster-3id5</link>
      <guid>https://dev.to/albertomontagnese/the-ai-paradox-were-coding-faster-but-not-shipping-faster-3id5</guid>
      <description>&lt;p&gt;AI tools have made individual developers quantifiably faster at writing code. But a new report from GitLab surfaces a paradox that many of us are feeling in our daily stand-ups: overall software delivery has not accelerated. The bottleneck has simply moved downstream.&lt;/p&gt;

&lt;p&gt;The 2026 AI Accountability Report highlights this structural imbalance. While 78% of developers report they are coding faster with AI assistance, 79% say the overall software delivery process has not sped up at the same pace. The conclusion is clear—generating code was never the real bottleneck. Validating it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  the new bottleneck is review
&lt;/h2&gt;

&lt;p&gt;The report finds that a significant majority of developers—85%—agree that AI has shifted the bottleneck from writing code to reviewing and validating it. This isn't surprising. AI-generated code, while often syntactically correct and functionally plausible, requires a different level of scrutiny. It excels at local, well-defined problems but can miss the larger architectural context, introduce subtle bugs, or generate solutions that are clever but unmaintainable.&lt;/p&gt;

&lt;p&gt;This creates a new category of engineering work: verifying large volumes of 'almost right' code. The cognitive load of reviewing AI output, which can lack clear intent or rationale, is significant. Furthermore, the report points to a growing accountability gap. When a production incident occurs, only about a third of organizations are confident they can determine if AI-generated code was the cause. This challenge is compounded by fragmented toolchains and the inherent difficulty in distinguishing human-written code from AI-generated code.&lt;/p&gt;

&lt;h2&gt;
  
  
  adapting your workflow for the validation phase
&lt;/h2&gt;

&lt;p&gt;Simply generating more code faster doesn't help if it piles up in pull requests. The focus for engineering teams needs to shift from pure generation to building a robust validation layer. This means treating the output of a code assistant with the same professional skepticism as the output of a junior developer on their first day.&lt;/p&gt;

&lt;p&gt;Your team's definition of 'done' must now include a more rigorous validation strategy that accounts for AI-generated code. One practical approach is to enforce that any non-trivial AI-generated function is accompanied by a comprehensive set of test cases, which can also be bootstrapped with AI. The goal is to shift the burden of proof onto the code itself.&lt;/p&gt;

&lt;p&gt;Consider this common scenario. An engineer uses an AI assistant to generate a Python function to process user data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ai_generated_code.py
&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Extracts username and email from a string.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;username_match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user: (\w+)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;email_match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;email: ([\w\.-]+@[\w\.-]+)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;username_match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;username_match&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;email_match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;email_match&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# This is where subtle bugs hide.
&lt;/span&gt;        &lt;span class="c1"&gt;# What if only one is present? The function returns a partial tuple.
&lt;/span&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The generated code looks reasonable. But the review process should immediately focus on edge cases. What if the input is malformed? What if only one field is present? A human reviewer, or an AI-powered test generation tool, should produce tests that expose the function's brittleness.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# test_ai_generated_code.py
&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;unittest&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;.ai_generated_code&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;extract_user_info&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TestExtractUserInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unittest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TestCase&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_valid_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user: jdoe email: jdoe@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assertEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;jdoe&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;jdoe@example.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_missing_username&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email: jdoe@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assertIsNone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_missing_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user: jdoe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assertIsNone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_empty_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assertIsNone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_no_matches&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;some other unrelated text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assertIsNone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;extract_user_info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This discipline of 'trust but verify' is critical. The productivity gain from AI isn't just writing the initial function; it's about creating a system where code generation and code validation happen in tandem.&lt;/p&gt;

&lt;h2&gt;
  
  
  what to do this week
&lt;/h2&gt;

&lt;p&gt;The era of being impressed by raw code generation is over. The real work is in building systems that can manage, validate, and govern the output. The GitLab report is a signal to stop measuring productivity in lines of code generated and start focusing on the end-to-end delivery cycle.&lt;/p&gt;

&lt;p&gt;As builders, our job has shifted. We are not just writing code; we are designing and overseeing systems where a significant portion of the code is written by non-human collaborators. The next wave of productivity gains will come from tools and processes that address the review bottleneck, improve traceability, and ensure that faster coding actually translates into faster, more reliable shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.infoq.com/" rel="noopener noreferrer"&gt;AI Tools Accelerates Coding, but Not Overall Software Delivery, GitLab Research Finds&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your RAG Is Underperforming Because Your Embeddings Are Too Simple</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Fri, 26 Jun 2026 15:03:11 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/your-rag-is-underperforming-because-your-embeddings-are-too-simple-5fdj</link>
      <guid>https://dev.to/albertomontagnese/your-rag-is-underperforming-because-your-embeddings-are-too-simple-5fdj</guid>
      <description>&lt;p&gt;Most production RAG systems are built on a simple premise: convert documents into single vectors and find the ones closest to a query vector. This works for simple documents, but fails on the messy, multi-aspect data that defines enterprise reality. Cohere's Compass is a new embedding model designed for this specific problem, and it suggests a necessary evolution in how we build retrieval systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  the single-vector problem
&lt;/h2&gt;

&lt;p&gt;Standard embedding models, including powerful ones like Cohere's own Embed v3, map an entire document to a single point in semantic space. This is a lossy compression. If a document contains multiple distinct concepts—like an invoice with a specific sender, due date, and line items—the resulting vector is an average of all those concepts. The relationships between them are lost.&lt;/p&gt;

&lt;p&gt;This leads to retrieval errors that are painfully familiar to anyone who has shipped a RAG product. A search for a "red T-shirt" might return "blue and yellow jeans" because the vector for colors is muddled with the vector for clothing type. In an enterprise context, a query for an invoice from a specific person might fail because the contextual link between the sender and the attached document was severed during the chunking and embedding process.&lt;/p&gt;

&lt;p&gt;To compensate, engineers build brittle, complex classification layers and metadata filters on top of the vector search. This is a workaround, not a solution. It treats the symptom—poor retrieval quality—instead of the underlying disease: an embedding model that doesn't understand the structure of your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  multi-aspect embeddings as a solution
&lt;/h2&gt;

&lt;p&gt;Compass is designed to handle this multi-aspect data directly. Instead of feeding it a raw text chunk, you provide a JSON document that preserves the data's inherent structure. The model then creates a multi-aspect representation that can be stored in any vector database, capturing the relationships between the different concepts.&lt;/p&gt;

&lt;p&gt;For example, a traditional RAG pipeline might index an email and its PDF attachment as two separate, unrelated chunks. The crucial context—that this specific PDF was sent by a particular person at a specific time—is lost. The Compass workflow uses an SDK to parse the email and its attachments into a single, structured JSON object. This JSON is then passed to the embedding model, which generates an output that understands the document's internal relationships.&lt;/p&gt;

&lt;p&gt;This approach moves the complexity from post-retrieval filtering into the embedding model itself, where it can be handled more effectively. It allows for more precise, context-aware data retrieval without the need for manual classification layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  what this looks like in practice
&lt;/h2&gt;

&lt;p&gt;The workflow involves using a dedicated SDK to prepare and index your data. While the full system is in private beta, the open-source Python SDK shows the intended structure. You would use a parser client to convert your raw files into the structured JSON format, and then an index client to handle the embedding and storage.&lt;/p&gt;

&lt;p&gt;Here is a conceptual look at how you might use the Python client to index documents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cohere_compass.clients.compass&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CompassClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cohere_compass.clients.parser&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CompassParserClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cohere_compass.models.config&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MetadataConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MetadataStrategy&lt;/span&gt;

&lt;span class="c1"&gt;# Configuration for your Compass instance
&lt;/span&gt;&lt;span class="n"&gt;COMPASS_API_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;YOUR_COMPASS_URL&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;PARSER_API_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;YOUR_PARSER_URL&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;BEARER_TOKEN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;YOUR_API_TOKEN&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Use the parser client to convert raw files into structured JSON
# This would point to a directory of your raw PDFs, DOCX, etc.
&lt;/span&gt;&lt;span class="n"&gt;parser_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CompassParserClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parser_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PARSER_API_URL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# You can define strategies for how metadata is extracted and handled
&lt;/span&gt;&lt;span class="n"&gt;metadata_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MetadataConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;metadata_strategy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;MetadataStrategy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AUTO&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;parsed_docs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parser_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse_folder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./path/to/your/data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;metadata_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;metadata_config&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Use the main client to create an index and add the parsed documents
&lt;/span&gt;&lt;span class="n"&gt;compass_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CompassClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;index_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;COMPASS_API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="n"&gt;bearer_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;BEARER_TOKEN&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;index_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enterprise-document-index&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;compass_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# The parsed_docs object contains the structured data ready for the 
# multi-aspect embedding model.
&lt;/span&gt;&lt;span class="n"&gt;compass_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_documents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;parsed_docs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structured process ensures the model receives the rich, multi-aspect context that single-vector embeddings would otherwise discard.&lt;/p&gt;

&lt;h2&gt;
  
  
  the so-what for builders
&lt;/h2&gt;

&lt;p&gt;The key takeaway is that the foundation of your RAG system—the retrieval model—deserves more attention. Simply using the largest, most powerful generative model won't fix a system that retrieves irrelevant documents. The future of enterprise AI isn't a single, monolithic model but a suite of specialized tools for specific jobs.&lt;/p&gt;

&lt;p&gt;For builders working with complex, structured data, this means evaluating and adopting embedding models that are purpose-built for that data. A model like Compass, designed for multi-aspect retrieval, can be the component that elevates a system from a proof-of-concept to a production-grade tool that delivers genuinely relevant results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cohere.com/" rel="noopener noreferrer"&gt;https://cohere.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>python</category>
    </item>
    <item>
      <title>The Vulnerability Bottleneck Just Shifted. OpenAI's GPT-5.5-Cyber Is Why.</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Wed, 24 Jun 2026 15:02:31 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/the-vulnerability-bottleneck-just-shifted-openais-gpt-55-cyber-is-why-1555</link>
      <guid>https://dev.to/albertomontagnese/the-vulnerability-bottleneck-just-shifted-openais-gpt-55-cyber-is-why-1555</guid>
      <description>&lt;p&gt;The bottleneck in software security has officially moved. For years, the hard part was finding vulnerabilities. Now, with frontier models accelerating discovery, the real challenge is patching the deluge of identified bugs. OpenAI's release of GPT-5.5-Cyber is a direct response to this new reality, aiming to automate not just detection, but remediation.&lt;/p&gt;

&lt;p&gt;This isn't just another model release. It's a targeted tool aimed at a specific, high-stakes engineering workflow. It suggests a future where specialized AI agents manage the lifecycle of a security flaw, from discovery and validation to patch generation and testing. For engineers, this changes the nature of security work from manual triage to overseeing automated remediation pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  what is gpt-5.5-cyber?
&lt;/h2&gt;

&lt;p&gt;GPT-5.5-Cyber is a specialized model OpenAI describes as its "strongest model yet for finding and helping patch software vulnerabilities." Released as part of the company's Daybreak initiative, its purpose is to analyze large codebases to identify security issues, validate them in a controlled environment, and then develop and test patches.&lt;/p&gt;

&lt;p&gt;This isn't a general-purpose chatbot. It’s a focused system designed to reason deeply about code and potential attack paths. OpenAI states the model can sustain analysis across large codebases, a task that has historically been a significant challenge for automated tooling. The goal is to move beyond simply flagging potential issues, which often creates more noise than signal for busy maintainers.&lt;/p&gt;

&lt;p&gt;Alongside the model, OpenAI is updating its Codex Security plugin. This tool is designed to integrate the model's capabilities directly into the developer workflow. It can run deep scans, review recent changes, and generate reports that include severity, code locations, validation evidence, and remediation guidance. The plugin can also triage findings from existing scanners and bug bounty reports to help teams clear their vulnerability backlogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  why it matters: the shift from finding to fixing
&lt;/h2&gt;

&lt;p&gt;The context for this release is critical. Frontier models from labs like OpenAI and Anthropic are already being used to find security flaws at an accelerated rate. This has created an imbalance: the rate of vulnerability discovery is outpacing the human capacity to verify, triage, and patch them. The bottleneck is no longer discovery; it's remediation.&lt;/p&gt;

&lt;p&gt;To address this, OpenAI has partnered with Trail of Bits on an initiative called "Patch the Planet." The aim is to apply this new tooling to secure critical open-source projects. The initial list of participants includes foundational projects like cURL, Python, the Go project, Sigstore, and NATS Server. This is a direct acknowledgment that the health of the entire software ecosystem depends on the security of these shared dependencies.&lt;/p&gt;

&lt;p&gt;For builders, this signals a major shift. Security work becomes less about manual code auditing and more about managing a fleet of AI agents that are constantly scanning and proposing patches. The core engineering skill becomes evaluating, testing, and approving AI-generated fixes, rather than writing them from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  integrating automated patching
&lt;/h2&gt;

&lt;p&gt;While the specifics of the GPT-5.5-Cyber API are not yet public, we can infer the workflow from the Codex Security plugin's described capabilities. A typical integration might involve setting up a CI/CD pipeline that triggers the plugin on every commit or pull request.&lt;/p&gt;

&lt;p&gt;Here’s a conceptual configuration for a security scan in a CI pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/security_scan.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Codex&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Security&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Scan'&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;scan&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout code&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run OpenAI Codex Security Plugin&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai/codex-security-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="c1"&gt;# Scan recent changes instead of the full codebase for PRs&lt;/span&gt;
          &lt;span class="na"&gt;scan_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;delta'&lt;/span&gt;
          &lt;span class="c1"&gt;# Fail the check if critical vulnerabilities are found&lt;/span&gt;
          &lt;span class="na"&gt;fail_on_severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;critical'&lt;/span&gt;
          &lt;span class="c1"&gt;# Automatically generate patches for review&lt;/span&gt;
          &lt;span class="na"&gt;generate_patches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This workflow automates the discovery process and tees up the remediation step. The key is that it doesn't just produce a list of CVEs. It provides a proposed patch, grounded in the context of the codebase, ready for a human engineer to review and approve. This fundamentally changes the economics of fixing vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  the so-what
&lt;/h2&gt;

&lt;p&gt;The release of GPT-5.5-Cyber is more than a product update. It's an indicator of where the entire field of AI-assisted software engineering is headed. We are moving from assistive tools (autocomplete, chatbots) to agentic systems that can take ownership of complex, multi-step tasks like vulnerability remediation.&lt;/p&gt;

&lt;p&gt;The challenge for us as builders is to adapt. We need to develop the skills and infrastructure to manage these agents effectively. This means building robust testing and validation pipelines for AI-generated code, and learning to trust, but verify, the output of these powerful new systems. The era of the human-in-the-loop security agent is here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thehackernews.com/2026/06/openai-expands-daybreak-with-gpt-55.html" rel="noopener noreferrer"&gt;OpenAI Expands Daybreak With GPT-5.5-Cyber to Help Defenders Patch Security Flaws&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>machinelearning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Snowflake is Bringing the AI Factory to Your Data Warehouse</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Mon, 22 Jun 2026 15:02:19 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/snowflake-is-bringing-the-ai-factory-to-your-data-warehouse-1kp0</link>
      <guid>https://dev.to/albertomontagnese/snowflake-is-bringing-the-ai-factory-to-your-data-warehouse-1kp0</guid>
      <description>&lt;p&gt;The wall between the data warehouse and the AI development environment is coming down. Snowflake’s recent platform announcements aim to make your data cloud the default place to build and run enterprise AI, not just the place where your data sits.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI functions directly in SQL
&lt;/h2&gt;

&lt;p&gt;The most accessible entry point into Snowflake's AI stack is the expansion of Cortex AI functions. These are SQL-callable functions that give analysts and engineers direct access to large language models from providers like OpenAI, Anthropic, and Meta from within a standard query. The key is that this happens inside Snowflake's secure perimeter, eliminating the need to move sensitive data to an external service for inference.&lt;/p&gt;

&lt;p&gt;Functions like &lt;code&gt;SENTIMENT&lt;/code&gt;, &lt;code&gt;SUMMARIZE&lt;/code&gt;, and &lt;code&gt;TRANSLATE&lt;/code&gt; handle common unstructured data tasks. For more complex needs, &lt;code&gt;AI_COMPLETE&lt;/code&gt; provides general access for reasoning and custom prompts, while &lt;code&gt;AI_EXTRACT&lt;/code&gt; can pull structured fields from documents. This approach allows teams to enrich data and automate parts of their pipelines using familiar SQL workflows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Find all support tickets with negative feedback&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
  &lt;span class="n"&gt;ticket_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;customer_feedback&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;SNOWFLAKE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CORTEX&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SENTIMENT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer_feedback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;feedback_sentiment&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
  &lt;span class="n"&gt;support_tickets&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
  &lt;span class="n"&gt;feedback_sentiment&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This isn't just about convenience. It represents a shift in operational efficiency for tasks like sentiment analysis, entity extraction, and content classification.&lt;/p&gt;

&lt;h2&gt;
  
  
  A unified dev experience
&lt;/h2&gt;

&lt;p&gt;Beyond simple SQL functions, Snowflake is building a more integrated development environment. The introduction of Snowflake Notebooks, now in public preview, provides a single interface for Python, SQL, and Markdown. This environment is natively integrated with the rest of the platform, including Snowpark ML for model development, Streamlit for building data apps, and Cortex AI for LLM access.&lt;/p&gt;

&lt;p&gt;The goal is to shorten the path from prototype to production. By combining tools for data pipelines (like Dynamic Tables and Snowpipe Streaming) with a native notebook experience, developers can build and manage both the data transformations and the AI models in one place. Over 2,900 customers are already using Dynamic Tables to manage production-grade data pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The move toward agents and observability
&lt;/h2&gt;

&lt;p&gt;The highest level of abstraction in the new tooling comes with Cortex Agents. These are designed to handle multi-step, autonomous workflows that can reason across enterprise data and connect with external tools. The platform also introduced Snowflake Intelligence, a natural language interface for business users to ask complex questions without writing SQL.&lt;/p&gt;

&lt;p&gt;To manage this complexity, new observability features are also part of the release. Snowflake Trail, for instance, offers telemetry and distributed tracing to give developers visibility into how code executes within the platform. This becomes critical as applications move from simple queries to multi-step agentic workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  what this means for builders
&lt;/h2&gt;

&lt;p&gt;The center of gravity for AI development is shifting. Instead of moving massive datasets to external compute, the tooling is maturing to bring the compute and the development lifecycle directly to the data. For engineers and data scientists, this means spending less time on infrastructure setup and data movement, and more time building within a governed and secure environment. It makes the data cloud a more active participant in building AI products, rather than a passive repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.snowflake.com/" rel="noopener noreferrer"&gt;https://www.snowflake.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>devtools</category>
      <category>python</category>
    </item>
    <item>
      <title>Gemma 2's Architecture: More Performance from Less Model</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Fri, 19 Jun 2026 15:02:16 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/gemma-2s-architecture-more-performance-from-less-model-3moc</link>
      <guid>https://dev.to/albertomontagnese/gemma-2s-architecture-more-performance-from-less-model-3moc</guid>
      <description>&lt;p&gt;Google's new Gemma 2 models are a strong signal for where open-source AI is heading. The 27B parameter model delivers performance competitive with models more than twice its size, and the smaller variants punch well above their weight class. This isn't just about a larger training dataset; it’s the result of specific, practical architectural changes that prioritize efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  a hybrid attention mechanism
&lt;/h2&gt;

&lt;p&gt;The core of any transformer is the attention mechanism, but standard self-attention has a quadratic complexity that makes it a computational bottleneck. Gemma 2 addresses this by not committing to just one attention strategy. Instead, it alternates between two types in its layers: local sliding window attention and full global attention.&lt;/p&gt;

&lt;p&gt;The local attention layers use a sliding window of 4096 tokens. This allows the model to efficiently process immediate context. Interleaved with these are global attention layers that span the full 8192 token context length. This hybrid approach gives the model both the efficiency of local attention and the comprehensive context awareness of global attention, without paying the full quadratic cost at every single layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  smarter inference and stability
&lt;/h2&gt;

&lt;p&gt;Beyond the hybrid attention, Gemma 2 incorporates several other known techniques to improve performance and efficiency. One of the most significant is Grouped-Query Attention (GQA). Instead of each query head having its own key and value heads, GQA allows multiple query heads to share a single key/value set. This reduces the memory bandwidth required during inference and speeds up generation. The 9B and 27B models both use GQA, while the smallest 2B model uses Multi-Query Attention (MQA), a more aggressive variant.&lt;/p&gt;

&lt;p&gt;Training for the smaller models also got a strategic update. The 2B and 9B models were trained using knowledge distillation from a larger, more capable teacher model rather than just standard next-token prediction. This allows the smaller models to learn more nuanced patterns, leading to better performance for their size. Other stability-focused changes include using a hybrid of post-normalization and pre-normalization with RMSNorm and applying logit soft-capping to prevent instability during training.&lt;/p&gt;

&lt;h2&gt;
  
  
  what this means for builders
&lt;/h2&gt;

&lt;p&gt;The practical takeaway is that state-of-the-art open models are becoming more accessible. The efficiency gains mean you can run a model like Gemma 2 27B on a single NVIDIA H100 GPU or a comparable TPU host, reducing deployment costs. The smaller models are designed to be efficient enough for on-device and consumer-grade hardware.&lt;/p&gt;

&lt;p&gt;For builders, this lowers the barrier to entry for experimenting with and deploying high-quality open models. You can get started with a powerful instruction-tuned model locally using tools like Ollama.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run gemma2:27b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This trend toward architectural efficiency means the performance floor for open models is rising quickly. We are getting more intelligence per parameter, which is a more sustainable and ultimately more useful direction than simply chasing parameter counts.&lt;/p&gt;

&lt;p&gt;The release of Gemma 2 shows that the path forward for open models isn't just about scaling up. It's about clever architectural synthesis—combining proven techniques like sliding window attention, GQA, and knowledge distillation to create models that are both powerful and practical to run. For engineers building on top of these systems, this is a welcome and important shift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://arxiv.org/abs/2406.16854" rel="noopener noreferrer"&gt;Gemma 2: Improving Open Language Models at a Practical Size (Technical Report)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://huggingface.co/collections/google/gemma-2-release-667d73981872114f1eeb3a15" rel="noopener noreferrer"&gt;Gemma 2 on Hugging Face&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Claude 3.5 Sonnet Isn't Just an Upgrade. It's a New Baseline.</title>
      <dc:creator>albe_sf</dc:creator>
      <pubDate>Wed, 17 Jun 2026 15:03:14 +0000</pubDate>
      <link>https://dev.to/albertomontagnese/claude-35-sonnet-isnt-just-an-upgrade-its-a-new-baseline-27be</link>
      <guid>https://dev.to/albertomontagnese/claude-35-sonnet-isnt-just-an-upgrade-its-a-new-baseline-27be</guid>
      <description>&lt;p&gt;Anthropic just reset the price-to-performance curve for frontier models. The new Claude 3.5 Sonnet is not an incremental update; it delivers intelligence exceeding the previous top-tier Claude 3 Opus, but at twice the speed and a fraction of the cost. This isn't just a new model—it's a new baseline for what you should expect from a workhorse AI, especially for complex coding and agentic tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  what changed: flagship intelligence at mid-tier cost
&lt;/h2&gt;

&lt;p&gt;The key takeaway is the compression of the intelligence-speed-cost tradeoff. Claude 3.5 Sonnet outperforms Claude 3 Opus on multiple graduate-level reasoning and coding proficiency benchmarks, including GPQA and HumanEval. But it's priced at the original Sonnet's rate: $3 per million input tokens and $15 per million output tokens.&lt;/p&gt;

&lt;p&gt;For builders, the most significant metric comes from an internal agentic coding evaluation. Given a natural language description of a bug or feature, Claude 3.5 Sonnet solved 64% of the problems. Claude 3 Opus solved 38% on the same test. This isn't just a benchmark win; it's a step-change in reliability for autonomous code manipulation tasks like updating legacy applications or migrating codebases.&lt;/p&gt;

&lt;p&gt;It also operates at twice the speed of Claude 3 Opus, making it viable for more latency-sensitive applications like context-aware customer support and orchestrating multi-step workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  how to use it: api access and the new artifacts ui
&lt;/h2&gt;

&lt;p&gt;Accessing the model is straightforward. It's available through the Anthropic API, as well as on Amazon Bedrock and Google Cloud's Vertex AI. The integration is a simple model string update.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="c1"&gt;# defaults to os.environ.get("ANTHROPIC_API_KEY")
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-3-5-sonnet-20240620&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a Python script to analyze a git repository and identify the top 5 contributors based on commit count.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More interestingly, Anthropic also launched a new feature called Artifacts on Claude.ai. When you ask the model to generate content like a code snippet, a document, or a website design, it appears in a dedicated window next to the conversation. You can see, edit, and build upon the generated content in real-time. This transforms the interaction from a simple chat to a collaborative workspace, integrating the AI's output directly into your workflow without constant copy-pasting.&lt;/p&gt;

&lt;h2&gt;
  
  
  the vision and agentic coding leap
&lt;/h2&gt;

&lt;p&gt;Beyond raw intelligence, Claude 3.5 Sonnet is now Anthropic's strongest vision model. It surpasses Opus on standard vision benchmarks, showing marked improvement in interpreting charts, graphs, and transcribing text from imperfect images. This has direct implications for applications in logistics, finance, and retail that need to extract structured data from visual inputs.&lt;/p&gt;

&lt;p&gt;The jump in agentic coding performance is the real story for many of us. The ability to independently write, edit, and execute code with sophisticated reasoning is what we've been chasing. The 64% solve rate on Anthropic's internal eval suggests a higher degree of reliability for tasks that require understanding an existing codebase, reasoning about changes, and implementing them correctly. This makes it a more viable candidate for building agents that can genuinely offload development tasks, not just generate isolated snippets.&lt;/p&gt;

&lt;h2&gt;
  
  
  so what this week
&lt;/h2&gt;

&lt;p&gt;The release of a model that is simultaneously better, faster, and cheaper than the previous flagship is a significant event. For builders, it's an immediate signal to re-evaluate your model stack. Workflows that were too expensive or slow with Opus-level models may now be practical with Claude 3.5 Sonnet. The improvements in coding and vision open up new possibilities for more complex, autonomous agents. The tradeoff curve has shifted, and your default model choice for hard problems should probably shift with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet" rel="noopener noreferrer"&gt;Introducing Claude 3.5 Sonnet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>claude</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
