Appel de fonction des Assistants Azure OpenAI
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.
Remarque
- La recherche de fichiers peut ingérer jusqu’à 10 000 fichiers par assistant, soit 500 fois plus qu’auparavant. Elle est rapide, prend en charge les requêtes parallèles par le biais de recherches multithread, et propose des fonctionnalités améliorées de reclassement et de réécriture des requêtes.
- Le magasin de vecteurs est un nouvel objet dans l’API. Une fois qu’un fichier est ajouté à un magasin vectoriel, il est automatiquement analysé, découpé en morceaux et incorporé, prêt à être recherché. Les magasins vectoriels peuvent être utilisés par tous les assistants et threads, ce qui simplifie la gestion des fichiers et la facturation.
- Nous avons ajouté la prise en charge du paramètre
tool_choice
qui peut être utilisé pour forcer l'utilisation d'un outil spécifique (comme la recherche de fichiers, un interpréteur de code ou une fonction) dans une exécution particulière.
Prise en charge de l’appel 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 des API
2024-02-15-preview
2024-05-01-preview
Exemple de définition de fonction
Remarque
- Nous avons ajouté la prise en charge du paramètre
tool_choice
qui peut être utilisé pour forcer l’utilisation d’un outil spécifique (commefile_search
,code_interpreter
ou 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-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4-1106-preview", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "getCurrentWeather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
"unit": {"type": "string", "enum": ["c", "f"]}
},
"required": ["location"]
}
}
}, {
"type": "function",
"function": {
"name": "getNickname",
"description": "Get the nickname of a city",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
},
"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": "getCurrentWeather",
"arguments": "{\"location\":\"San Francisco\"}"
}
},
{
"id": "call_abc456",
"type": "function",
"function": {
"name": "getNickname",
"arguments": "{\"location\":\"Los Angeles\"}"
}
}
]
}
},
...
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 la référence tool_call_id
dans l’objet required_action
ci-dessus pour faire correspondre la sortie à chaque appel de fonction.
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run.id,
tool_outputs=[
{
"tool_call_id": call_ids[0],
"output": "22C",
},
{
"tool_call_id": call_ids[1],
"output": "LA",
},
]
)
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