Partage via


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 (comme file_search, code_interpreter ou un function) 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