Hosted Tools Reference
Detailed patterns for all hosted tools available in the Agent Framework.
HostedCodeInterpreterTool
Enables agents to execute Python code on the Azure AI service.
Basic Usage
python
from agent_framework import HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentsProvider
from azure.identity.aio import AzureCliCredential
async with (
AzureCliCredential() as credential,
AzureAIAgentsProvider(credential=credential) as provider,
):
agent = await provider.create_agent(
name="CodingAgent",
instructions="You can write and execute Python code to solve problems.",
tools=HostedCodeInterpreterTool(),
)
result = await agent.run("Calculate the factorial of 20 using Python")
print(result.text)With File Inputs
python
from agent_framework import HostedCodeInterpreterTool, HostedFileContent
# Reference a file already uploaded to the service
code_tool = HostedCodeInterpreterTool(
inputs=[
HostedFileContent(file_id="file-abc123"),
]
)
agent = await provider.create_agent(
name="DataAnalyst",
instructions="Analyze the provided data file.",
tools=code_tool,
)Common Use Cases
- Data analysis and visualization
- Mathematical calculations
- File processing (CSV, JSON, etc.)
- Code generation and testing
HostedFileSearchTool
Enables agents to search through documents using vector stores.
Setup with Vector Store
python
from pathlib import Path
from agent_framework import HostedFileSearchTool, HostedVectorStoreContent
from agent_framework.azure import AzureAIAgentsProvider
from azure.ai.agents.aio import AgentsClient
from azure.identity.aio import AzureCliCredential
async with (
AzureCliCredential() as credential,
AgentsClient(endpoint=endpoint, credential=credential) as agents_client,
AzureAIAgentsProvider(agents_client=agents_client) as provider,
):
# Upload file to the service
file = await agents_client.files.upload(
file_path=Path("data/knowledge_base.txt"),
purpose="agents"
)
# Create vector store from file
vector_store = await agents_client.vector_stores.create_and_poll(
file_ids=[file.id],
name="my_knowledge_store"
)
# Create file search tool with vector store
file_search_tool = HostedFileSearchTool(
inputs=[HostedVectorStoreContent(vector_store_id=vector_store.id)],
max_results=10, # Optional: limit search results
)
agent = await provider.create_agent(
name="ResearchAgent",
instructions="Search the knowledge base to answer questions accurately.",
tools=file_search_tool,
)
result = await agent.run("What are the key findings in the document?")
print(result.text)Multiple Vector Stores
python
file_search_tool = HostedFileSearchTool(
inputs=[
HostedVectorStoreContent(vector_store_id="vs-policy-docs"),
HostedVectorStoreContent(vector_store_id="vs-technical-specs"),
],
max_results=20,
)Common Use Cases
- Document Q&A
- Knowledge base retrieval
- Policy/procedure lookup
- Technical documentation search
HostedWebSearchTool
Enables agents to search the web using Bing.
Basic Bing Grounding
python
import os
from agent_framework import HostedWebSearchTool
from agent_framework.azure import AzureAIAgentsProvider
from azure.identity.aio import AzureCliCredential
# Requires BING_CONNECTION_ID environment variable
os.environ["BING_CONNECTION_ID"] = "your-bing-connection-id"
async with (
AzureCliCredential() as credential,
AzureAIAgentsProvider(credential=credential) as provider,
):
agent = await provider.create_agent(
name="SearchAgent",
instructions="Search the web for current information to answer questions.",
tools=HostedWebSearchTool(
name="Bing Grounding Search",
description="Search the web for current information",
),
)
result = await agent.run("What are the latest developments in AI?")
print(result.text)Bing Custom Search
For searching a custom index of websites:
python
import os
# Requires custom search configuration
os.environ["BING_CUSTOM_CONNECTION_ID"] = "your-custom-bing-connection-id"
os.environ["BING_CUSTOM_INSTANCE_NAME"] = "your-custom-instance"
bing_custom_tool = HostedWebSearchTool(
name="Bing Custom Search",
description="Search specific websites for relevant information",
)Common Use Cases
- Current events and news
- Real-time information lookup
- Fact-checking
- Research assistance
HostedImageGenerationTool
Enables agents to generate images (when available on the service).
python
from agent_framework import HostedImageGenerationTool
agent = await provider.create_agent(
name="CreativeAgent",
instructions="You can generate images based on descriptions.",
tools=HostedImageGenerationTool(),
)Combining Multiple Tools
Agents can use multiple tools simultaneously:
python
from typing import Annotated
from pydantic import Field
from agent_framework import (
HostedCodeInterpreterTool,
HostedFileSearchTool,
HostedWebSearchTool,
HostedVectorStoreContent,
)
# Custom function tool
def get_current_date() -> str:
"""Get today's date."""
from datetime import date
return date.today().isoformat()
async with (
AzureCliCredential() as credential,
AgentsClient(endpoint=endpoint, credential=credential) as agents_client,
AzureAIAgentsProvider(agents_client=agents_client) as provider,
):
# Setup vector store first
vector_store = await agents_client.vector_stores.create_and_poll(
file_ids=[uploaded_file.id],
name="docs_store"
)
agent = await provider.create_agent(
name="SuperAgent",
instructions="""You are a versatile assistant with multiple capabilities:
- Execute Python code for calculations and data analysis
- Search internal documents for company information
- Search the web for current external information
- Provide current date when needed
Choose the appropriate tool based on the user's question.""",
tools=[
get_current_date, # Function tool
HostedCodeInterpreterTool(),
HostedFileSearchTool(
inputs=[HostedVectorStoreContent(vector_store_id=vector_store.id)]
),
HostedWebSearchTool(name="Bing"),
],
)Tool Selection Guidelines
| Need | Tool |
|---|---|
| Code execution, math, data analysis | HostedCodeInterpreterTool |
| Search uploaded documents | HostedFileSearchTool |
| Current web information | HostedWebSearchTool |
| Custom business logic | Function tools |
| External API integration | HostedMCPTool or MCPStreamableHTTPTool |
Error Handling
python
from agent_framework import AgentResponseUpdate
async for chunk in agent.run_stream("Analyze this data"):
if isinstance(chunk, AgentResponseUpdate):
# Check for tool execution errors
if chunk.tool_calls:
for tool_call in chunk.tool_calls:
if hasattr(tool_call, 'error') and tool_call.error:
print(f"Tool error: {tool_call.error}")
if chunk.text:
print(chunk.text, end="", flush=True)