Como Construir um Sistema de Agentes de IA Roteados Estilo MCP com Planejamento de Exposição Dinâmica de Ferramentas, Execução e Injeção de Contexto
Neste tutorial, construímos um sistema de agente roteado estilo MCP totalmente funcional do zero, combinando descoberta de ferramentas, roteamento inteligente, planejamento estruturado e execução em um único fluxo de trabalho coeso. Começamos configurando um servidor de ferramentas modular que expõe recursos como pesquisa na web, recuperação local, carregamento de conjuntos de dados e execução em Python, todos definidos por meio de […] O post
Neste tutorial, construímos um sistema de agente roteado estilo MCP totalmente funcional do zero, combinando descoberta de ferramentas, roteamento inteligente, planejamento estruturado e execução em um único fluxo de trabalho coeso. Começamos configurando um servidor de ferramentas modular que expõe recursos como pesquisa na web, recuperação local, carregamento de conjuntos de dados e execução em Python, todos definidos por meio de esquemas estruturados. Em seguida, implementamos um roteador híbrido que usa heurísticas e raciocínio de LLM para decidir dinamicamente quais ferramentas expor para uma determinada tarefa, garantindo uma exposição de capacidade mínima, porém eficaz. À medida que avançamos, projetamos um agente que planeja o uso de ferramentas, executa chamadas com segurança e sintetiza respostas finais injetando contexto a partir das saídas das ferramentas. Ao final, demonstramos várias tarefas do mundo real e mostramos como os princípios do MCP, como injeção de contexto, políticas de roteamento e acesso restrito a ferramentas, se unem para criar um sistema de agente escalável, interpretável e eficiente. Copiar Código Copiado Usar um navegador diferente import sys import subprocess import pkgutil def ensure_packages(): required = [ ("openai", "openai>=1.40.0"), ("pandas", "pandas"), ("numpy", "numpy"), ("sklearn", "scikit-learn"), ("pydantic", "pydantic"), ("duckduckgo_search", "duckduckgo-search"), ("rich", "rich"), ] missing = [] for import_name, pip_name in required: if pkgutil.find_loader(import_name) is None: missing.append(pip_name) if missing: subprocess.check_call([sys.executable, "-m", "pip", "install", "-q"] + missing) ensure_packages() import os import io import re import json import math import time import textwrap import traceback import contextlib from dataclasses import dataclass, field from typing import Any, Dict, List, Optional, Callable, Tuple import numpy as np import pandas as pd from openai import OpenAI from pydantic import BaseModel, Field from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity from duckduckgo_search import DDGS from rich.console import Console from rich.panel import Panel from rich.table import Table from rich.json import JSON as RichJSON console = Console() try: from google.colab import userdata OPENAI_API_KEY = userdata.get("OPENAI_API_KEY") except Exception: OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "") if not OPENAI_API_KEY: import getpass OPENAI_API_KEY = getpass.getpass("Enter OPENAI_API_KEY: ").strip() os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY client = O
