{"id":9211,"date":"2026-10-15T17:28:27","date_gmt":"2026-10-15T11:58:27","guid":{"rendered":"https:\/\/www.tisatech.in\/blog\/?p=9211"},"modified":"2026-10-15T17:28:27","modified_gmt":"2026-10-15T11:58:27","slug":"how-to-build-a-multi-agent-ai-system-using-python","status":"publish","type":"post","link":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/","title":{"rendered":"How to Build a Multi-Agent AI System Using Python"},"content":{"rendered":"\n<p>AI agents can perform tasks such as answering questions, analyzing information, and using tools to solve problems. But when a task involves several steps, one agent may not be enough to handle everything efficiently.<\/p>\n\n\n\n<p>A multi-agent AI system solves this by assigning different responsibilities to specialized agents. For example, one agent can research a topic, another can analyze the findings, and a third can review the final answer.<\/p>\n\n\n\n<p>In this tutorial, you\u2019ll build a multi-agent AI system using Python and the OpenAI API. You\u2019ll create three agents for research, analysis, and review, then connect them with <a href=\"https:\/\/docs.langchain.com\/oss\/python\/langgraph\/overview\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LangGraph<\/a> to manage the workflow. You\u2019ll also learn how to pass results between agents, handle failures, and decide when multiple agents are worth the extra complexity.<\/p>\n\n\n\n<style>\n\n\/* =========================================\n\n   WHATSAPP DEMO BANNER\n\n========================================= *\/\n \n.tisa-whatsapp-demo {\n\n    position: relative !important;\n\n    width: 100% !important;\n\n    height: 76px !important;\n\n    box-sizing: border-box !important;\n\n    background: linear-gradient(135deg, #ffffff 0%, #f5fff8 100%) !important;\n\n    border: 2px solid #25D366 !important;\n\n    border-radius: 16px !important;\n\n    margin: 28px 0 !important;\n\n    padding: 0 160px 0 94px !important;\n\n    font-family: Arial, sans-serif !important;\n\n    box-shadow: 0 8px 25px rgba(37, 211, 102, 0.10) !important;\n\n}\n \n.tisa-whatsapp-icon {\n\n    position: absolute !important;\n\n    left: 24px !important;\n\n    top: 50% !important;\n\n    transform: translateY(-50%) !important;\n\n    width: 42px !important;\n\n    height: 42px !important;\n\n    border-radius: 50% !important;\n\n    background: #e9fff1 !important;\n\n    display: flex !important;\n\n    align-items: center !important;\n\n    justify-content: center !important;\n\n}\n \n.tisa-whatsapp-icon img {\n\n    display: block !important;\n\n    width: 24px !important;\n\n    height: 24px !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n}\n \n.tisa-whatsapp-text {\n\n    position: absolute !important;\n\n    left: 78px !important;\n\n    top: 50% !important;\n\n    transform: translateY(-50%) !important;\n\n    color: #202020 !important;\n\n    font-size: 16px !important;\n\n    line-height: 1 !important;\n\n    font-weight: 700 !important;\n\n    white-space: nowrap !important;\n\n}\n \n.tisa-whatsapp-button {\n\n    position: absolute !important;\n\n    right: 16px !important;\n\n    top: 50% !important;\n\n    transform: translateY(-50%) !important;\n\n    display: flex !important;\n\n    align-items: center !important;\n\n    justify-content: center !important;\n\n    height: 42px !important;\n\n    box-sizing: border-box !important;\n\n    padding: 0 20px !important;\n\n    margin: 0 !important;\n\n    background: #25D366 !important;\n\n    color: #ffffff !important;\n\n    border-radius: 10px !important;\n\n    text-decoration: none !important;\n\n    font-size: 13px !important;\n\n    line-height: 1 !important;\n\n    font-weight: 700 !important;\n\n    white-space: nowrap !important;\n\n    box-shadow: 0 5px 14px rgba(37, 211, 102, 0.20) !important;\n\n}\n \n \n\/* =========================================\n\n   MOBILE VIEW\n\n========================================= *\/\n \n@media (max-width: 767px) {\n \n    .tisa-whatsapp-demo {\n\n        height: 68px !important;\n\n        padding: 0 105px 0 64px !important;\n\n        border-radius: 14px !important;\n\n        margin: 22px 0 !important;\n\n    }\n \n    .tisa-whatsapp-icon {\n\n        left: 14px !important;\n\n        width: 38px !important;\n\n        height: 38px !important;\n\n    }\n \n    .tisa-whatsapp-icon img {\n\n        width: 22px !important;\n\n        height: 22px !important;\n\n    }\n \n    .tisa-whatsapp-text {\n\n        left: 62px !important;\n\n        font-size: 13px !important;\n\n        line-height: 1.2 !important;\n\n        white-space: nowrap !important;\n\n    }\n \n    .tisa-whatsapp-button {\n\n        right: 10px !important;\n\n        height: 38px !important;\n\n        padding: 0 13px !important;\n\n        border-radius: 9px !important;\n\n        font-size: 12px !important;\n\n    }\n\n}\n \n \n\/* =========================================\n\n   SMALL MOBILE\n\n========================================= *\/\n \n@media (max-width: 480px) {\n \n    .tisa-whatsapp-demo {\n\n        height: 64px !important;\n\n        padding: 0 88px 0 58px !important;\n\n        border-radius: 13px !important;\n\n    }\n \n    .tisa-whatsapp-icon {\n\n        left: 11px !important;\n\n        width: 36px !important;\n\n        height: 36px !important;\n\n    }\n \n    .tisa-whatsapp-icon img {\n\n        width: 21px !important;\n\n        height: 21px !important;\n\n    }\n \n    .tisa-whatsapp-text {\n\n        left: 55px !important;\n\n        font-size: 12px !important;\n\n    }\n \n    .tisa-whatsapp-button {\n\n        right: 8px !important;\n\n        height: 36px !important;\n\n        padding: 0 11px !important;\n\n        font-size: 11px !important;\n\n    }\n\n}\n<\/style>\n \n<div class=\"tisa-whatsapp-demo\">\n \n  <!-- WhatsApp Icon -->\n<div class=\"tisa-whatsapp-icon\">\n<img decoding=\"async\"\n\n      src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/6\/6b\/WhatsApp.svg\"\n\n      alt=\"WhatsApp\"\n\n      width=\"24\"\n\n      height=\"24\"\n>\n<\/div>\n \n  <!-- Text -->\n<div class=\"tisa-whatsapp-text\">\n\n    Book a Free Demo Class\n<\/div>\n \n  <!-- Button -->\n<a\n\n    href=\"https:\/\/wa.me\/919828080898\"\n\n    target=\"_blank\"\n\n    rel=\"noopener noreferrer nofollow\"\n\n    class=\"tisa-whatsapp-button\"\n>\n\n    Chat Now\n<\/a>\n \n<\/div>\n \n\n\n\n<h2 class=\"wp-block-heading\">How Does a Multi-Agent AI System Work?<\/h2>\n\n\n\n<p>A multi-agent AI system divides a complex task among specialized AI agents. Each agent handles a specific part of the work, and the system combines their outputs to reach a final result.<\/p>\n\n\n\n<p>Three components make this possible:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Agents:<\/strong> Handle specific tasks using their instructions, language models, and available tools.<\/li>\n\n\n\n<li><strong>Shared state:<\/strong> Stores task inputs, intermediate results, and other information agents need to continue the workflow.<\/li>\n\n\n\n<li><strong>Orchestrator:<\/strong> Decides which agent runs next, passes information between tasks, and manages the workflow.<\/li>\n<\/ul>\n\n\n\n<p>Developers can connect these components in three common ways:<\/p>\n\n\n\n\n<style>\n.workflow-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-family: Arial, sans-serif;\n  color: #111111;\n  text-align: center;\n  background-color: #FFFFFF;\n}\n\n.workflow-table th {\n  background-color: #FF4500;\n  color: #FFFFFF;\n  font-size: 18px;\n  font-weight: 700;\n  padding: 16px 12px;\n  border: 1px solid #E9E9E9;\n}\n\n.workflow-table td {\n  padding: 18px 14px;\n  font-size: 16px;\n  line-height: 1.5;\n  border: 1px solid #E9E9E9;\n}\n\n.workflow-table td:first-child {\n  font-weight: 700;\n}\n\n@media (max-width: 600px) {\n  .workflow-table th,\n  .workflow-table td {\n    padding: 12px 8px;\n    font-size: 14px;\n  }\n}\n<\/style>\n\n<table class=\"workflow-table\">\n  <thead>\n    <tr>\n      <th>Workflow Pattern<\/th>\n      <th>How It Works<\/th>\n      <th>Example<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Sequential<\/td>\n      <td>Agents work one after another, passing results forward.<\/td>\n      <td>Research \u2192 Analysis \u2192 Review<\/td>\n    <\/tr>\n    <tr>\n      <td>Supervisor<\/td>\n      <td>A coordinator assigns tasks to specialized agents.<\/td>\n      <td>A manager delegates research and writing.<\/td>\n    <\/tr>\n    <tr>\n      <td>Parallel<\/td>\n      <td>Multiple agents work on separate tasks simultaneously, then combine their results.<\/td>\n      <td>Three agents research different aspects of a topic.<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n\n\n<p><br>For beginners, a sequential workflow is the easiest starting point because each step has a clear input and output. Once it works reliably, you can introduce parallel tasks or a supervisor to handle more complex workflows. The LangGraph documentation explains how to build these workflows using nodes, edges, and shared state.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Which Python Framework Is Best for Multi-Agent AI Systems?<\/h2>\n\n\n\n<p>The best framework depends on your workflow, the level of control you need, and how much coordination code you want to manage.<\/p>\n\n\n\n\n<style>\n.framework-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-family: Arial, sans-serif;\n  color: #111111;\n  text-align: center;\n  background: #FFFFFF;\n}\n\n.framework-table th {\n  background: #FF4500;\n  color: #FFFFFF;\n  font-size: 18px;\n  font-weight: 700;\n  padding: 16px 12px;\n  border: 1px solid #E9E9E9;\n}\n\n.framework-table td {\n  padding: 18px 14px;\n  font-size: 16px;\n  line-height: 1.5;\n  border: 1px solid #E9E9E9;\n}\n\n.framework-table td:first-child {\n  font-weight: 700;\n}\n\n@media (max-width: 600px) {\n  .framework-table th,\n  .framework-table td {\n    padding: 12px 8px;\n    font-size: 14px;\n  }\n}\n<\/style>\n\n<table class=\"framework-table\">\n  <thead>\n    <tr>\n      <th>Framework or Approach<\/th>\n      <th>Best For<\/th>\n      <th>Key Strength<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Plain Python<\/td>\n      <td>Learning the basics and building simple workflows<\/td>\n      <td>Full control with minimal dependencies<\/td>\n    <\/tr>\n    <tr>\n      <td>CrewAI<\/td>\n      <td>Teams of agents with defined roles<\/td>\n      <td>Role-based task coordination<\/td>\n    <\/tr>\n    <tr>\n      <td>OpenAI Agents SDK<\/td>\n      <td>Tool use and agent handoffs<\/td>\n      <td>Built-in handoffs, guardrails, and tracing<\/td>\n    <\/tr>\n    <tr>\n      <td>LangGraph<\/td>\n      <td>Stateful workflows with conditional routing<\/td>\n      <td>Explicit control over workflow steps and state<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n\n\n<p><br>If you\u2019re new to multi-agent systems, start with plain Python to understand how agents pass tasks and results between functions. Move to a framework when you need features such as agent handoffs, shared state, conditional routing, or execution tracing.<\/p>\n\n\n\n<p>You may not need multiple agents at all. For a simple task, one agent or a sequence of model calls can be easier to build, test, and maintain.<\/p>\n\n\n\n<a href=\"https:\/\/www.tisatech.in\/blog\/ai-agent-projects-for-students-and-beginners\/\" class=\"tisa-ar\" target=\"_blank\"><div class=\"tisa-ar-i\"><div class=\"tisa-ar-c\"><div class=\"tisa-ar-b\"><svg class=\"tisa-ar-bi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 4v16H7a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\"\/><path d=\"M9 8h6M9 12h6\"\/><\/svg>Also Read<\/div><div class=\"tisa-ar-h\">AI Agent Projects for Students and Beginners\n \n\n<\/div><\/div><div class=\"tisa-ar-a\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/div><\/div><\/a><style>.tisa-ar{text-decoration:none;color:inherit;display:block;margin:32px 0}.tisa-ar-i{position:relative;display:flex;align-items:stretch;background:#fff;border:1px solid #ffd9c4;border-left:6px solid #E85D24;border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(232,93,36,.1),0 2px 6px rgba(0,0,0,.04);font-family:'Inter','Segoe UI',Arial,sans-serif;transition:all .25s ease}.tisa-ar-c{flex:1;padding:20px 22px;display:flex;flex-direction:column;justify-content:center;min-width:0}.tisa-ar-b{display:inline-flex;align-items:center;gap:6px;background:#FFF1E8;color:#C94B17;font-size:12px;font-weight:700;padding:4px 12px;border-radius:999px;width:fit-content;margin-bottom:10px;letter-spacing:.5px;text-transform:uppercase}.tisa-ar-bi{width:14px;height:14px;flex-shrink:0}.tisa-ar-h{color:#000;font-weight:600;font-size:17px;line-height:1.45;word-break:break-word}.tisa-ar-a{flex:0 0 auto;width:70px;background:#E85D24;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .25s ease}.tisa-ar-a svg{width:26px;height:26px}.tisa-ar:hover .tisa-ar-i{transform:translateY(-3px);box-shadow:0 12px 28px rgba(232,93,36,.18),0 4px 10px rgba(0,0,0,.06);border-left-width:8px}.tisa-ar:hover .tisa-ar-a{background:#C94B17}.tisa-ar:hover .tisa-ar-a svg{transform:translateX(4px);transition:transform .25s ease}@media (max-width:768px){.tisa-ar{margin:24px 0}.tisa-ar-i{border-left-width:5px;border-radius:12px}.tisa-ar-c{padding:16px 18px}.tisa-ar-h{font-size:15.5px}.tisa-ar-a{width:58px}.tisa-ar-a svg{width:22px;height:22px}}@media (max-width:480px){.tisa-ar{margin:20px 0}.tisa-ar-i{border-left-width:4px;border-radius:10px;box-shadow:0 4px 14px rgba(232,93,36,.12),0 2px 4px rgba(0,0,0,.04)}.tisa-ar-c{padding:14px 14px}.tisa-ar-b{font-size:10px;padding:3px 10px;margin-bottom:8px;letter-spacing:.3px}.tisa-ar-bi{width:12px;height:12px}.tisa-ar-h{font-size:14.5px;line-height:1.4}.tisa-ar-a{width:48px}.tisa-ar-a svg{width:20px;height:20px}}@media (max-width:360px){.tisa-ar-c{padding:12px}.tisa-ar-h{font-size:14px}.tisa-ar-a{width:44px}.tisa-ar-a svg{width:18px;height:18px}}<\/style>\n\n\n\n<h2 class=\"wp-block-heading\">How Do You Build a Multi-Agent AI System in Python?<\/h2>\n\n\n\n<p>Let\u2019s build a research pipeline using Python and the OpenAI API. Three specialized agents will gather facts, analyze the findings, and prepare a final summary.<\/p>\n\n\n\n<p>You\u2019ll need basic Python knowledge and an OpenAI API key. If you\u2019re new to agent development, start with this <a href=\"https:\/\/www.tisatech.in\/blog\/build-ai-agent-using-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python AI agent tutorial<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Create a Python Environment<\/h4>\n\n\n\n<p>Create a project folder and move into it.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-01\">\n  <div class=\"tisa-terminal-01-header\">\n    <span>TERMINAL<\/span>\n    <button class=\"tisa-terminal-01-copy\" onclick=\"var b=this; var c=b.closest('.tisa-terminal-01').querySelector('code').innerText; navigator.clipboard.writeText(c).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>mkdir multi-agent-python\ncd multi-agent-python\npython -m venv venv<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-01 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-01 .tisa-terminal-01-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-01 .tisa-terminal-01-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-01 .tisa-terminal-01-copy {\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-01 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-01 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-01 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-01 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<p>Activate the virtual environment.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-02\">\n  <div class=\"tisa-terminal-02-header\">\n    <span>MACOS OR LINUX<\/span>\n    <button class=\"tisa-terminal-02-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-02').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>source venv\/bin\/activate<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-02 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-02 .tisa-terminal-02-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-02 .tisa-terminal-02-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-02 .tisa-terminal-02-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-02 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-02 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-02 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-02 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n\n<div class=\"tisa-terminal-03\">\n  <div class=\"tisa-terminal-03-header\">\n    <span>WINDOWS POWERSHELL<\/span>\n    <button class=\"tisa-terminal-03-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-03').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>.\\venv\\Scripts\\Activate.ps1<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-03 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-03 .tisa-terminal-03-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-03 .tisa-terminal-03-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-03 .tisa-terminal-03-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-03 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-03 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-03 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-03 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<p>Install the OpenAI Python library.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-04\">\n  <div class=\"tisa-terminal-04-header\">\n    <span>TERMINAL<\/span>\n    <button class=\"tisa-terminal-04-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-04').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>python -m pip install openai<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-04 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-04 .tisa-terminal-04-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-04 .tisa-terminal-04-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-04 .tisa-terminal-04-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-04 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-04 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-04 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-04 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Set Your API Key<\/h4>\n\n\n\n<p>Create an API key through the<a href=\"https:\/\/platform.openai.com\/api-keys\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> OpenAI Platform<\/a> and set it as an environment variable.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-05\">\n  <div class=\"tisa-terminal-05-header\">\n    <span>MACOS OR LINUX<\/span>\n    <button class=\"tisa-terminal-05-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-05').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>export OPENAI_API_KEY=\"your-actual-api-key-here\"<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-05 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-05 .tisa-terminal-05-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-05 .tisa-terminal-05-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-05 .tisa-terminal-05-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-05 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre-wrap;\n  overflow-wrap: anywhere;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-05 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-05 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-05 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n\n<div class=\"tisa-terminal-06\">\n  <div class=\"tisa-terminal-06-header\">\n    <span>WINDOWS POWERSHELL<\/span>\n    <button class=\"tisa-terminal-06-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-06').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>$env:OPENAI_API_KEY = \"your-actual-api-key-here\"<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-06 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-06 .tisa-terminal-06-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-06 .tisa-terminal-06-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-06 .tisa-terminal-06-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-06 pre {\n  display: block;\n  background: transparent;\n  color: #111111;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  white-space: pre-wrap;\n  overflow-wrap: anywhere;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-06 pre code {\n  background: transparent;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n  padding: 0;\n  border: 0;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-06 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-06 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<p>Replace the placeholder with your actual key. Keep it private and never commit it to a public repository.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 3: Create the Agent Pipeline<\/h4>\n\n\n\n<p>Create a file named <em>main.py<\/em> and add the following code.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-07\">\n  <div class=\"tisa-terminal-07-header\">\n    <span>PYTHON \u2014 main.py<\/span>\n    <button class=\"tisa-terminal-07-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-07').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>from openai import OpenAI\n\nclient = OpenAI()\n\n\ndef ask(role, task):\n    response = client.chat.completions.create(\n        model=\"gpt-4o-mini\",\n        messages=[\n            {\"role\": \"system\", \"content\": role},\n            {\"role\": \"user\", \"content\": task},\n        ],\n        timeout=30.0,\n    )\n\n    answer = response.choices[0].message.content\n\n    if not answer or not answer.strip():\n        raise ValueError(\"The agent returned an empty response.\")\n\n    return answer.strip()\n\n\nresearcher = (\n    \"You are a researcher. Identify three key facts about \"\n    \"the topic. Do not invent facts or unsupported statistics.\"\n)\n\nanalyst = (\n    \"You are an analyst. Identify the main insight from \"\n    \"the supplied research. Use only the information provided.\"\n)\n\nreviewer = (\n    \"You are a reviewer. Check the supplied analysis for \"\n    \"clarity and consistency, then write a concise summary.\"\n)\n\n\ndef main():\n    topic = \"Solar energy in Rajasthan\"\n\n    try:\n        facts = ask(researcher, topic)\n        print(\"Research completed.\")\n\n        insight = ask(analyst, facts)\n        print(\"Analysis completed.\")\n\n        final = ask(reviewer, insight)\n        print(\"\\nFinal summary:\\n\", final)\n\n    except Exception as error:\n        print(f\"Workflow failed: {error}\")\n\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-07 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n  color: #111111;\n  font-family: Arial, sans-serif;\n}\n\n.tisa-terminal-07 .tisa-terminal-07-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 10px;\n}\n\n.tisa-terminal-07 .tisa-terminal-07-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-07 .tisa-terminal-07-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-07 pre {\n  display: block;\n  margin: 0;\n  padding: 0;\n  background: transparent;\n  border: 0;\n  color: #111111;\n  white-space: pre;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 1.8;\n  tab-size: 4;\n}\n\n.tisa-terminal-07 pre code {\n  background: transparent;\n  border: 0;\n  padding: 0;\n  color: #111111;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: inherit;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-07 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-07 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<p>The <strong><em>ask()<\/em><\/strong> function sends each agent\u2019s instructions and task to the model. The <em>main()<\/em> function controls the sequence and passes each response to the next agent.<\/p>\n\n\n\n<p>This example uses OpenAI\u2019s <a href=\"https:\/\/platform.openai.com\/docs\/api-reference\/chat\/create\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Chat Completions API<\/a>. The <em>model<\/em> parameter selects the model, while <em>messages<\/em> supply its instructions and input. Make sure the selected model is available to your account.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 4: Run the Program<\/h4>\n\n\n\n<p>Run the script from your activated virtual environment.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-08\">\n  <div class=\"tisa-terminal-08-header\">\n    <span>TERMINAL<\/span>\n    <button class=\"tisa-terminal-08-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-08').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>python main.py<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-08 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  color: #111111;\n  font-family: Arial, sans-serif;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n}\n\n.tisa-terminal-08 .tisa-terminal-08-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-08 .tisa-terminal-08-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-08 .tisa-terminal-08-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-08 pre {\n  margin: 0;\n  padding: 0;\n  background: transparent;\n  border: 0;\n  color: #111111;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n}\n\n.tisa-terminal-08 pre code {\n  font-family: Consolas, \"Courier New\", monospace;\n  color: #111111;\n  background: transparent;\n  border: 0;\n  padding: 0;\n  font-size: inherit;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-08 {\n    padding: 16px;\n  }\n}\n<\/style>\n\n\n\n\n<p>The researcher generates three key facts about solar energy in Rajasthan using the model&#8217;s existing knowledge. Because the pipeline does not retrieve external sources, treat these outputs as unverified model-generated information rather than verified research findings. The analyst identifies the main insight from those facts, and the reviewer prepares the final summary. Because this example does not use external research tools, verify factual claims against reliable sources before relying on them.<\/p>\n\n\n\n<p>Each agent makes a separate model call, but Python controls the workflow. The agents do not have independent memory, external research tools, or automatic retry logic. The timeout limits how long each request can wait, and the empty-response check prevents blank output from passing to the next agent.<\/p>\n\n\n\n<p>This simple pipeline demonstrates the core multi-agent pattern: <strong>separate roles, sequential execution, and output passing.<\/strong><\/p>\n\n\n\n<a href=\"https:\/\/www.tisatech.in\/blog\/ai-agents-vs-agentic-ai\/\" class=\"tisa-ar\" target=\"_blank\"><div class=\"tisa-ar-i\"><div class=\"tisa-ar-c\"><div class=\"tisa-ar-b\"><svg class=\"tisa-ar-bi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 4v16H7a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\"\/><path d=\"M9 8h6M9 12h6\"\/><\/svg>Also Read<\/div><div class=\"tisa-ar-h\">AI Agents vs Agentic AI: What\u2019s the Difference?\n \n\n<\/div><\/div><div class=\"tisa-ar-a\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/div><\/div><\/a><style>.tisa-ar{text-decoration:none;color:inherit;display:block;margin:32px 0}.tisa-ar-i{position:relative;display:flex;align-items:stretch;background:#fff;border:1px solid #ffd9c4;border-left:6px solid #E85D24;border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(232,93,36,.1),0 2px 6px rgba(0,0,0,.04);font-family:'Inter','Segoe UI',Arial,sans-serif;transition:all .25s ease}.tisa-ar-c{flex:1;padding:20px 22px;display:flex;flex-direction:column;justify-content:center;min-width:0}.tisa-ar-b{display:inline-flex;align-items:center;gap:6px;background:#FFF1E8;color:#C94B17;font-size:12px;font-weight:700;padding:4px 12px;border-radius:999px;width:fit-content;margin-bottom:10px;letter-spacing:.5px;text-transform:uppercase}.tisa-ar-bi{width:14px;height:14px;flex-shrink:0}.tisa-ar-h{color:#000;font-weight:600;font-size:17px;line-height:1.45;word-break:break-word}.tisa-ar-a{flex:0 0 auto;width:70px;background:#E85D24;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .25s ease}.tisa-ar-a svg{width:26px;height:26px}.tisa-ar:hover .tisa-ar-i{transform:translateY(-3px);box-shadow:0 12px 28px rgba(232,93,36,.18),0 4px 10px rgba(0,0,0,.06);border-left-width:8px}.tisa-ar:hover .tisa-ar-a{background:#C94B17}.tisa-ar:hover .tisa-ar-a svg{transform:translateX(4px);transition:transform .25s ease}@media (max-width:768px){.tisa-ar{margin:24px 0}.tisa-ar-i{border-left-width:5px;border-radius:12px}.tisa-ar-c{padding:16px 18px}.tisa-ar-h{font-size:15.5px}.tisa-ar-a{width:58px}.tisa-ar-a svg{width:22px;height:22px}}@media (max-width:480px){.tisa-ar{margin:20px 0}.tisa-ar-i{border-left-width:4px;border-radius:10px;box-shadow:0 4px 14px rgba(232,93,36,.12),0 2px 4px rgba(0,0,0,.04)}.tisa-ar-c{padding:14px 14px}.tisa-ar-b{font-size:10px;padding:3px 10px;margin-bottom:8px;letter-spacing:.3px}.tisa-ar-bi{width:12px;height:12px}.tisa-ar-h{font-size:14.5px;line-height:1.4}.tisa-ar-a{width:48px}.tisa-ar-a svg{width:20px;height:20px}}@media (max-width:360px){.tisa-ar-c{padding:12px}.tisa-ar-h{font-size:14px}.tisa-ar-a{width:44px}.tisa-ar-a svg{width:18px;height:18px}}<\/style>\n\n\n\n<h2 class=\"wp-block-heading\">How Do AI Agents Communicate With Each Other in Python?<\/h2>\n\n\n\n<p>In Python, agents pass information through function calls, shared data, or workflow controls. In the example above, the researcher passes its findings to the analyst, and the analyst passes its insights to the reviewer. Python controls the sequence and transfers each agent\u2019s output to the next.<\/p>\n\n\n\n<p>As systems grow, developers can use different communication methods:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Shared state:<\/strong> Stores results that multiple agents need to access.<\/li>\n\n\n\n<li><strong>Message history:<\/strong> Keeps relevant earlier messages available for context.<\/li>\n\n\n\n<li><strong>Handoffs:<\/strong> Transfers control between agents.<\/li>\n\n\n\n<li><strong>Structured outputs:<\/strong> Passes data in a predictable format, such as a dictionary or validated JSON.<\/li>\n<\/ul>\n\n\n\n<p>For example, a research agent can return findings with source URLs in a structured format, allowing the analyst to evaluate each finding instead of processing a long paragraph.<\/p>\n\n\n\n<p>Pass only the information the next agent needs. This reduces token usage and limits irrelevant context. Validate important outputs before passing them along, especially when later steps depend on their accuracy.<\/p>\n\n\n\n<p>For more advanced workflows, LangGraph\u2019s documentation explains how to manage shared state and coordinate agent execution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Can You Build Multi-Agent Systems With LangGraph?<\/h2>\n\n\n\n<p>Plain Python works well for a fixed sequence of agents. When you need conditional routing, shared state, or repeated steps, LangGraph helps you manage the workflow as a graph.<\/p>\n\n\n\n<p>Each node runs a function, each edge controls the next step, and the shared state carries information between nodes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Install LangGraph<\/h4>\n\n\n\n<p>Activate your existing virtual environment and run:<\/p>\n\n\n\n\n<div class=\"tisa-terminal-09\">\n  <div class=\"tisa-terminal-09-header\">\n    <span>TERMINAL<\/span>\n    <button class=\"tisa-terminal-09-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-09').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>python -m pip install langgraph<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-09 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  color: #111111;\n  font-family: Arial, sans-serif;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n}\n\n.tisa-terminal-09 .tisa-terminal-09-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-09 .tisa-terminal-09-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-09 .tisa-terminal-09-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-09 pre {\n  margin: 0;\n  padding: 0;\n  background: transparent;\n  border: 0;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n  color: #111111;\n}\n\n.tisa-terminal-09 pre code {\n  font-family: Consolas, \"Courier New\", monospace;\n  color: #111111;\n  background: transparent;\n  border: 0;\n  padding: 0;\n  font-size: inherit;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-09 {\n    padding: 16px;\n  }\n}\n<\/style>\n\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Create the Graph<\/h4>\n\n\n\n<p>Create <em>langgraph_agent.py<\/em>. This example reuses the <em>ask()<\/em> function and agent role instructions from <em>main.py<\/em>. Make sure <em>main.py<\/em> does not run the pipeline when another file imports it.<\/p>\n\n\n\n\n<div class=\"tisa-terminal-10\">\n  <div class=\"tisa-terminal-10-header\">\n    <span>PYTHON \u2014 langgraph_workflow.py<\/span>\n    <button class=\"tisa-terminal-10-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-10').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>from typing import TypedDict\nfrom langgraph.graph import StateGraph, START, END\nfrom main import ask, researcher, analyst, reviewer\n\n\nclass State(TypedDict, total=False):\n    topic: str\n    facts: str\n    insight: str\n    final: str\n\n\ndef research_node(state: State):\n    return {\"facts\": ask(researcher, state[\"topic\"])}\n\n\ndef analyst_node(state: State):\n    return {\"insight\": ask(analyst, state[\"facts\"])}\n\n\ndef reviewer_node(state: State):\n    return {\"final\": ask(reviewer, state[\"insight\"])}\n\n\ngraph = StateGraph(State)\ngraph.add_node(\"research\", research_node)\ngraph.add_node(\"analyst\", analyst_node)\ngraph.add_node(\"reviewer\", reviewer_node)\n\ngraph.add_edge(START, \"research\")\ngraph.add_edge(\"research\", \"analyst\")\ngraph.add_edge(\"analyst\", \"reviewer\")\ngraph.add_edge(\"reviewer\", END)\n\napp = graph.compile()\n\n\nif __name__ == \"__main__\":\n    result = app.invoke({\"topic\": \"Solar energy in Rajasthan\"})\n    print(\"Final summary:\\n\", result[\"final\"])<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-10 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  color: #111111;\n  font-family: Arial, sans-serif;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n}\n\n.tisa-terminal-10 .tisa-terminal-10-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 10px;\n}\n\n.tisa-terminal-10 .tisa-terminal-10-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.5px;\n}\n\n.tisa-terminal-10 .tisa-terminal-10-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-10 pre {\n  margin: 0;\n  padding: 0;\n  background: transparent;\n  border: 0;\n  white-space: pre;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 1.8;\n  tab-size: 4;\n  color: #111111;\n}\n\n.tisa-terminal-10 pre code {\n  font-family: Consolas, \"Courier New\", monospace;\n  color: #111111;\n  background: transparent;\n  border: 0;\n  padding: 0;\n  font-size: inherit;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-10 {\n    padding: 16px;\n  }\n\n  .tisa-terminal-10 pre {\n    font-size: 12px;\n  }\n}\n<\/style>\n\n\n\n\n<h4 class=\"wp-block-heading\">Step 3: Run the Workflow<\/h4>\n\n\n\n\n<div class=\"tisa-terminal-11\">\n  <div class=\"tisa-terminal-11-header\">\n    <span>TERMINAL<\/span>\n    <button class=\"tisa-terminal-11-copy\" onclick=\"var b=this; navigator.clipboard.writeText(b.closest('.tisa-terminal-11').querySelector('code').innerText).then(function(){b.innerText='Copied!';setTimeout(function(){b.innerText='Copy Code'},1500)});\">Copy Code<\/button>\n  <\/div>\n  <pre><code>python langgraph_agent.py<\/code><\/pre>\n<\/div>\n\n<style>\n.tisa-terminal-11 {\n  background: #FFF0D9;\n  border: 1px solid #FF9B45;\n  border-radius: 13px;\n  padding: 20px 22px;\n  color: #111111;\n  font-family: Arial, sans-serif;\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  margin: 16px 0;\n  overflow: hidden;\n}\n\n.tisa-terminal-11 .tisa-terminal-11-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 6px;\n}\n\n.tisa-terminal-11 .tisa-terminal-11-header span {\n  color: #A8320B;\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.7px;\n}\n\n.tisa-terminal-11 .tisa-terminal-11-copy {\n  flex-shrink: 0;\n  background: #FFD8AC;\n  border: 1px solid #FFB56F;\n  color: #87330F;\n  border-radius: 7px;\n  padding: 8px 14px;\n  font-size: 12px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.tisa-terminal-11 pre {\n  margin: 0;\n  padding: 0;\n  background: transparent;\n  border: 0;\n  white-space: pre-wrap;\n  overflow-x: auto;\n  font-size: 14px;\n  line-height: 2;\n  color: #111111;\n}\n\n.tisa-terminal-11 pre code {\n  font-family: Consolas, \"Courier New\", monospace;\n  color: #111111;\n  background: transparent;\n  border: 0;\n  padding: 0;\n  font-size: inherit;\n}\n\n@media (max-width: 600px) {\n  .tisa-terminal-11 {\n    padding: 16px;\n  }\n}\n<\/style>\n\n\n\n\n<p>The graph runs the researcher first, passes its findings to the analyst, and sends the analysis to the reviewer. The final summary appears in the terminal.<\/p>\n\n\n\n<p>The <em>State<\/em> type defines the data passed between nodes. Each node returns an update, while the edges define the execution order:<\/p>\n\n\n\n<p><strong>START \u2192 Research \u2192 Analysis \u2192 Review \u2192 END<\/strong><\/p>\n\n\n\n<p>The workflow follows the same sequence as the plain Python version, but LangGraph makes it easier to add conditional branches and checkpoints. For example, you can validate the research before analysis and route weak results back for another attempt. Set a retry limit to prevent endless loops.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Happens When an Agent Fails?<\/h2>\n\n\n\n<p>An agent can fail when an API request times out, a service returns an error, or the model produces an empty or invalid response. If one agent fails, the workflow may stop or pass incomplete data to the next agent.<\/p>\n\n\n\n<p>Use these safeguards to keep the workflow reliable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Validate outputs:<\/strong> Check required fields and formats before passing results to another agent.<\/li>\n\n\n\n<li><strong>Set timeouts and retries:<\/strong> Retry temporary failures, such as rate limits or network errors, with a limited retry policy.<\/li>\n\n\n\n<li><strong>Limit loops:<\/strong> Set a maximum number of attempts in conditional workflows.<\/li>\n\n\n\n<li><strong>Log failures:<\/strong> Record which agent failed and why, without exposing API keys or sensitive data.<\/li>\n\n\n\n<li><strong>Control costs:<\/strong> Avoid unnecessary model calls and choose a model that fits each task.<\/li>\n<\/ul>\n\n\n\n<p>In this Python example, <em>ask()<\/em> raises a <em>ValueError<\/em> when the model returns an empty response. The <em>try\/except<\/em> block catches the error and stops the workflow without retrying the request. For a production system, handle specific API errors separately, retry temporary failures with a limited backoff policy, and stop retrying when the error requires intervention, such as invalid credentials.<\/p>\n\n\n\n<p>For a production system, handle errors based on their cause. A temporary network failure may justify a retry, while an authentication error usually requires fixing the credentials. Follow the <a href=\"https:\/\/platform.openai.com\/docs\/guides\/error-codes\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">OpenAI API error-handling guidance<\/a> and use <a href=\"https:\/\/docs.langchain.com\/oss\/python\/langgraph\/durable-execution\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LangGraph\u2019s fault-tolerance features<\/a> when building more complex workflows.<\/p>\n\n\n\n<p>For actions that affect customers, payments, or business records, validate the result and require human approval when appropriate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When Should You Use More Than One Agent?<\/h2>\n\n\n\n<p>Use multiple agents when a task has distinct stages that need different instructions, tools, or checks. For example, a research report can use one agent to gather evidence, another to analyze the findings, and a third to review the final report.<\/p>\n\n\n\n<p>A multi-agent system works best when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tasks need different skills: <\/strong>Each agent handles a clearly defined role.<\/li>\n\n\n\n<li><strong>Independent tasks can run in parallel:<\/strong> Agents can work simultaneously when they do not depend on each other\u2019s results.<\/li>\n\n\n\n<li><strong>Outputs need separate review:<\/strong> A reviewer checks whether the results meet your requirements.<\/li>\n\n\n\n<li><strong>Workflows need different paths:<\/strong> The system routes tasks based on results or conditions.<\/li>\n<\/ul>\n\n\n\n<p>A single agent is usually enough for simple tasks, such as rewriting a paragraph or summarizing a short document.<\/p>\n\n\n\n<p>Before adding another agent, ask what it improves. More agents can increase API costs, response time, and coordination overhead. Start with the simplest design that meets your needs, then add agents when they provide a clear benefit.<\/p>\n\n\n\n<style>\n\n\/* =========================================\n\n   SOCIAL FOLLOW BANNER\n\n========================================= *\/\n \n.tisa-social-follow {\n\n    width: 100% !important;\n\n    border: 0 !important;\n\n    border-collapse: separate !important;\n\n    border-spacing: 0 !important;\n\n    background: #ffffff !important;\n\n    border-radius: 12px !important;\n\n    margin: 24px 0 !important;\n\n    overflow: hidden !important;\n\n}\n \n.tisa-social-follow-row {\n\n    border: 0 !important;\n\n}\n \n.tisa-social-follow-title {\n\n    width: auto !important;\n\n    padding: 17px 24px !important;\n\n    border: 0 !important;\n\n    background: #ffffff !important;\n\n    text-align: left !important;\n\n    vertical-align: middle !important;\n\n    font-family: Arial, sans-serif !important;\n\n    font-size: 16px !important;\n\n    font-weight: 700 !important;\n\n    color: #111111 !important;\n\n    white-space: nowrap !important;\n\n}\n \n.tisa-social-follow-icons {\n\n    width: 220px !important;\n\n    padding: 12px 24px 12px 10px !important;\n\n    border: 0 !important;\n\n    background: #ffffff !important;\n\n    text-align: right !important;\n\n    vertical-align: middle !important;\n\n    white-space: nowrap !important;\n\n}\n \n.tisa-social-follow-link {\n\n    margin: 0 7px !important;\n\n    padding: 0 !important;\n\n    text-decoration: none !important;\n\n    vertical-align: middle !important;\n\n}\n \n.tisa-social-follow-link-last {\n\n    margin: 0 0 0 7px !important;\n\n}\n \n.tisa-social-follow-icon {\n\n    width: 30px !important;\n\n    height: 30px !important;\n\n    max-width: 30px !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    vertical-align: middle !important;\n\n}\n \n.tisa-social-follow-youtube {\n\n    width: 40px !important;\n\n    height: 30px !important;\n\n    max-width: 40px !important;\n\n    margin: 0 !important;\n\n    padding: 0 !important;\n\n    vertical-align: middle !important;\n\n}\n \n \n\/* =========================================\n\n   MOBILE VIEW\n\n========================================= *\/\n \n@media (max-width: 767px) {\n \n    .tisa-social-follow {\n\n        width: 100% !important;\n\n        margin: 20px 0 !important;\n\n    }\n \n    .tisa-social-follow-title {\n\n        padding: 14px 12px !important;\n\n        font-size: 14px !important;\n\n        white-space: normal !important;\n\n    }\n \n    .tisa-social-follow-icons {\n\n        width: 190px !important;\n\n        padding: 10px 8px 10px 4px !important;\n\n        text-align: right !important;\n\n        white-space: nowrap !important;\n\n    }\n \n    .tisa-social-follow-link {\n\n        margin: 0 3px !important;\n\n    }\n \n    .tisa-social-follow-link-last {\n\n        margin: 0 0 0 3px !important;\n\n    }\n \n    .tisa-social-follow-icon {\n\n        width: 25px !important;\n\n        height: 25px !important;\n\n        max-width: 25px !important;\n\n    }\n \n    .tisa-social-follow-youtube {\n\n        width: 33px !important;\n\n        height: 25px !important;\n\n        max-width: 33px !important;\n\n    }\n\n}\n \n \n\/* =========================================\n\n   SMALL MOBILE\n\n========================================= *\/\n \n@media (max-width: 480px) {\n \n    .tisa-social-follow-title {\n\n        padding: 13px 10px !important;\n\n        font-size: 13px !important;\n\n    }\n \n    .tisa-social-follow-icons {\n\n        width: 170px !important;\n\n        padding: 9px 6px 9px 2px !important;\n\n    }\n \n    .tisa-social-follow-link {\n\n        margin: 0 2px !important;\n\n    }\n \n    .tisa-social-follow-link-last {\n\n        margin: 0 0 0 2px !important;\n\n    }\n \n    .tisa-social-follow-icon {\n\n        width: 23px !important;\n\n        height: 23px !important;\n\n        max-width: 23px !important;\n\n    }\n \n    .tisa-social-follow-youtube {\n\n        width: 30px !important;\n\n        height: 23px !important;\n\n        max-width: 30px !important;\n\n    }\n\n}\n<\/style>\n \n \n<table role=\"presentation\" class=\"tisa-social-follow\">\n \n<tr class=\"tisa-social-follow-row\">\n \n<td class=\"tisa-social-follow-title\">\n\nFollow Us for Daily Tech Tips\n<\/td>\n \n<td class=\"tisa-social-follow-icons\">\n \n<a href=\"https:\/\/www.instagram.com\/tisa_tech\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"tisa-social-follow-link\">\n<img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/a\/a5\/Instagram_icon.png\" alt=\"Instagram\" width=\"30\" height=\"30\" class=\"tisa-social-follow-icon\">\n<\/a>\n \n<a href=\"https:\/\/www.facebook.com\/tisatechjaipur\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"tisa-social-follow-link\">\n<img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Facebook_icon.svg\" alt=\"Facebook\" width=\"30\" height=\"30\" class=\"tisa-social-follow-icon\">\n<\/a>\n \n<a href=\"https:\/\/www.linkedin.com\/company\/tisajaipur\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"tisa-social-follow-link\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/ca\/LinkedIn_logo_initials.png\" alt=\"LinkedIn\" width=\"30\" height=\"30\" class=\"tisa-social-follow-icon\">\n<\/a>\n \n<a href=\"https:\/\/x.com\/tisa_tech\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"tisa-social-follow-link\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/5\/53\/X_logo_2023_original.svg\" alt=\"X\" width=\"30\" height=\"30\" class=\"tisa-social-follow-icon\">\n<\/a>\n \n<a href=\"https:\/\/www.youtube.com\/@tisa_tech\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"tisa-social-follow-link tisa-social-follow-link-last\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/ef\/Youtube_logo.png\" alt=\"YouTube\" width=\"40\" height=\"30\" class=\"tisa-social-follow-youtube\">\n<\/a>\n \n<\/td>\n \n<\/tr>\n<\/table>\n \n\n\n\n<h2 class=\"wp-block-heading\">How Can TISA-TECH Help You Learn AI Agent Development in Jaipur?<\/h2>\n\n\n\n<p>Building projects is an effective way to apply what you learn about AI agents. TISA-TECH, an <a href=\"https:\/\/www.tisatech.in\/\" target=\"_blank\" rel=\"noreferrer noopener\">IT training institute in Jaipur<\/a>, offers a Generative AI course in Jaipur that covers Python, AI model integration, and AI application development through hands-on learning.<\/p>\n\n\n\n<p>After completing this tutorial, try extending your multi-agent system with structured outputs, tool calling, and conditional routing. Document your implementation and test how it handles different inputs and failures. These projects can help you build a portfolio and <a href=\"https:\/\/www.tisatech.in\/internship-programme\" target=\"_blank\" rel=\"noreferrer noopener\">prepare for internships<\/a> and entry-level AI development roles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Building a multi-agent AI system with Python gives you a practical way to understand how AI models can work together to solve problems. The key is to define what each agent should produce and how that output will be used in the next stage. A well-designed workflow also needs checks for incomplete responses, incorrect results, and failed model calls.<\/p>\n\n\n\n<p>Before using the system for real tasks, test it with different inputs and compare its results with those of a single-agent approach. This helps you identify whether multiple agents add genuine value or introduce unnecessary complexity. Once the workflow performs reliably, you can adapt it to use cases such as research automation, document analysis, and content review.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQs Section<\/h2>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-1&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-1-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-1\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q1. What Python skills do I need to build a multi-agent AI system?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-1\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-1-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. You should understand Python functions, modules, dictionaries, lists, loops, and exception handling. Basic knowledge of API requests and JSON is also useful because agents often exchange structured data and interact with AI models through APIs.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-2&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-2-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-2\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q2. Why does a multi-agent AI system sometimes produce incorrect results?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-2\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-2-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. An agent may misunderstand its instructions, generate inaccurate information, or pass incomplete data to the next agent. Clear instructions, output validation, error handling, and testing each stage can help identify and reduce these problems.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-3&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-3-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-3\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q3. How do I make multiple AI agents communicate with each other?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-3\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-3-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. Agents can communicate through shared state, function calls, or structured messages containing their outputs. In a sequential workflow, one agent&#8217;s result becomes the next agent&#8217;s input. Frameworks such as LangGraph help manage this data flow and define how execution moves between agents.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-4&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-4-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-4\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q4. Can I build a multi-agent AI project without LangGraph?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-4\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-4-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. Yes. You can use Python functions to call different agents and pass their outputs between stages. This works well for simple workflows. LangGraph becomes useful when you need conditional execution, shared state, retries, or workflows that pause and resume.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-5&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-5-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-5\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q5. How can I test whether my multi-agent system is working correctly?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-5\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-5-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. Test the system with different inputs, including incomplete requests and unexpected responses. Check whether each agent produces the expected output, whether information passes correctly between stages, and whether the final result meets your requirements. Also compare the results with a single-agent version to see whether multiple agents improve performance.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div data-wp-context=\"{ &quot;autoclose&quot;: false, &quot;accordionItems&quot;: [] }\" data-wp-interactive=\"core\/accordion\" role=\"group\" class=\"wp-block-accordion is-layout-flow wp-block-accordion-is-layout-flow\">\n<div data-wp-class--is-open=\"state.isOpen\" data-wp-context=\"{ &quot;id&quot;: &quot;accordion-item-6&quot;, &quot;openByDefault&quot;: false }\" data-wp-init=\"callbacks.initAccordionItems\" data-wp-on-window--hashchange=\"callbacks.hashChange\" class=\"wp-block-accordion-item is-layout-flow wp-block-accordion-item-is-layout-flow\">\n<h3 class=\"wp-block-accordion-heading\"><button aria-expanded=\"false\" aria-controls=\"accordion-item-6-panel\" data-wp-bind--aria-expanded=\"state.isOpen\" data-wp-on--click=\"actions.toggle\" data-wp-on--keydown=\"actions.handleKeyDown\" id=\"accordion-item-6\" type=\"button\" class=\"wp-block-accordion-heading__toggle\"><span class=\"wp-block-accordion-heading__toggle-title\">Q6. What projects can I build after learning multi-agent AI systems?<\/span><span class=\"wp-block-accordion-heading__toggle-icon\" aria-hidden=\"true\">+<\/span><\/button><\/h3>\n\n\n\n<div inert aria-labelledby=\"accordion-item-6\" data-wp-bind--inert=\"!state.isOpen\" id=\"accordion-item-6-panel\" role=\"region\" class=\"wp-block-accordion-panel is-layout-flow wp-block-accordion-panel-is-layout-flow\">\n<p>Ans. You can build a research assistant that gathers and summarizes information, a document review system that checks content for errors, or a customer support workflow that classifies queries and drafts responses. Start with a manageable use case, then add tools, routing, and validation as needed.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>AI agents can perform tasks such as answering questions, analyzing information, and using tools to solve problems. But when a [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":9230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12],"tags":[],"class_list":["post-9211","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Build a Multi-Agent AI System Using Python<\/title>\n<meta name=\"description\" content=\"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Build a Multi-Agent AI System Using Python\" \/>\n<meta property=\"og:description\" content=\"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/\" \/>\n<meta property=\"og:site_name\" content=\"TISA-TECH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/TISA-Training-Institute-For-Software-Applications\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-15T11:58:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Divyanshi Sain\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tisa_Tech\" \/>\n<meta name=\"twitter:site\" content=\"@tisa_Tech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Divyanshi Sain\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/\"},\"author\":{\"name\":\"Divyanshi Sain\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#\\\/schema\\\/person\\\/fde954ac3808f55a26dc44f6784777b4\"},\"headline\":\"How to Build a Multi-Agent AI System Using Python\",\"datePublished\":\"2026-10-15T11:58:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/\"},\"wordCount\":2245,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg\",\"articleSection\":[\"AI &amp; Machine Learning\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#respond\"]}]},{\"@type\":[\"WebPage\",\"CollectionPage\"],\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/\",\"name\":\"How to Build a Multi-Agent AI System Using Python\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg\",\"datePublished\":\"2026-10-15T11:58:27+00:00\",\"description\":\"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Learn how to build a multi-agent AI system using Python, with AI agents collaborating to plan, research, and execute tasks.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/how-to-build-a-multi-agent-ai-system-using-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Build a Multi-Agent AI System Using Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/\",\"name\":\"TISA\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#organization\",\"name\":\"TISA (Training Institute For Software & Applications)\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/TISA-Training-Institute-for-Software-Applications-2-2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/TISA-Training-Institute-for-Software-Applications-2-2.jpg\",\"width\":1200,\"height\":1200,\"caption\":\"TISA (Training Institute For Software & Applications)\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/TISA-Training-Institute-For-Software-Applications\",\"https:\\\/\\\/x.com\\\/tisa_Tech\",\"https:\\\/\\\/www.instagram.com\\\/tisa_tech\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tisajaipur\\\/\",\"https:\\\/\\\/in.pinterest.com\\\/tisatraining\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@tisa_tech\",\"https:\\\/\\\/github.com\\\/tisatechgroup\",\"https:\\\/\\\/www.trustpilot.com\\\/review\\\/tisatech.in\",\"https:\\\/\\\/maps.app.goo.gl\\\/hBXSLDHL1m6kSKxaA\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/#\\\/schema\\\/person\\\/fde954ac3808f55a26dc44f6784777b4\",\"name\":\"Divyanshi Sain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/divyanshi-image.jpg\",\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/divyanshi-image.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/divyanshi-image.jpg\",\"caption\":\"Divyanshi Sain\"},\"description\":\"Divyanshi Sain is a tech writer at TISA-TECH with a strong eye for SEO. With 4+ years of experience, she creates clear, engaging content that breaks down complex tech topics and helps readers find exactly what they're looking for.\",\"sameAs\":[\"https:\\\/\\\/www.tisatech.in\\\/blog\",\"linkedin.com\\\/in\\\/divyanshi-sain-1a1106400\"],\"url\":\"https:\\\/\\\/www.tisatech.in\\\/blog\\\/author\\\/divyanshi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Build a Multi-Agent AI System Using Python","description":"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/","og_locale":"en_US","og_type":"article","og_title":"How to Build a Multi-Agent AI System Using Python","og_description":"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.","og_url":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/","og_site_name":"TISA-TECH","article_publisher":"https:\/\/www.facebook.com\/people\/TISA-Training-Institute-For-Software-Applications","article_published_time":"2026-10-15T11:58:27+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg","type":"image\/jpeg"}],"author":"Divyanshi Sain","twitter_card":"summary_large_image","twitter_creator":"@tisa_Tech","twitter_site":"@tisa_Tech","twitter_misc":{"Written by":"Divyanshi Sain","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#article","isPartOf":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/"},"author":{"name":"Divyanshi Sain","@id":"https:\/\/www.tisatech.in\/blog\/#\/schema\/person\/fde954ac3808f55a26dc44f6784777b4"},"headline":"How to Build a Multi-Agent AI System Using Python","datePublished":"2026-10-15T11:58:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/"},"wordCount":2245,"commentCount":0,"publisher":{"@id":"https:\/\/www.tisatech.in\/blog\/#organization"},"image":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg","articleSection":["AI &amp; Machine Learning"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#respond"]}]},{"@type":["WebPage","CollectionPage"],"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/","url":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/","name":"How to Build a Multi-Agent AI System Using Python","isPartOf":{"@id":"https:\/\/www.tisatech.in\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#primaryimage"},"image":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg","datePublished":"2026-10-15T11:58:27+00:00","description":"Learn how to build a multi-agent AI system using Python. Create specialized agents, connect them with LangGraph, and manage communication and failures.","breadcrumb":{"@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#breadcrumb"},"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#primaryimage","url":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg","contentUrl":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/10\/How-to-Build-a-Multi-Agent-AI-System-Using-Python-blog-image.jpg","width":1200,"height":630,"caption":"Learn how to build a multi-agent AI system using Python, with AI agents collaborating to plan, research, and execute tasks."},{"@type":"BreadcrumbList","@id":"https:\/\/www.tisatech.in\/blog\/how-to-build-a-multi-agent-ai-system-using-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.tisatech.in\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Build a Multi-Agent AI System Using Python"}]},{"@type":"WebSite","@id":"https:\/\/www.tisatech.in\/blog\/#website","url":"https:\/\/www.tisatech.in\/blog\/","name":"TISA","description":"","publisher":{"@id":"https:\/\/www.tisatech.in\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.tisatech.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.tisatech.in\/blog\/#organization","name":"TISA (Training Institute For Software & Applications)","url":"https:\/\/www.tisatech.in\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.tisatech.in\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/04\/TISA-Training-Institute-for-Software-Applications-2-2.jpg","contentUrl":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/04\/TISA-Training-Institute-for-Software-Applications-2-2.jpg","width":1200,"height":1200,"caption":"TISA (Training Institute For Software & Applications)"},"image":{"@id":"https:\/\/www.tisatech.in\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/TISA-Training-Institute-For-Software-Applications","https:\/\/x.com\/tisa_Tech","https:\/\/www.instagram.com\/tisa_tech","https:\/\/www.linkedin.com\/company\/tisajaipur\/","https:\/\/in.pinterest.com\/tisatraining\/","https:\/\/www.youtube.com\/@tisa_tech","https:\/\/github.com\/tisatechgroup","https:\/\/www.trustpilot.com\/review\/tisatech.in","https:\/\/maps.app.goo.gl\/hBXSLDHL1m6kSKxaA"]},{"@type":"Person","@id":"https:\/\/www.tisatech.in\/blog\/#\/schema\/person\/fde954ac3808f55a26dc44f6784777b4","name":"Divyanshi Sain","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/05\/divyanshi-image.jpg","url":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/05\/divyanshi-image.jpg","contentUrl":"https:\/\/www.tisatech.in\/blog\/wp-content\/uploads\/2026\/05\/divyanshi-image.jpg","caption":"Divyanshi Sain"},"description":"Divyanshi Sain is a tech writer at TISA-TECH with a strong eye for SEO. With 4+ years of experience, she creates clear, engaging content that breaks down complex tech topics and helps readers find exactly what they're looking for.","sameAs":["https:\/\/www.tisatech.in\/blog","linkedin.com\/in\/divyanshi-sain-1a1106400"],"url":"https:\/\/www.tisatech.in\/blog\/author\/divyanshi\/"}]}},"_links":{"self":[{"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/posts\/9211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/comments?post=9211"}],"version-history":[{"count":22,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/posts\/9211\/revisions"}],"predecessor-version":[{"id":9234,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/posts\/9211\/revisions\/9234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/media\/9230"}],"wp:attachment":[{"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/media?parent=9211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/categories?post=9211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tisatech.in\/blog\/wp-json\/wp\/v2\/tags?post=9211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}