Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Ce document fait référence au portail Microsoft Foundry (classique).
🔍 Consultez la documentation Microsoft Foundry (nouvelle) pour en savoir plus sur le nouveau portail.
Remarque
Le service Microsoft Foundry Agent est désormais en disponibilité générale, qui fournit plus d’outils et de meilleures fonctionnalités d’entreprise. Nous vous recommandons d’utiliser le nouveau service pour les dernières mises à jour et améliorations des fonctionnalités.
L’API Assistants prend en charge l’appel de fonction. Cela vous permet de décrire la structure des fonctions à un Assistant, puis de renvoyer les fonctions qui doivent être appelées avec leurs arguments.
Prise en charge des appels de fonction
Modèles pris en charge
La page modèles contient les informations les plus à jour sur les régions/modèles où les Assistants sont pris en charge.
Pour utiliser toutes les fonctionnalités d’appel de fonction, y compris les fonctions parallèles, vous devez utiliser un modèle qui a été publié après le 6 novembre 2023.
Versions de l’API
Versions API à compter de 2024-02-15-preview.
Exemple de définition de fonction
Remarque
- Nous avons ajouté la prise en charge du paramètre
tool_choicequi peut être utilisé pour forcer l’utilisation d’un outil spécifique (commefile_search,code_interpreterou unfunction) dans une exécution particulière. - Les exécutions expirent dix minutes après la création. Veillez à envoyer vos sorties d’outil avant cette expiration.
- Vous pouvez également effectuer des d’appel de fonction avec azure Logic Apps
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-07-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
name="Weather Bot",
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name, for example San Francisco"}
},
"required": ["location"]
}
}
}]
)
Lecture des fonctions
Lorsque vous lancez une Exécution avec un message utilisateur qui déclenche la fonction, l’Exécution entrera un état en attente. Une fois effectuée, l’exécution entrera un état requires_action que vous pouvez vérifier en récupérant l’Exécution.
{
"id": "run_abc123",
"object": "thread.run",
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "requires_action",
"required_action": {
"type": "submit_tool_outputs",
"submit_tool_outputs": {
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Seattle\"}"
}
},
]
}
},
...
Envoi de sorties de fonction
Vous pouvez ensuite terminer l’Exécution en envoyant la sortie de l’outil à partir de la ou des fonctions que vous appelez. Transmettez le tool_call_id référencé dans l’objet required_action pour faire correspondre la sortie à chaque appel de fonction.
# Example function
def get_weather():
return "It's 80 degrees F and slightly cloudy."
# Define the list to store tool outputs
tool_outputs = []
# Loop through each tool in the required action section
for tool in run.required_action.submit_tool_outputs.tool_calls:
# get data from the weather function
if tool.function.name == "get_weather":
weather = get_weather()
tool_outputs.append({
"tool_call_id": tool.id,
"output": weather
})
# Submit all tool outputs at once after collecting them in a list
if tool_outputs:
try:
run = client.beta.threads.runs.submit_tool_outputs_and_poll(
thread_id=thread.id,
run_id=run.id,
tool_outputs=tool_outputs
)
print("Tool outputs submitted successfully.")
except Exception as e:
print("Failed to submit tool outputs:", e)
else:
print("No tool outputs to submit.")
if run.status == 'completed':
print("run status: ", run.status)
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.to_json(indent=2))
else:
print("run status: ", run.status)
print (run.last_error.message)
Une fois les sorties de l’outil envoyées, l’Exécution entre dans l’état queued avant de poursuivre l’exécution.
Voir aussi
- Informations de référence sur l’API Assistants
- Pour en apprendre davantage sur l’utilisation des Assistants, consultez notre Guide pratique sur les Assistants.
- Exemples d’API Assistants Azure OpenAI