09-02-02 — Built-in tools: web search, file search, memory, code interpreter, MCP servers
TL;DR
O AI Foundry Agent Service oferece ferramentas nativas que o modelo pode invocar automaticamente: file_search (RAG sobre documentos), code_interpreter (executa Python em sandbox), web_search (busca Bing/Grounding), azure_ai_search (índice vetorial próprio), e MCP servers (conecta qualquer tool MCP-compatible). Você declara as tools no agente — o modelo decide quando e como usá-las.
1. File Search (RAG built-in)
Você sobe arquivos (PDF, Word, TXT, markdown, código) para um Vector Store. O agente, quando precisar, faz busca semântica automaticamente — sem você implementar o pipeline de chunking, embedding e retrieval.
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import FileSearchTool, VectorStore
from azure.identity import DefaultAzureCredential
import os
client = AIProjectClient.from_connection_string(
os.environ["AZURE_AI_FOUNDRY_CONNECTION_STRING"],
DefaultAzureCredential()
)
# 1. Upload de arquivos para o Vector Store
with open("manual_suporte.pdf", "rb") as f:
uploaded_file = client.agents.upload_file_and_poll(
file=f, purpose="assistants"
)
# 2. Criar Vector Store com os arquivos
vector_store = client.agents.create_vector_store_and_poll(
file_ids=[uploaded_file.id],
name="base-conhecimento-suporte"
)
# 3. Criar agente com file_search habilitado
agent = client.agents.create_agent(
model="gpt-4o",
name="suporte-rag",
instructions="Use a base de conhecimento para responder perguntas de suporte.",
tools=[FileSearchTool().as_dict()],
tool_resources={"file_search": {"vector_store_ids": [vector_store.id]}}
)
2. Code Interpreter
Executa código Python em uma sandbox isolada. Ideal para: análise de dados, geração de gráficos, cálculos, processamento de arquivos CSV/Excel. O modelo gera o código, o serviço executa, retorna o resultado.
from azure.ai.projects.models import CodeInterpreterTool
agent = client.agents.create_agent(
model="gpt-4o",
name="data-analyst",
instructions="Analise dados e gere visualizações quando solicitado.",
tools=[CodeInterpreterTool().as_dict()]
)
# O modelo automaticamente escreve e executa código Python
# para responder: "Qual o ticket médio por cliente nesse CSV?"
3. Web Search (Bing Grounding)
O agente pode buscar informações atuais na web via Bing Search API integrada ao Foundry. Útil para agentes que precisam de informações em tempo real (preços, notícias, documentação atualizada).
from azure.ai.projects.models import BingGroundingTool
# Requer: connection para Bing Search na sua subscription
bing_connection = client.connections.get("bing-search-connection")
agent = client.agents.create_agent(
model="gpt-4o",
name="research-agent",
instructions="Pesquise informações atualizadas quando necessário.",
tools=[BingGroundingTool(connection_id=bing_connection.id).as_dict()]
)
4. Azure AI Search Tool
Se você já tem um índice no Azure AI Search (Cognitive Search), pode conectar direto ao agente sem duplicar dados:
from azure.ai.projects.models import AzureAISearchTool
search_connection = client.connections.get("ai-search-impar")
agent = client.agents.create_agent(
model="gpt-4o",
name="knowledge-agent",
tools=[AzureAISearchTool(
index_connection_id=search_connection.id,
index_name="documentos-clientes"
).as_dict()]
)
5. MCP Servers (Model Context Protocol)
MCP é o protocolo open-source da Anthropic (adotado pela Microsoft) para conectar modelos a fontes de dados e ferramentas externas. No Foundry, você pode registrar servidores MCP como tools do agente:
from azure.ai.projects.models import McpTool
# MCP server pode ser: GitHub, Jira, Salesforce, custom REST API, banco de dados
agent = client.agents.create_agent(
model="gpt-4o",
name="devops-agent",
tools=[McpTool(
server_url="https://mcp-github.sua-empresa.com",
allowed_tools=["create_issue", "list_prs", "get_file"]
).as_dict()]
)
Custom Tools (Function Calling)
Para qualquer lógica que não é coberta pelas built-in tools, use function calling — você define a assinatura da função, o modelo decide quando chamar, sua aplicação executa:
// C# - definindo custom function tool
var tools = new List<ToolDefinition>
{
new FunctionToolDefinition(
name: "buscar_status_pedido",
description: "Busca o status de um pedido no sistema ERP",
parameters: BinaryData.FromObjectAsJson(new
{
type = "object",
properties = new
{
numero_pedido = new { type = "string", description = "Número do pedido" }
},
required = new[] { "numero_pedido" }
})
)
};
// Quando o run retornar requires_action: tool_call
// sua app executa buscar_status_pedido() e envia o resultado de volta
Combinando múltiplas tools
Um agente pode ter todas as tools habilitadas simultaneamente. O modelo decide qual usar com base no contexto da pergunta:
agent = client.agents.create_agent(
model="gpt-4o",
name="super-agent",
tools=[
FileSearchTool().as_dict(), # RAG sobre docs internos
CodeInterpreterTool().as_dict(), # análise de dados
BingGroundingTool(connection_id=...).as_dict(), # info externa
# + custom functions para ERP
]
)