Megosztás a következőn keresztül:


Azure OpenAI Assistants-függvényhívás

Az Assistants API támogatja a függvényhívást, amely lehetővé teszi a függvények szerkezetének leírását egy asszisztens számára, majd visszaadja a meghívandó függvényeket az argumentumokkal együtt.

Feljegyzés

  • A fájlkeresés asszisztensenként akár 10 000 fájlt is betölthet – 500-szor több, mint korábban. Gyors, többszálas keresésekkel támogatja a párhuzamos lekérdezéseket, és továbbfejlesztett újraírást és lekérdezés-újraírást is kínál.
    • A vektortároló egy új objektum az API-ban. Miután hozzáadtak egy fájlt egy vektortárolóhoz, a rendszer automatikusan elemzi, darabolja és beágyazja, és készen áll a keresésre. A vektortárolók asszisztensek és szálak között is használhatók, így egyszerűbbé teheti a fájlkezelést és a számlázást.
  • Hozzáadtuk a tool_choice paraméter támogatását, amely egy adott eszköz (például fájlkeresés, kódértelmező vagy függvény) egy adott futtatáshoz való kényszerítésére használható.

Függvényhívás támogatása

Támogatott modellek

A modellek lap a legfrissebb információkat tartalmazza azokról a régiókról/modellekről, ahol az Asszisztensek támogatottak.

A függvényhívások és a párhuzamos függvények összes funkciójának használatához olyan modellt kell használnia, amely 2023. november 6. után jelent meg.

API-verziók

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

Példa függvénydefiníció

Feljegyzés

  • Hozzáadtuk a tool_choice paraméter támogatását, amellyel kényszeríthető egy adott eszköz (például file_search, code_interpretervagy a function) használata egy adott futtatásban.
  • A futtatások a létrehozás után tíz perccel lejárnak. A lejárat előtt mindenképpen küldje el az eszköz kimeneteit.
  • Függvényhívást is végrehajthat az Azure Logic Apps használatával
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"]
      }
    } 
  }]
)

A függvények olvasása

Amikor elindít egy futtatás felhasználói üzenetet, amely aktiválja a függvényt, a futtatás függőben lévő állapotot ad meg. A folyamat után a futtatás egy requires_action állapotot fog megadni, amelyet a Futtatás lekérésével ellenőrizheti.

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

Függvénykimenetek beküldése

Ezután a futtatás befejezéséhez küldje el az eszköz kimenetét a hívott függvény(ek)ből. Adja át a tool_call_id fenti objektumban hivatkozott hivatkozást, required_action hogy megfeleljen az egyes függvényhívások kimenetének.

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

Az eszközkimenetek elküldése után a Futtatás a végrehajtás folytatása előtt adja meg az queued állapotot.

Lásd még