<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agentic AI | Giulia Solinas</title><link>https://giuliasolinas.github.io/tags/agentic-ai/</link><atom:link href="https://giuliasolinas.github.io/tags/agentic-ai/index.xml" rel="self" type="application/rss+xml"/><description>Agentic AI</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 16 May 2026 00:00:00 +0000</lastBuildDate><image><url>https://giuliasolinas.github.io/media/icon_hu_982c5d63a71b2961.png</url><title>Agentic AI</title><link>https://giuliasolinas.github.io/tags/agentic-ai/</link></image><item><title>Bringing all together: The key building blocks of watsonx Orchestrate</title><link>https://giuliasolinas.github.io/blog/wxorchestrate_iv/</link><pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate><guid>https://giuliasolinas.github.io/blog/wxorchestrate_iv/</guid><description>&lt;h1 id="from-code-to-collaboration-mastering-the-watsonx-orchestrate-agent-development-kit-adk"&gt;From Code to Collaboration: Mastering the watsonx Orchestrate Agent Development Kit (ADK)&lt;/h1&gt;
&lt;p&gt;This blog post summarizes the key concepts and hands-on learning from the watsonx Orchestrate Agent Development Kit (ADK) curriculum—covering the development lifecycle from tool creation to advanced agent collaboration, knowledge integration, and prompt optimization.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Throughout the past three blogs, we&amp;rsquo;ve explored the architectural foundations, best practices, and tooling that make watsonx Orchestrate a powerful platform for enterprise AI agents. Now, let&amp;rsquo;s add few more concepts and bring it all together.&lt;/p&gt;
&lt;p&gt;The IBM watsonx Orchestrate Agent Development Kit (ADK) is a powerful toolset for building, testing, and deploying robust AI agents tailored for enterprise workflows. This learning path moves beyond basic development to cover critical topics like agent collaboration, knowledge grounding, and optimization with Copilot.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="building-blocks-agents-and-tools"&gt;Building Blocks: Agents and Tools&lt;/h2&gt;
&lt;p&gt;The foundation of the watsonx Orchestrate ecosystem lies in two core concepts: &lt;strong&gt;Agents&lt;/strong&gt; and &lt;strong&gt;Tools&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="agents"&gt;Agents&lt;/h3&gt;
&lt;p&gt;The primary intelligent entity, defined using &lt;strong&gt;YAML&lt;/strong&gt; or &lt;strong&gt;JSON&lt;/strong&gt; files. An agent&amp;rsquo;s configuration dictates its behavior, the &lt;strong&gt;LLM&lt;/strong&gt; it uses, and the tools it can access. The YAML file has the following structure.&lt;/p&gt;
&lt;h3 id="tools"&gt;Tools&lt;/h3&gt;
&lt;p&gt;The reusable functions that expose specific business capabilities to the agent, allowing it to take action. Tools can be created from two main formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Python Functions&lt;/strong&gt;: Directly written in Python, they are imported using a command like &lt;code&gt;orchestrate tools import -k python -f my-tool.py -r requirements.txt -a app1 -a app2&lt;/code&gt;. Note that the wx orchestrate framework is moving towards importing tools&amp;rsquo; packages instead of single tools to improve the utilization of runtime capacity while calling the deployed tool.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenAPI Specification&lt;/strong&gt;: A standard way to define REST APIs. The agent uses the structure of the OpenAPI document, specifically the &lt;strong&gt;&lt;code&gt;paths&lt;/code&gt;&lt;/strong&gt; element to identify endpoints and the &lt;strong&gt;&lt;code&gt;servers&lt;/code&gt;&lt;/strong&gt; element to find the API&amp;rsquo;s base URLs. The import command is &lt;code&gt;orchestrate tools import -k openapi&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agents can access tools also through local MCP server packages hosted on the local machine and connections to external MCP server. Here the changes in the documentation are very dynamic and it is better to refer to the official wx orchestrate ADK developer webpage for references.&lt;/p&gt;
&lt;p&gt;Tools are secured using &lt;strong&gt;Connections&lt;/strong&gt;, which handle authentication details like API keys or user credentials.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="grounding-agents-with-knowledge"&gt;Grounding Agents with Knowledge&lt;/h2&gt;
&lt;p&gt;For agents to answer informational or history-based questions accurately, they need access to a &lt;strong&gt;Knowledge Base&lt;/strong&gt;, leveraging the &lt;strong&gt;Retrieval-Augmented Generation (RAG)&lt;/strong&gt; pattern.&lt;/p&gt;
&lt;p&gt;A Knowledge Base is defined using &lt;strong&gt;YAML or JSON&lt;/strong&gt; and populated with relevant documents. Two key parameters govern the accuracy of the responses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;retrieval_confidence_threshold&lt;/code&gt;&lt;/strong&gt;: This controls the &lt;strong&gt;minimum confidence required for retrieved documents&lt;/strong&gt; to be considered relevant to the user&amp;rsquo;s query. Documents below this threshold are ignored.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Response Confidence&lt;/strong&gt;: If the Large Language Model&amp;rsquo;s (LLM) final generated answer falls below this set threshold, the agent will refuse to answer and &lt;strong&gt;returns a default &amp;lsquo;I don&amp;rsquo;t know&amp;rsquo; response&lt;/strong&gt; to prevent hallucinations and maintain factual integrity.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="advanced-architectures-collaboration-and-workflow"&gt;Advanced Architectures: Collaboration and Workflow&lt;/h2&gt;
&lt;p&gt;For complex business processes, single agents are replaced by a system of collaborating agents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Collaborating Agents&lt;/strong&gt;: Specialized agents (e.g., a &lt;code&gt;Quoter Agent&lt;/code&gt; and a &lt;code&gt;Monthly Payment Agent&lt;/code&gt;) work together to achieve a multi-step goal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Manager Agent&lt;/strong&gt;: The &lt;strong&gt;manager agent&lt;/strong&gt; sits at the top, and its primary role is to &lt;strong&gt;coordinate the collaborating agents&lt;/strong&gt;. It uses its own LLM reasoning to decide which agent to call, in what sequence, and how to combine their outputs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This collaborative architecture is the practical implementation of the Supervisor/Manager pattern we discussed in earlier posts—a testament to how architectural concepts translate into working code.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="development-debugging-and-optimization"&gt;Development, Debugging, and Optimization&lt;/h2&gt;
&lt;p&gt;The ADK streamlines the development lifecycle with powerful tooling:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;Area&lt;/th&gt;
&lt;th style="text-align: left"&gt;Tool/Concept&lt;/th&gt;
&lt;th style="text-align: left"&gt;Key Function&lt;/th&gt;
&lt;th style="text-align: left"&gt;CLI Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Local Testing&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Developer Edition Chat UI&lt;/td&gt;
&lt;td style="text-align: left"&gt;Interactive environment to test agents locally.&lt;/td&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;orchestrate chat start&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Optimization&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Agent Builder&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;AI agent builder for &lt;strong&gt;prompt-tuning&lt;/strong&gt; to improve prompt clarity and agent behavior. It requests &lt;strong&gt;invocation examples&lt;/strong&gt; to understand and refine the agent&amp;rsquo;s logic.&lt;/td&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;orchestrate agents ai-builder create&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Langfuse&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Integrated stack that &lt;strong&gt;captures and visualizes agent reasoning traces&lt;/strong&gt; (tool calls, inputs, outputs). Essential for debugging the agent&amp;rsquo;s decision-making process.&lt;/td&gt;
&lt;td style="text-align: left"&gt;&lt;em&gt;(Integrated with server trace)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="conclusion-bringing-it-all-together"&gt;Conclusion: Bringing It All Together&lt;/h2&gt;
&lt;p&gt;By combining the structural power of tool definition, the informational grounding of knowledge bases, the architectural flexibility of collaboration, and the optimization capabilities of Copilot and Langfuse, developers can build reliable, enterprise-grade AI agents with the watsonx Orchestrate ADK.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="series-summary-key-takeaways"&gt;Series Summary: Key Takeaways&lt;/h2&gt;
&lt;p&gt;Over this four-part series, we&amp;rsquo;ve covered the essential elements of building production-ready agents with watsonx Orchestrate:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Architectural Foundation&lt;/strong&gt; (Part 1): The hybrid pro-code/low-code approach—using the ADK for complex logic and the Agent Builder for orchestration and speed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt; (Part 2): Multi-Agent Orchestration with the Supervisor/Manager pattern, writing clear agent descriptions, and choosing the right tool type (Python vs. MCP).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tooling and APIs&lt;/strong&gt; (Part 3): Mastering the ADK CLI commands, understanding MCP security considerations, and working with the core API parameters (&lt;code&gt;agent_id&lt;/code&gt; and &lt;code&gt;thread_id&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementation&lt;/strong&gt; (Part 4): The ADK development lifecycle—defining agents and tools, grounding with knowledge bases, implementing collaborative architectures, and optimizing with AI Agent Builder and Langfuse.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These concepts form a cohesive framework for building enterprise-grade AI agents that scale. The difference between a proof-of-concept and a production-ready agent lies not in any single technique, but in how these elements work together as a system.&lt;/p&gt;
&lt;p&gt;Start building. Start iterating. And most importantly—start orchestrating.&lt;/p&gt;</description></item><item><title>My notes about the watsonx Orchestrate Agent Development Kit (ADK) and Model Context Protocol</title><link>https://giuliasolinas.github.io/blog/wxorchestrate_iii/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://giuliasolinas.github.io/blog/wxorchestrate_iii/</guid><description>&lt;h1 id="elevate-your-ai-engineering-mastering-watsonx-orchestrate-tooling-and-apis"&gt;Elevate Your AI Engineering: Mastering watsonx Orchestrate Tooling and APIs&lt;/h1&gt;
&lt;p&gt;In Parts 1 and 2, I covered the architectural foundations and best practices for building production-ready agents. Now it&amp;rsquo;s time to get hands-on with the &lt;strong&gt;tooling and APIs&lt;/strong&gt; that power your watsonx Orchestrate implementations.&lt;/p&gt;
&lt;p&gt;For AI engineers looking to extend the capabilities of their agents, this installment provides the foundational knowledge necessary to integrate custom tools and manage the environment using powerful command-line tools and direct API calls. It is also&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-agent-developer-kit-adk-the-command-center"&gt;The Agent Developer Kit (ADK): The Command Center&lt;/h2&gt;
&lt;p&gt;The ADK is the essential CLI for managing your watsonx Orchestrate environments and assets. Mastering a few key commands allows you to seamlessly switch between environments (for example, ), as well as manage the tools your agents use.&lt;/p&gt;
&lt;h3 id="essential-commands"&gt;Essential Commands&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;orchestrate env list&lt;/code&gt;&lt;/strong&gt; &amp;amp; &lt;strong&gt;&lt;code&gt;orchestrate env activate&lt;/code&gt;&lt;/strong&gt;: Essential for listing all configured environments and activating a specific one (e.g., a local development instance or a SaaS tenant).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;orchestrate agents import -f [agent_name].yaml&lt;/code&gt;&lt;/strong&gt; to import the agent into the environment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;orchestrate tools import&lt;/code&gt;&lt;/strong&gt; &amp;amp; &lt;strong&gt;&lt;code&gt;orchestrate tools list&lt;/code&gt;&lt;/strong&gt;: The standardized way to register new tools into your environment and verify their successful import.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;orchestrate connections remove&lt;/code&gt;&lt;/strong&gt;: Used to safely unregister external service connections from your active tenant.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;orchestrate knowledge-bases status&lt;/code&gt;&lt;/strong&gt;: Provides vital diagnostic information on the content and state of your retrieval-augmented generation (RAG) knowledge bases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These commands form the backbone of your day-to-day workflow. Whether you&amp;rsquo;re deploying to production or debugging in development, the ADK is your interface to the platform.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="standardizing-tools-with-the-model-context-protocol-mcp"&gt;Standardizing Tools with the Model Context Protocol (MCP)&lt;/h2&gt;
&lt;p&gt;To enable agents to use external applications, watsonx Orchestrate utilizes the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, which relies on an MCP server as a standardized intermediary.&lt;/p&gt;
&lt;h3 id="why-mcp-matters"&gt;Why MCP Matters&lt;/h3&gt;
&lt;p&gt;The core benefit of MCP is providing a &lt;strong&gt;standardized interface&lt;/strong&gt; for watsonx Orchestrate, allowing various external services to be integrated with consistent simplicity. Instead of building custom integrations for every service, MCP gives you a uniform approach.&lt;/p&gt;
&lt;p&gt;Here you can find an insightful reading if you want to compare this approach with Anthropics&amp;rsquo;s guidelines to build
. I believe learnings from one platform can be applied to other contexts, too.&lt;/p&gt;
&lt;h3 id="security-considerations"&gt;Security Considerations&lt;/h3&gt;
&lt;p&gt;MCP servers typically require &lt;strong&gt;environment variables&lt;/strong&gt; at startup to initialize correctly with necessary authentication keys (API keys) and endpoints. However, there&amp;rsquo;s a critical security consideration: without proper &lt;strong&gt;sandboxing&lt;/strong&gt;, running an MCP server poses a severe security risk of &lt;strong&gt;arbitrary code execution&lt;/strong&gt;. This risk must be mitigated before deploying to production.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="api-essentials-for-conversational-flows"&gt;API Essentials for Conversational Flows&lt;/h2&gt;
&lt;p&gt;When building custom user interfaces or services, direct interaction with the watsonx Orchestrate API is required. Two identifiers are paramount for managing conversation state:&lt;/p&gt;
&lt;h3 id="the-critical-api-parameters"&gt;The Critical API Parameters&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;agent_id&lt;/code&gt;&lt;/strong&gt;: &lt;strong&gt;Must be included in the API request&lt;/strong&gt; to direct the conversation to the specific agent instance that is configured with the right skills and tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;thread_id&lt;/code&gt;&lt;/strong&gt;: Used to &lt;strong&gt;maintain and reference the context of a specific conversation&lt;/strong&gt;. Including this ID in subsequent calls ensures the agent has access to the full conversation history for coherent, multi-turn dialogue.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These two identifiers are the keys to building seamless, context-aware conversational experiences in your custom applications.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="key-takeaways"&gt;Key Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Master the ADK&lt;/strong&gt;—it&amp;rsquo;s your command center for environment management, tool registration, and diagnostics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embrace MCP&lt;/strong&gt; for standardized integrations, but never neglect security—sandbox your MCP servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Understand the API fundamentals&lt;/strong&gt;—&lt;code&gt;agent_id&lt;/code&gt; and &lt;code&gt;thread_id&lt;/code&gt; are essential for building custom conversational interfaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With these tooling and API skills in your toolkit, we&amp;rsquo;re equipped to move beyond conceptual design into full implementation. The foundation is set; the execution begins.&lt;/p&gt;</description></item><item><title>Mastering Multi-Agent Orchestration and Tool Selection in watsonx Orchestrate</title><link>https://giuliasolinas.github.io/blog/wxorchestrate_ii/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://giuliasolinas.github.io/blog/wxorchestrate_ii/</guid><description>&lt;h1 id="mastering-multi-agent-orchestration-and-tool-selection-in-watsonx-orchestrate"&gt;Mastering Multi-Agent Orchestration and Tool Selection in watsonx Orchestrate&lt;/h1&gt;
&lt;p&gt;In the first blog, we explored the foundational architectural choices: when to use the Agent Development Kit (ADK) for pro-code development and when to leverage the Agent Builder for speed. Now, let&amp;rsquo;s dive deeper into two critical best practices that separate agentic design from AI assistants and more traditional chatbot solution: &lt;strong&gt;Multi-Agent Orchestration&lt;/strong&gt; and &lt;strong&gt;Agent Descriptions&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="multi-agent-orchestration-the-supervisormanager-pattern"&gt;Multi-Agent Orchestration: The Supervisor/Manager Pattern&lt;/h2&gt;
&lt;p&gt;If there&amp;rsquo;s one architectural pattern I had to internalize for watsonx Orchestrate, it&amp;rsquo;s the &lt;strong&gt;Supervisor/Manager agent topology&lt;/strong&gt;. This approach leverages the concept of Multi-Agent Systems—a core capability that transforms how complex workflows are handled.&lt;/p&gt;
&lt;h3 id="why-single-agents-fail-at-scale"&gt;Why Single Agents Fail at Scale&lt;/h3&gt;
&lt;p&gt;Do not get me wrong, single agents have been there for a while and can still be deployed with success. Furthermore, single agents that handle a sequence of tasks in parallel can be more performing that a crew of agents accomplishing the same tasks in parallel but without real coordination &amp;ndash;see for example,
from Google.&lt;/p&gt;
&lt;p&gt;However a single agent hits a wall when performing a very complex job that would require parallel tasks and multiple tools, even if they are supported by very powerful, state-of-the-art models. When multiple tools have similar names or work with the same data, the LLM inside a single, large agent can struggle with &lt;strong&gt;tool routing&lt;/strong&gt;—the process of selecting the correct tool for a given step. The more tools you pile into one agent, the more overwhelmed the model&amp;rsquo;s reasoning becomes. The result? Incorrect routing, failed tasks, and frustrated users.&lt;/p&gt;
&lt;p&gt;There is now quite a lot of evidence on this topic, suggesting that the maximum number of tools an agent should handle should be larger than eight. Allen Chen, distinguished engineer at IBM, has written a great article about it
on
.&lt;/p&gt;
&lt;p&gt;The solution to this problem is thinking modular and designing a multi-agent framework, in which each agent covers a specialized task with its associated tools and connects loosely with the other agents. The idea is to turn our implementations from monolith agents to lightweight, decentralized yet connected agents. I find multi-agent coordination a very fascinating topic and I recommend reading this
by Grötschla and co-authors to know more about forms of coordination design.&lt;/p&gt;
&lt;p&gt;One of those modes is indeed the &amp;ldquo;Supervisor/Manager&amp;rdquo; patter that is at the core of watsonx Orchestrate. Its foundational idea is to have an orchestrating agent taking a overview of the tasks and coordination among its collaborators. Collaborators can pass information among each other and run tasks in parallel or in sequence. Yet, the ultimate check resides to the orchestrator.&lt;/p&gt;
&lt;h3 id="the-modular-solution"&gt;The Modular Solution&lt;/h3&gt;
&lt;p&gt;By decomposing a complex task into smaller, specialized agents (e.g., a &amp;ldquo;Leave Balance Agent&amp;rdquo; and a &amp;ldquo;Submission Agent&amp;rdquo;), you dramatically simplify the decision space. Each sub-agent is given a small, specific set of tools, making its reasoning and selection process highly accurate.&lt;/p&gt;
&lt;p&gt;This architecture assigns &lt;strong&gt;specialized roles&lt;/strong&gt; to agents, allowing them to excel at their dedicated tasks. A supervising agent (the manager) then handles the overall complexity by &lt;strong&gt;delegating&lt;/strong&gt; the user&amp;rsquo;s request to the correct sequence of specialized agents—the orchestration step.&lt;/p&gt;
&lt;p&gt;This modular, collaborative approach is the &lt;strong&gt;best practice for complex workflows&lt;/strong&gt; in watsonx Orchestrate.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="agent-descriptions-writing-for-the-model"&gt;Agent Descriptions: Writing for the Model&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a truth that surprises many developers: &lt;strong&gt;the agent description isn&amp;rsquo;t for humans—it&amp;rsquo;s primarily for the AI&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The description is critically important because it is used by the underlying Large Language Model (LLM) within watsonx Orchestrate to perform reasoning and routing. The LLM reads the description in a &lt;code&gt;YAML&lt;/code&gt; file to determine the agent&amp;rsquo;s capabilities and decide if it should be invoked to handle a user&amp;rsquo;s request.&lt;/p&gt;
&lt;h3 id="what-makes-a-great-description"&gt;What Makes a Great Description&lt;/h3&gt;
&lt;p&gt;A well-crafted description should clearly state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: What the agent does&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inputs&lt;/strong&gt;: The type of information it needs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Outputs&lt;/strong&gt;: What it returns&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constraints&lt;/strong&gt;: Any key limitations or special instructions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This information is packed in the &lt;code&gt;YAML&lt;/code&gt; file with this structure,for a customer service agent running on ServiceNow.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;spec_version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;service_now_agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;groq&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gpt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;oss&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;You&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="n"&gt;who&lt;/span&gt; &lt;span class="n"&gt;specializes&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;customer&lt;/span&gt; &lt;span class="n"&gt;care&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;large&lt;/span&gt; &lt;span class="n"&gt;healthcare&lt;/span&gt; &lt;span class="n"&gt;institution&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;You&lt;/span&gt; &lt;span class="n"&gt;should&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;compassionate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;You&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;able&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="n"&gt;tickets&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;processing&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;human&lt;/span&gt; &lt;span class="n"&gt;later&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Examples&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;adding&lt;/span&gt; &lt;span class="n"&gt;members&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;plans&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;helping&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;documentation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;If&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;having&lt;/span&gt; &lt;span class="n"&gt;difficulty&lt;/span&gt; &lt;span class="n"&gt;either&lt;/span&gt; &lt;span class="n"&gt;generating&lt;/span&gt; &lt;span class="n"&gt;benefits&lt;/span&gt; &lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;adding&lt;/span&gt; &lt;span class="n"&gt;additional&lt;/span&gt; &lt;span class="n"&gt;members&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;their&lt;/span&gt; &lt;span class="n"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;incident&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;our&lt;/span&gt; &lt;span class="n"&gt;support&lt;/span&gt; &lt;span class="n"&gt;team&lt;/span&gt; &lt;span class="n"&gt;using&lt;/span&gt; &lt;span class="n"&gt;service_now_create_incident&lt;/span&gt; &lt;span class="k"&gt;tool&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Be&lt;/span&gt; &lt;span class="n"&gt;compassionate&lt;/span&gt; &lt;span class="n"&gt;about&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;facing&lt;/span&gt; &lt;span class="n"&gt;difficulty&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;get_service_now_incidents&lt;/span&gt; &lt;span class="n"&gt;should&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;formatted&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;github&lt;/span&gt; &lt;span class="n"&gt;style&lt;/span&gt; &lt;span class="n"&gt;formatted&lt;/span&gt; &lt;span class="n"&gt;markdown&lt;/span&gt; &lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;collaborators&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;create_service_now_incident&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;get_my_service_now_incidents&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;get_service_now_incident_by_number&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here some notes about this example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The agent&amp;rsquo;s style is set as default, which is the baseline agentic reasoning mode for native agents in wx orchestrate. It can be changed into the ReAct style.&lt;/li&gt;
&lt;li&gt;The agent is a stand alone one and does not have collaborators. They can be added with additional YAML files stored in the project&amp;rsquo;s workspace and loaded in the environment. You do not need to setup an A2A protocol to let them sync and collaborate, unless we have imported third-party agents that need to coordinate with native ones.&lt;/li&gt;
&lt;li&gt;There is a list of tools, typically Python files or MCP integration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="clarity-over-complexity"&gt;Clarity Over Complexity&lt;/h3&gt;
&lt;p&gt;Using clear, non-technical language ensures the LLM interprets the agent&amp;rsquo;s role correctly, which in turn leads to a better user experience. While developers also read the description, think of it primarily as a &lt;strong&gt;prompt for the AI&amp;rsquo;s logic&lt;/strong&gt;—and AI needs unambiguous instructions.&lt;/p&gt;
&lt;p&gt;Avoid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Technical jargon that the LLM won&amp;rsquo;t recognize&lt;/li&gt;
&lt;li&gt;Internal acronyms without context&lt;/li&gt;
&lt;li&gt;Vague or overly brief descriptions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These introduce ambiguity and &lt;strong&gt;increase the risk of incorrect routing decisions&lt;/strong&gt;. When in doubt, err on the side of clarity. Ambiguity is poison.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="choosing-the-right-tool-python-vs-mcp"&gt;Choosing the Right Tool: Python vs. MCP&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve touched on the role of tools before before, but this topic deserves a deeper explanation. In watsonx Orchestrate, as in the other agentic design frameworks, tools can be developed through Python code or MCP integrations. The question is &lt;strong&gt;when do you use Python tools versus MCP tools?&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="python-tools-via-adk"&gt;Python Tools (via ADK)&lt;/h3&gt;
&lt;p&gt;The Agent Development Kit (ADK) allows developers to create custom Python tools. Python is the ideal choice when you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complex conditional logic (business rules)&lt;/li&gt;
&lt;li&gt;Data manipulation and calculations&lt;/li&gt;
&lt;li&gt;Handling accrual rates, rollovers, and time-based calculations&lt;/li&gt;
&lt;li&gt;Any custom computational logic unique to your business&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, calculating remaining vacation days based on custom seniority rules? That requires Python.&lt;/p&gt;
&lt;h3 id="mcp-tools-model-context-protocol"&gt;MCP Tools (Model Context Protocol)&lt;/h3&gt;
&lt;p&gt;MCP tools are excellent for &lt;strong&gt;integrating with existing systems&lt;/strong&gt;—typically via OpenAPI specifications. They&amp;rsquo;re best suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calling standard REST APIs&lt;/li&gt;
&lt;li&gt;Simple, form-based workflows&lt;/li&gt;
&lt;li&gt;Connecting to external services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What they lack is the ability to embed complex, custom computational logic. If you need to transform data in unique ways or implement business rules that don&amp;rsquo;t exist in an external service, reach for Python.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="key-takeaways"&gt;Key Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Decompose complex workflows&lt;/strong&gt; into specialized agents to reduce the LLM&amp;rsquo;s cognitive load and improve routing accuracy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write descriptions for the AI first&lt;/strong&gt;—clear, unambiguous descriptions are the difference between reliable routing and failed execution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose Python for logic, MCP for integration&lt;/strong&gt;—understand the strength of each tool type and use them appropriately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are my learning in trying to discover and put in practice the best practices to build multi-agents. The
offers several tips on how to write good agent&amp;rsquo;s descriptions, and offers an extensive list of dos and don&amp;rsquo;ts. Check it and have fun.&lt;/p&gt;</description></item><item><title>Building Production-Ready Agents with watsonx Orchestrate: A Pro-Code/Low-Code Architectural Guide</title><link>https://giuliasolinas.github.io/blog/wxorchestrate_i/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://giuliasolinas.github.io/blog/wxorchestrate_i/</guid><description>&lt;h1 id="building-production-ready-agents-with-ibm-watsonx-orchestrate-a-pro-codelow-code-architectural-guide"&gt;Building Production-Ready Agents with IBM watsonx Orchestrate: A Pro-Code/Low-Code Architectural Guide&lt;/h1&gt;
&lt;p&gt;My journey with watsonx Orchestrate began at the Agentic AI Academy in Paris in March 2025 —a pivotal event that shaped my understanding of the product&amp;rsquo;s development direction. Since then, I tested it in demos and in sandbox projects. I decided to write up this series of blog to document (for myself) my journey and understanding of the framework. I want to start with a first clear lesson: &lt;strong&gt;the true power of this platform comes from knowing when to leverage code and when to embrace the low-code interface.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not an &amp;ldquo;either/or&amp;rdquo; decision—it&amp;rsquo;s a calculated architectural synthesis that, when done right, delivers both the flexibility of custom development and the speed of visual assembly.&lt;/p&gt;
&lt;h2 id="the-architectural-synthesis-pro-code-agility-meets-low-code-speed"&gt;The Architectural Synthesis: Pro-Code Agility Meets Low-Code Speed&lt;/h2&gt;
&lt;p&gt;As an AI engineer, I&amp;rsquo;ve learned that the most effective watsonx Orchestrate implementations blend two distinct approaches. Here&amp;rsquo;s how to think about each and when to use them.&lt;/p&gt;
&lt;h3 id="1-the-pro-code-anchor-the-agent-development-kit-adk"&gt;1. The Pro-Code Anchor: The Agent Development Kit (ADK)&lt;/h3&gt;
&lt;p&gt;When you encounter complex, stateful, or computationally intensive tasks—the core business logic—you must reach for the &lt;strong&gt;Agent Development Kit (ADK)&lt;/strong&gt;. This is your &lt;strong&gt;Pro-Code First&lt;/strong&gt; zone.&lt;/p&gt;
&lt;p&gt;Why? Because calculating something like prorated vacation days based on custom seniority rules requires the &lt;strong&gt;flexibility and computational power of a Python tool&lt;/strong&gt;. Simple, low-code &lt;strong&gt;API connectors (like MCP)&lt;/strong&gt; are excellent for making a standard REST call, but they fall short when you need deep, custom programmatic logic and complex data manipulation. The ADK ensures your high-value agents are built on a solid foundation of reliable code.&lt;/p&gt;
&lt;h3 id="2-the-low-code-accelerator-the-agent-builder"&gt;2. The Low-Code Accelerator: The Agent Builder&lt;/h3&gt;
&lt;p&gt;Once your custom logic is secured in a Python tool via the ADK, you pivot to the &lt;strong&gt;Agent Builder&lt;/strong&gt; for orchestration and speed. This is the &lt;strong&gt;Low-Code/Quick Setup&lt;/strong&gt; environment.&lt;/p&gt;
&lt;p&gt;The Builder excels at two things: &lt;strong&gt;assembly and observability&lt;/strong&gt;. It&amp;rsquo;s the fastest way to integrate &lt;strong&gt;knowledge bases&lt;/strong&gt;, assemble a workflow from various skills, and, crucially, to &lt;strong&gt;monitor your agents&lt;/strong&gt;. Features like &lt;strong&gt;Knowledge analytics&lt;/strong&gt; and trace details provide a vital &amp;ldquo;glass cockpit&amp;rdquo; for RAG performance, allowing you to debug and refine your agent&amp;rsquo;s knowledge retrieval without diving back into custom code. It acts as the high-speed glue and the maintenance dashboard.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="3-modularity-is-precision-process-decomposition"&gt;3. Modularity is Precision: Process Decomposition&lt;/h3&gt;
&lt;p&gt;The most critical architectural decision for scalability is &lt;strong&gt;Process Decomposition&lt;/strong&gt;, and it&amp;rsquo;s all about managing the Large Language Model&amp;rsquo;s (LLM&amp;rsquo;s) cognitive load.&lt;/p&gt;
&lt;p&gt;A single, monolithic agent attempting to handle an entire complex workflow (e.g., &amp;ldquo;submit days off&amp;rdquo;) may succumb to tool-routing failure. The LLM gets overwhelmed trying to decide between five different tools at any given step.&lt;/p&gt;
&lt;p&gt;The solution is the &lt;strong&gt;Supervisor/Manager agent topology&lt;/strong&gt;. We break that complex workflow into smaller, single-purpose, &lt;strong&gt;modular agents&lt;/strong&gt; (&amp;ldquo;Check Balance,&amp;rdquo; &amp;ldquo;Submit Request,&amp;rdquo; &amp;ldquo;Confirm Leave&amp;rdquo;). The main &lt;em&gt;Manager&lt;/em&gt; agent now only has one job: delegate to the correct, highly specialized sub-agent. This approach drastically &lt;strong&gt;simplifies the LLM&amp;rsquo;s reasoning and tool-routing decision&lt;/strong&gt;, leading to a measurable boost in &lt;strong&gt;overall execution accuracy and scalability&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="4-the-llms-instruction-manual-routing-clarity"&gt;4. The LLM&amp;rsquo;s Instruction Manual: Routing Clarity&lt;/h3&gt;
&lt;p&gt;Finally, all this architectural precision hinges on one seemingly simple detail: &lt;strong&gt;Agent descriptions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The LLM doesn&amp;rsquo;t &amp;ldquo;read your code&amp;rdquo;; it reads the &lt;strong&gt;description&lt;/strong&gt; of your tool or agent to decide if it&amp;rsquo;s the right fit for the user&amp;rsquo;s intent. Therefore, this description must serve as a &lt;strong&gt;crystal-clear contract&lt;/strong&gt;: non-technical, precise about the agent&amp;rsquo;s purpose, and explicit about its required inputs and expected outputs. &lt;strong&gt;Ambiguity here is poison.&lt;/strong&gt; If the documentation is vague, the LLM&amp;rsquo;s planning function falters, resulting in &lt;strong&gt;unreliable autonomous execution&lt;/strong&gt;—the agent picks the wrong tool, and the user gets a bad experience. Clarity in documentation is paramount to operational reliability.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="key-takeaways"&gt;Key Takeaways&lt;/h2&gt;
&lt;p&gt;Building production-ready agents with watsonx Orchestrate requires a deliberate architectural approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Embrace the hybrid model&lt;/strong&gt;: Use the ADK for complex, custom logic and the Agent Builder for orchestration and monitoring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decompose for scale&lt;/strong&gt;: Break monolithic workflows into specialized, modular agents to reduce cognitive load on the LLM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write for the model&lt;/strong&gt;: Treat agent descriptions as contracts—clear, precise, and unambiguous.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difference between a working agent and a &lt;em&gt;reliable&lt;/em&gt; agent often comes down to these architectural choices. My goal is to master them to build agents that scale.&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Note&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;This is the first of four blogs I wrote to crystallize my understanding of a framework—watsonx Orchestrate—that I use daily. There are many other frameworks for building agents, and IBM watsonx Orchestrate shares some commonalities with them, including Python-based tooling, MCP integrations, and agentic design, among others. Still, each framework has its own peculiarities. If you find this useful, I hope you’ll continue reading the rest of the series.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Agentic AI</title><link>https://giuliasolinas.github.io/projects/agentic_ai/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><guid>https://giuliasolinas.github.io/projects/agentic_ai/</guid><description>&lt;h1 id="agentic-ai"&gt;Agentic AI&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Building Smarter Teams, One Agent at a Time&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I specialize in designing and deploying autonomous agent ecosystems that turn complex workflows into seamless, self‑organizing teams. Using &lt;strong&gt;IBM watsonx Orchestrate&lt;/strong&gt;, I assembled a sandbox crew of business analysts who collaborate in real‑time to surface users stories, automate the identification of process requirements, and accelerate decision-making.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What makes me excited about this project: high degree of specialization, modularity, possibility to scale in tasks, smaller models for each specialized agents, ReAcT capabiliites, orchestration by design.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;At the same time, I explored the &lt;strong&gt;Google SDK for Agent Building&lt;/strong&gt; and crafted a sandbox project—a virtual podcast crew that researches, scripts, and narrates fintech news on‑the‑fly. The agents coordinate research, fact‑checking, and voice synthesis, delivering a polished, up‑to‑date podcast episode without human intervention.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What I learned from this project: each agent is supported by a different foundation model like LLM for text creation, multi-modal models for information parsing (including imaging and IDP capabilities), and text-to-speech, each packed in diffrent agents as modular components.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Together, these experiences showcase my ability to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Design modular agent architectures&lt;/strong&gt; that integrate with existing data and NLP pipelines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestrate multi‑agent collaboration&lt;/strong&gt; through clear role‑based interactions.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;[NOTE!]
My next chapter here in this area is AgentOps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Do you want to co-develop with me? Just reach out.&lt;/p&gt;
&lt;hr&gt;</description></item></channel></rss>