<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>AI Blog: RAG, AI Agents and LLMs in Practice | Pondhouse Data</title>
<link>https://www.pondhouse-data.com/blog</link>
<description>Practical articles on AI applications, RAG, AI agents and data platforms: what works, what it costs and how to put it to work in your company.</description>
<language>en</language>
<lastBuildDate>Thu, 05 Nov 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://www.pondhouse-data.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
<item><title>Text-to-SQL with a semantic layer: NVIDIA Auto Ontology tested</title><link>https://www.pondhouse-data.com/blog/nvidia-auto-ontology-text-to-sql</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/nvidia-auto-ontology-text-to-sql</guid><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;How NVIDIA Auto Ontology grounds text-to-SQL in an automatically generated semantic layer, what worked in our test and where it still falls short.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Auto Ontology generates business terms, join paths and SQL expressions from database metadata for a text-to-SQL agent to use.&lt;/li&gt;&lt;li&gt;It built the ontology for the 51-table sample database in eight to ten minutes, with no manual modeling.&lt;/li&gt;&lt;li&gt;With NVIDIA&amp;apos;s hosted models it only ran after three small code changes, which we show below.&lt;/li&gt;&lt;li&gt;Two of four answers had wrong SQL that the answer text did not reveal, so expert certification is not optional.&lt;/li&gt;&lt;li&gt;Connect the agent with a database user that can only read.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Agents</category><category>Database</category><category>LLM</category><enclosure url="https://www.pondhouse-data.com/blog/nvidia-auto-ontology/cover.jpg" length="114852" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/nvidia-auto-ontology/cover.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Confluence to LLM Wiki: Our Self-Maintaining Company Wiki</title><link>https://www.pondhouse-data.com/blog/confluence-to-self-maintaining-llm-company-wiki</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/confluence-to-self-maintaining-llm-company-wiki</guid><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;How we moved 310 Confluence pages into a Git-based company wiki that an LLM agent updates, cross-links and checks, with a human reviewing every change.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;We moved 310 Confluence pages and 720 attachments into a Git repository maintained by an LLM agent.&lt;/li&gt;&lt;li&gt;The first compilation produced roughly 160 active pages and 90 archived pages.&lt;/li&gt;&lt;li&gt;Original sources stay append-only in raw/, while the agent maintains the curated pages in wiki/.&lt;/li&gt;&lt;li&gt;Every active page records a human owner, verification date, sources and a trust status.&lt;/li&gt;&lt;li&gt;The agent proposes changes as one reviewable change set; a human approves it before it is merged.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Knowledge Management</category><category>LLM</category><category>Confluence</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_LLMCompanyWiki.jpg" length="352203" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_LLMCompanyWiki.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Copilot Studio: Use SharePoint Lists as a Knowledge Source</title><link>https://www.pondhouse-data.com/blog/sharepoint-lists-as-knowledge-sources-in-copilot-studio</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/sharepoint-lists-as-knowledge-sources-in-copilot-studio</guid><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;Copilot Studio loads SharePoint lists whole. Two agent flow tools fix that: one reads internal column names, one fetches only matching items via OData.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copilot Studio loads a SharePoint list as a whole, so large lists flood the agent&amp;apos;s context or get truncated.&lt;/li&gt;&lt;li&gt;An agent flow can query a list through the SharePoint REST API with OData filters and return only matching items.&lt;/li&gt;&lt;li&gt;A first tool reads the list&amp;apos;s internal column names from the fields endpoint, so no column IDs are hardcoded.&lt;/li&gt;&lt;li&gt;Splitting fetch ids and fetch data into two tools lets the agent retry with a different OData query.&lt;/li&gt;&lt;li&gt;Tell the agent to prefer broad, fuzzy filters over eq on text columns to avoid missing relevant items.&lt;/li&gt;&lt;/ul&gt;</description><category>AI</category><category>Microsoft</category><category>Copilot Studio</category><category>SharePoint</category><category>Knowledge Sources</category><category>Enterprise AI</category><category>Microsoft 365</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_SharepointCopilotStudio.jpg" length="411732" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_SharepointCopilotStudio.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Running GLM-4.7-Flash Locally with OpenCode</title><link>https://www.pondhouse-data.com/blog/glm-4-7-flash-local-opencode</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/glm-4-7-flash-local-opencode</guid><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><description>&lt;p&gt;Run GLM-4.7-Flash, a 30B MoE coding model, on a 16GB GPU: build llama.cpp for NVIDIA or AMD, serve the Q4 GGUF and connect it to OpenCode.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;GLM-4.7-Flash is a 30B Mixture-of-Experts model with about 3B active parameters, released with open weights under the MIT license.&lt;/li&gt;&lt;li&gt;It scores 59.2% on SWE-bench Verified, versus 22.0% for Qwen3-30B-A3B-Thinking and 34.0% for GPT-OSS-20B.&lt;/li&gt;&lt;li&gt;With the UD-Q4_K_XL quant, GLM-4.7-Flash uses around 12-14GB of VRAM and runs on a 16GB GPU.&lt;/li&gt;&lt;li&gt;llama-server downloads the GGUF from Hugging Face with the -hf flag and serves an OpenAI-compatible API.&lt;/li&gt;&lt;li&gt;In opencode.json, the model ID must match the --alias you pass to llama-server.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>LLM</category><category>Self-Hosting</category><category>llama.cpp</category><category>Coding</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_GLM47Flash.jpg" length="3337208" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_GLM47Flash.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Orchestrating Complex Tasks with Microsoft Agent Framework Workflows</title><link>https://www.pondhouse-data.com/blog/enterprise-ai-workflows-with-microsoft-agent-framework</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/enterprise-ai-workflows-with-microsoft-agent-framework</guid><pubDate>Wed, 19 Nov 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Build graph-based Microsoft Agent Framework Workflows in Python: a four-step IT ticket pipeline, the DevUI, and conditional edges for urgent tickets.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use a ChatAgent for open-ended conversations and a Workflow for known, repeatable, auditable multi-step processes.&lt;/li&gt;&lt;li&gt;A Workflow is a graph of executors connected by edges, defined with the WorkflowBuilder API.&lt;/li&gt;&lt;li&gt;Executors pass data on with ctx.send_message and publish final results with ctx.yield_output.&lt;/li&gt;&lt;li&gt;Conditional edges send high-priority tickets to an alert node and all others to ticket creation.&lt;/li&gt;&lt;li&gt;The built-in DevUI shows the workflow graph, runs it and lets you inspect each node&amp;apos;s inputs and outputs.&lt;/li&gt;&lt;/ul&gt;</description><category>AI</category><category>Microsoft</category><category>Agent Framework</category><category>Workflows</category><category>Enterprise AI</category><category>Azure</category><category>Human-in-the-Loop</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_MicrosoftAgentFramework.jpg" length="264745" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_MicrosoftAgentFramework.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Microsoft Agent Framework: Build Enterprise AI Agents in Python</title><link>https://www.pondhouse-data.com/blog/enterprise-ai-with-microsoft-agent-framework</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/enterprise-ai-with-microsoft-agent-framework</guid><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Microsoft Agent Framework explained: tools, workflows, state and checkpointing, then a Python IT helpdesk agent with Dev UI, FastAPI and Docker.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Microsoft Agent Framework combines AutoGen&amp;apos;s multi-agent patterns with Semantic Kernel&amp;apos;s enterprise features, for Python and C#.&lt;/li&gt;&lt;li&gt;Its four core components are AI agents, typed tools, graph-based workflows and AgentThread state management.&lt;/li&gt;&lt;li&gt;Checkpointing saves workflow state to durable storage so agents can pause for approvals and resume later.&lt;/li&gt;&lt;li&gt;The built-in Dev UI shows an agent&amp;apos;s tool calls and responses in the browser during development.&lt;/li&gt;&lt;li&gt;For production, wrap the agent in a FastAPI endpoint, package it with Docker and add a persistence layer.&lt;/li&gt;&lt;/ul&gt;</description><category>AI</category><category>Microsoft</category><category>Agent Framework</category><category>Copilot</category><category>Enterprise AI</category><category>Azure</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_MicrosoftAgentFramework.jpg" length="264745" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_MicrosoftAgentFramework.jpg" type="image/jpeg" medium="image"/></item>
<item><title>BigQuery MCP Server: Google&apos;s Remote Server vs. MCP Toolbox, Tested</title><link>https://www.pondhouse-data.com/blog/mcp-server-bigquery</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/mcp-server-bigquery</guid><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Connect AI agents to BigQuery via MCP: Google&amp;apos;s managed remote server vs. MCP Toolbox 1.16, with setup, guardrails, costs and a 7-question agent test.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Google runs a managed BigQuery MCP server at bigquery.googleapis.com/mcp; it is available as soon as the BigQuery API is enabled.&lt;/li&gt;&lt;li&gt;MCP Toolbox 1.16 adds what the remote server lacks: a dataset allowlist, a read-only mode and a per-query cap on bytes billed.&lt;/li&gt;&lt;li&gt;With clear instructions our agent answered 7 of 7 questions via the remote server and 6 of 7 via the Toolbox.&lt;/li&gt;&lt;li&gt;After a blocked query the agent once invented a number. Tell it to report tool errors instead of estimating.&lt;/li&gt;&lt;li&gt;Give the agent its own service account with BigQuery Job User and dataset-level Data Viewer, and use short-lived tokens instead of key files.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>BigQuery</category><category>MCP</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_MCPBigQuery.jpg" length="308599" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_MCPBigQuery.jpg" type="image/jpeg" medium="image"/></item>
<item><title>RAGFlow 1.0 Tutorial: Setup, PDF Parsing and Real Test Results</title><link>https://www.pondhouse-data.com/blog/introduction-to-ragflow</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/introduction-to-ragflow</guid><pubDate>Fri, 20 Jun 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;RAGFlow 1.0 installed with Docker and tested on a 147-page PDF: setup, OpenAI models, DeepDoc vs. a vision LLM parser, RAM usage and answer accuracy.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;RAGFlow 1.0 is a rewrite in Go. The default Docker stack started in 17 seconds and idled at 5.8 GiB RAM.&lt;/li&gt;&lt;li&gt;Switching the document engine from Elasticsearch to Infinity cut idle RAM to about 1.5 GiB in our test.&lt;/li&gt;&lt;li&gt;DeepDoc garbled most text of our 147-page statistics report, so only 2 of 5 test questions got an answer.&lt;/li&gt;&lt;li&gt;With gpt-4.1-mini as the PDF parser, the same report gave clean Markdown tables and 5 correct answers out of 5.&lt;/li&gt;&lt;li&gt;Check the chunk view on a few sample pages before you trust any parser with a new type of document.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>RAG</category><category>Self-Hosting</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_RAGFlow.jpg" length="721516" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_RAGFlow.jpg" type="image/jpeg" medium="image"/></item>
<item><title>LLM Sampling with FastMCP: Using Client LLMs for Scalable AI Workflows in your MCP</title><link>https://www.pondhouse-data.com/blog/llm-sampling-with-fastmcp</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/llm-sampling-with-fastmcp</guid><pubDate>Mon, 19 May 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;How MCP sampling lets a FastMCP server hand its LLM calls to the client: ctx.sample on the server, a sampling handler on the client, with code.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;With MCP sampling, a server tool asks the client&amp;apos;s LLM for a completion instead of calling its own LLM.&lt;/li&gt;&lt;li&gt;The client runs the LLM inference and pays for it, so the MCP server stays lightweight as users grow.&lt;/li&gt;&lt;li&gt;In FastMCP, a tool requests a completion with ctx.sample, passing messages, a system prompt, temperature and max tokens.&lt;/li&gt;&lt;li&gt;FastMCP injects the Context object into any tool function that has a parameter type-hinted as Context.&lt;/li&gt;&lt;li&gt;The client must implement a sampling handler that receives the sampling request and returns the generated text.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>MCP</category><category>AI</category><category>FastMCP</category><category>LLM</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_FastMCP_LLM_Sampling.jpg" length="275927" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_FastMCP_LLM_Sampling.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Automating MCP Server Creation from OpenAPI and FastAPI</title><link>https://www.pondhouse-data.com/blog/automating-mcp-server-creation</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/automating-mcp-server-creation</guid><pubDate>Sun, 04 May 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Generate an MCP server from an existing OpenAPI spec or FastAPI app with FastMCP: route mapping, timeouts, parameter handling and code examples.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;FastMCP.from_openapi turns an OpenAPI specification into an MCP server in a few lines of Python.&lt;/li&gt;&lt;li&gt;FastMCP.from_fastapi converts a FastAPI app into an MCP server and talks to it over the ASGI transport.&lt;/li&gt;&lt;li&gt;Before FastMCP 2.8.0, GET routes became resources or resource templates by default and all other methods became tools. Newer versions turn every route into a tool.&lt;/li&gt;&lt;li&gt;Custom RouteMap objects override the default mapping and are applied before the default rules.&lt;/li&gt;&lt;li&gt;Query parameters with None or empty-string values are dropped; missing path parameters raise a ValueError.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>API</category><category>FastMCP</category><category>Development</category><category>MCP</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_MCPIntegration.jpg" length="276918" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_MCPIntegration.jpg" type="image/jpeg" medium="image"/></item>
<item><title>FastMCP Tutorial: Build an MCP Server in Python, Step by Step</title><link>https://www.pondhouse-data.com/blog/create-mcp-server-with-fastmcp</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/create-mcp-server-with-fastmcp</guid><pubDate>Sun, 27 Apr 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;What an MCP server is, how it differs from an API, and how to build one in Python with FastMCP: resources, templates, tools, progress reporting and a client.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;An MCP server is a standardized API that lets LLM clients discover and use your tools and data.&lt;/li&gt;&lt;li&gt;FastMCP turns Python functions into MCP resources and tools with decorators, using type hints and docstrings for schemas.&lt;/li&gt;&lt;li&gt;Use STDIO for local tools like Claude Desktop and an HTTP transport for remote MCP servers. This post uses SSE, which has since been replaced by Streamable HTTP.&lt;/li&gt;&lt;li&gt;Resource templates such as data://user-profile/{user_id} pass dynamic values to an MCP resource.&lt;/li&gt;&lt;li&gt;Raising a normal Python exception in a FastMCP tool sends an MCP error response back to the client.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>MCP</category><category>AI</category><category>FastMCP</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_FastMCP.jpg" length="253353" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_FastMCP.jpg" type="image/jpeg" medium="image"/></item>
<item><title>What Is Langfuse? Open-Source LLM Observability, Self-Hosted</title><link>https://www.pondhouse-data.com/blog/langfuse-observability-platform</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/langfuse-observability-platform</guid><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Self-host Langfuse with Docker Compose and use it to trace OpenAI calls, group them into sessions, score outputs and version your prompts.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Langfuse is an MIT-licensed LLM engineering platform for tracing, evaluations, datasets and prompt management.&lt;/li&gt;&lt;li&gt;Importing the OpenAI SDK through langfuse.openai logs every call with latency and cost.&lt;/li&gt;&lt;li&gt;The @observe decorator groups all LLM calls of a function hierarchy into one nested trace.&lt;/li&gt;&lt;li&gt;Session and user IDs group traces into chat replays and per-user cost overviews.&lt;/li&gt;&lt;li&gt;Self-hosting with Docker Compose runs six services, including ClickHouse, MinIO, Redis and Postgres.&lt;/li&gt;&lt;/ul&gt;</description><category>Langfuse</category><category>LLM</category><category>Observability</category><category>AI</category><category>Tracing</category><category>Evaluation</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_Langfuse.jpg" length="283548" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_Langfuse.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Integrating n8n with Open WebUI: Building advanced AI chatbots and workflows</title><link>https://www.pondhouse-data.com/blog/integrating-n8n-with-open-webui</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/integrating-n8n-with-open-webui</guid><pubDate>Sun, 30 Mar 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Connect Open WebUI to n8n with a webhook workflow and a Python pipe function, so chat messages trigger n8n workflows. Setup steps and full code.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;An Open WebUI pipe function sends each chat message to an n8n webhook and displays n8n&amp;apos;s response.&lt;/li&gt;&lt;li&gt;The n8n Webhook node uses POST, Header Auth and a Respond to Webhook node to return the answer.&lt;/li&gt;&lt;li&gt;A chat message trigger next to the webhook trigger lets you test the n8n workflow on its own.&lt;/li&gt;&lt;li&gt;The pipe&amp;apos;s valves hold the n8n webhook URL, the bearer token and the input and response field names.&lt;/li&gt;&lt;li&gt;All the logic lives in the n8n workflow; the Open WebUI pipe only acts as a bridge.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>n8n</category><category>Open WebUI</category><category>Agents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_n8nOpenWebUI.jpg" length="456833" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_n8nOpenWebUI.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Building High-Quality AI Agent Systems: Best Practices</title><link>https://www.pondhouse-data.com/blog/high-quality-ai-agent-systems</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/high-quality-ai-agent-systems</guid><pubDate>Sun, 23 Mar 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Why multi-agent LLM systems fail, based on a study of 14 failure modes, and the design practices that make AI agent systems more reliable.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Multi-agent LLM systems often show only minimal benchmark gains over well-designed single-agent implementations.&lt;/li&gt;&lt;li&gt;A study of five multi-agent frameworks across 150+ tasks identified 14 distinct failure modes.&lt;/li&gt;&lt;li&gt;The failure modes cluster into specification failures, inter-agent misalignment and verification and termination issues.&lt;/li&gt;&lt;li&gt;Every agent output should be verified, by self-verification, cross-verification or a dedicated verification agent.&lt;/li&gt;&lt;li&gt;Start with the simplest system that does the core task and add agents only when they beat a single-agent baseline.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Agents</category><category>LLM</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_HighQualityAIAgents.jpg" length="188707" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_HighQualityAIAgents.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Building Powerful AI Agents with smolagents: A Minimalist Approach</title><link>https://www.pondhouse-data.com/blog/smolagents-minimal-agent-framework</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/smolagents-minimal-agent-framework</guid><pubDate>Sat, 15 Mar 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;smolagents is Hugging Face&amp;apos;s minimal agent library: code agents that act in Python, sandboxed execution, support for any LLM and tips for better agents.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;smolagents is a minimal agent library from Hugging Face whose agent logic fits in about 1,000 lines of code.&lt;/li&gt;&lt;li&gt;Its CodeAgent writes actions as Python code instead of JSON tool calls, which has been shown to need 30% fewer steps.&lt;/li&gt;&lt;li&gt;Agent code runs in a restricted Python interpreter by default, with E2B or Docker sandboxes as alternatives.&lt;/li&gt;&lt;li&gt;Group tools and prefer deterministic functions to cut LLM calls, cost, latency and error risk.&lt;/li&gt;&lt;li&gt;Tool docstrings should spell out input formats, because the LLM only knows what you tell it.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Agents</category><category>LLM</category><category>smolagents</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_Smolagents.jpg" length="185732" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_Smolagents.jpg" type="image/jpeg" medium="image"/></item>
<item><title>DeepSeek R1 On-Prem Setup: Run Advanced AI Models on Your Hardware with SGLang</title><link>https://www.pondhouse-data.com/blog/deepseek-r1-with-sglang</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/deepseek-r1-with-sglang</guid><pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Run DeepSeek-R1-Distill-Qwen-32B on two 24GB GPUs with SGLang: install, model download, Docker setup and OpenAI-compatible API calls in Python.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;DeepSeek-R1-Distill-Qwen-32B scores 72.6% on AIME 2024 and a Codeforces rating of 1691, versus 9.3% and 759 for GPT-4o.&lt;/li&gt;&lt;li&gt;The 32B distilled model runs on two 24GB GPUs such as the RTX 3090, with 32GB RAM and 100GB of NVMe storage.&lt;/li&gt;&lt;li&gt;SGLang serves the model with an OpenAI-compatible API on port 30000, so the OpenAI Python client works unchanged.&lt;/li&gt;&lt;li&gt;SGLang supports JSON schema structured output and streaming through the same chat completions endpoint.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>LLM</category><category>Self-Hosting</category><category>SGLang</category><category>DeepSeek</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_DeepSeekR1_SGLang.jpg" length="237163" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_DeepSeekR1_SGLang.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Building Better AI Applications with LLM Tracing using Opik</title><link>https://www.pondhouse-data.com/blog/monitor-ai-applications-with-opik</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/monitor-ai-applications-with-opik</guid><pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Self-host Opik, Comet&amp;apos;s open-source LLM tracing tool, trace OpenAI, PydanticAI and LangChain calls, track costs and score traces with an LLM judge.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Opik is an open-source, Apache-2 licensed LLM tracing and evaluation platform created by Comet.&lt;/li&gt;&lt;li&gt;You can self-host Opik with Docker Compose or a Helm chart, but it has no built-in authentication.&lt;/li&gt;&lt;li&gt;Wrapping the OpenAI client with track_openai traces every call, including prompt, response, tokens and latency.&lt;/li&gt;&lt;li&gt;Opik tracks costs automatically for OpenAI and Gemini models; token usage and latency are always tracked.&lt;/li&gt;&lt;li&gt;Online evaluation rules let an LLM judge score every production trace, for example for hallucination.&lt;/li&gt;&lt;/ul&gt;</description><category>AI</category><category>Opik</category><category>Debugging</category><category>Monitoring</category><category>Evaluation</category><category>Observability</category><category>Tracing</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_Opik.jpg" length="574417" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_Opik.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Building AI Agents with n8n: Postgres Tools, Memory and Human Approval</title><link>https://www.pondhouse-data.com/blog/ai-agents-with-n8n</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/ai-agents-with-n8n</guid><pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Build a self-hosted AI agent in n8n 2.46: order lookups in Postgres, chat memory, email drafts behind human approval. With screenshots, costs and pitfalls.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In n8n 2.46 the AI Agent node is a tool-calling loop: a chat model, optional memory and any number of tools as sub-nodes.&lt;/li&gt;&lt;li&gt;Give the agent fixed, parameterized SQL queries with a read-only database role instead of letting the model write SQL.&lt;/li&gt;&lt;li&gt;Human review for tools pauses the run until someone clicks approve; in the n8n chat it needs the response mode Using Response Nodes.&lt;/li&gt;&lt;li&gt;Cast Postgres DATE columns to text, otherwise a timezone like Europe/Vienna shifts them to the previous day.&lt;/li&gt;&lt;li&gt;A four-message conversation with gpt-5.4-mini used about 3,600 input tokens, well under one cent.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>n8n</category><category>Agents</category><category>OpenAI</category><category>Tutorial</category><enclosure url="https://www.pondhouse-data.com/blog/ai-agents-with-n8n/cover.jpg" length="140898" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/ai-agents-with-n8n/cover.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Enhancing Self-Made Agent with Memory: Keeping Context for Better Conversations</title><link>https://www.pondhouse-data.com/blog/ai-agents-memory</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/ai-agents-memory</guid><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Add PostgreSQL-backed memory to a self-made Python AI agent: store every interaction, summarize long histories with GPT-4o and feed context into the prompt.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The memory-enabled agent stores every user input, agent response and tool call in a PostgreSQL table.&lt;/li&gt;&lt;li&gt;Once 20 interactions have piled up since the last summary, GPT-4o is asked to summarize them in under 2,000 words.&lt;/li&gt;&lt;li&gt;Before each query, the latest summary and all newer interactions are added to the prompt as a system message.&lt;/li&gt;&lt;li&gt;Single-turn Q&amp;amp;A, one-off lookups and privacy-sensitive use cases are often better served by a stateless agent.&lt;/li&gt;&lt;li&gt;MemoryAgent subclasses the multi-step agent, so the tools and the iteration loop stay the same.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Agents</category><category>LLM</category><category>Database</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_MemoryAgent.jpg" length="452151" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_MemoryAgent.jpg" type="image/jpeg" medium="image"/></item>
<item><title>Advanced Self-Made Agent: Building a Smarter, Multi-Step AI Agent</title><link>https://www.pondhouse-data.com/blog/ai-agents-advanced</link><guid isPermaLink="true">https://www.pondhouse-data.com/blog/ai-agents-advanced</guid><pubDate>Sat, 25 Jan 2025 00:00:00 GMT</pubDate><description>&lt;p&gt;Extend a framework-free Python AI agent with an AgentState enum, a multi-step reasoning loop and clarifying questions to the user. Full code included.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The advanced agent tracks its progress with an AgentState enum: THINKING, DONE, ERROR and NEED_MORE_INFO.&lt;/li&gt;&lt;li&gt;A loop repeats the think-and-act step up to max_iterations times before the agent stops.&lt;/li&gt;&lt;li&gt;When information is missing, the agent asks the user a clarifying question instead of failing.&lt;/li&gt;&lt;li&gt;Each LLM response has to name one action: TOOL_CALL, ASK_USER or FINAL_ANSWER.&lt;/li&gt;&lt;li&gt;The agent reuses the query_database and search_wikipedia tools from the framework-free tutorial.&lt;/li&gt;&lt;/ul&gt;</description><category>Technology</category><category>AI</category><category>Agents</category><category>LLM</category><category>OpenAI</category><enclosure url="https://www.pondhouse-data.com/blog/BlogHeader_AdvancedAiAgents.jpg" length="472941" type="image/jpeg"/><media:content url="https://www.pondhouse-data.com/blog/BlogHeader_AdvancedAiAgents.jpg" type="image/jpeg" medium="image"/></item>
</channel>
</rss>
