Share via


Azure OpenAI Assistants-Funktionsaufruf

Die Assistants-API unterstützt Funktionsaufrufe, mit denen Sie einem Assistenten die Struktur von Funktionen beschreiben und dann die Funktionen zurückgeben können, die zusammen mit ihren Argumenten aufgerufen werden müssen.

Hinweis

  • Die Dateisuche kann bis zu 10.000 Dateien pro Assistent erfassen – 500 mal mehr als bisher. Sie ist schnell, unterstützt parallele Abfragen durch Multithreadsuchvorgänge und beinhaltet verbesserte Funktionen für Neusortierung und das Umschreiben von Abfragen.
    • Der Vektorspeicher ist ein neues Objekt in der API. Sobald eine Datei einem Vektorspeicher hinzugefügt wurde, wird sie automatisch geparst, aufgeteilt und eingebettet, damit sie durchsucht werden kann. Vektorspeicher können über Assistenten und Threads hinweg verwendet werden und vereinfachen so die Dateiverwaltung und Abrechnung.
  • Wir haben Unterstützung für den Parameter tool_choice hinzugefügt. Dieser kann verwendet werden, um die Nutzung eines bestimmten Tools (z. B. Dateisuche, Codeinterpreter oder eine Funktion) in einer bestimmten Ausführung zu erzwingen.

Unterstützung für Funktionsaufruf

Unterstützte Modelle

Die Modellseite enthält die aktuellsten Informationen zu Regionen/Modellen, in denen Assistants unterstützt werden.

Um alle Funktionen von Funktionsaufrufen einschließlich paralleler Funktionen zu verwenden, müssen Sie ein Modell verwenden, das nach dem 6. November 2023 veröffentlicht wurde.

API-Versionen

  • 2024-02-15-preview
  • 2024-05-01-preview

Beispielfunktionsdefinition

Hinweis

  • Wir haben Unterstützung für den tool_choice-Parameter hinzugefügt, der verwendet werden kann, um die Verwendung eines bestimmten Tools zu erzwingen (z. B. file_search, code_interpreter oder function) in einer bestimmten Ausführung.
  • Läuft 10 Minuten nach der Erstellung ab. Stellen Sie sicher, dass Sie Ihre Toolausgabe vor diesem Ablauf übermitteln.
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"]
      }
    } 
  }]
)

Lesen der Funktionen

Wenn Sie eine Ausführung mit einer Benutzernachricht initiieren, die die Funktion auslöst, gibt die Ausführung den Status „Ausstehenden“ ein. Nach dem Verarbeiten wechselt die Ausführung zum Status „requires_action“, den Sie überprüfen können, indem Sie die Ausführung abrufen.

{
  "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\"}"
          }
        }
      ]
    }
  },
...

Senden von Funktionsausgaben

Anschließend können Sie die Ausführung abschließen, indem Sie die Toolausgabe aus den von Ihnen aufgerufenen Funktionen übermitteln. Übergeben Sie die tool_call_id, auf die im obigen required_action-Objekt verwiesen wird, um die Ausgabe an jeden Funktionsaufruf anzupassen.

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",
      },
    ]
)

Nachdem Sie die Toolausgabe übermittelt haben, wechselt die Ausführung in den Status queued, bevor sie die Ausführung fortsetzt.

Siehe auch