Skip to content

FunctionTool Not found #257

@harjitdotsingh

Description

@harjitdotsingh

Operating System

Windows

Version Information

Steps to reproduce

import os, json
import pandas as pd
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from azure.identity import InteractiveBrowserCredential
from typing import Set, Callable, Any
from azure.ai.projects.models import FunctionTool, ToolSet

from dotenv import load_dotenv

load_dotenv()

with open('config.json', 'r') as config_file:
config: dict = json.load(config_file)
CREDENTIALS = DefaultAzureCredential()
azure_ad_token_provider=get_bearer_token_provider(å
CREDENTIALS,
"https://cognitiveservices.azure.com/.default"
)

Define some custom python function

def fetch_weather(location: str) -> str:
"""
Fetches the weather information for the specified location.

:param location (str): The location to fetch weather for.
:return: Weather information as a JSON string.
:rtype: str
"""
# In a real-world scenario, you'd integrate with a weather API.
# Here, we'll mock the response.
mock_weather_data = {"Seattle": "Sunny, 25°C", "London": "Cloudy, 18°C", "Tokyo": "Rainy, 22°C"}
weather = mock_weather_data.get(location, "Weather data not available for this location.")
weather_json = json.dumps({"weather": weather})
return weather_json

user_functions: Set[Callable[..., Any]] = {
fetch_weather,
}

Adding Tools to be used by Agent

functions = FunctionTool(user_functions)

toolset = ToolSet()
toolset.add(functions)

Create the agent

AGENT_NAME = "Seattle Tourist Assistant"

project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)

agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name=AGENT_NAME,
instructions="You are a helpful assistant",
toolset=toolset,
)
print(f"Created agent, ID: {agent.id}")

thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")

Create message to thread

MESSAGE = "Can you fetch me the weather in Seattle?"

message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content=MESSAGE,
)
print(f"Created message, ID: {message.id}")

run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_id=agent.id)

print(f"Run finished with status: {run.status}")

if run.status == "failed":
print(f"Run failed: {run.last_error}")

print(f"Run ID: {run.id}")

display messages

for message in project_client.agents.list_messages(thread.id, order="asc").data:
print(f"Role: {message.role}")
print(f"Content: {message.content[0].text.value}")
print("-" * 40)

Expected behavior

sHould not fail while compiling

Actual behavior

Error

Addition information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions