Bagikan melalui


Panggilan fungsi Asisten Azure OpenAI

Assistants API mendukung panggilan fungsi, yang memungkinkan Anda menjelaskan struktur fungsi ke Asisten lalu mengembalikan fungsi yang perlu dipanggil bersama dengan argumennya.

Catatan

  • Pencarian file dapat menyerap hingga 10.000 file per asisten - 500 kali lebih banyak dari sebelumnya. Ini cepat, mendukung kueri paralel melalui pencarian multi-utas, dan fitur reranking dan penulisan ulang kueri yang ditingkatkan.
    • Penyimpanan vektor adalah objek baru di API. Setelah file ditambahkan ke penyimpanan vektor, file secara otomatis diurai, dipotong, dan disematkan, dibuat siap untuk dicari. Penyimpanan vektor dapat digunakan di seluruh asisten dan utas, menyederhanakan manajemen dan penagihan file.
  • Kami telah menambahkan dukungan untuk tool_choice parameter yang dapat digunakan untuk memaksa penggunaan alat tertentu (seperti pencarian file, penerjemah kode, atau fungsi) dalam eksekusi tertentu.

Dukungan panggilan fungsi

Model yang didukung

Halaman model berisi informasi terbaru tentang wilayah/model di mana Asisten didukung.

Untuk menggunakan semua fitur panggilan fungsi termasuk fungsi paralel, Anda perlu menggunakan model yang dirilis setelah 6 November 2023.

Versi API

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

Contoh definisi fungsi

Catatan

  • Kami telah menambahkan dukungan untuk tool_choice parameter yang dapat digunakan untuk memaksa penggunaan alat tertentu (seperti file_search, code_interpreter, atau ) functiondalam eksekusi tertentu.
  • Berjalan kedaluwarsa sepuluh menit setelah pembuatan. Pastikan untuk mengirimkan output alat Anda sebelum kedaluwarsa ini.
  • Anda juga dapat melakukan panggilan fungsi dengan aplikasi Azure Logic
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"]
      }
    } 
  }]
)

Membaca fungsi

Saat Anda memulai Jalankan dengan Pesan pengguna yang memicu fungsi, Jalankan akan memasukkan status tertunda. Setelah diproses, eksekusi akan memasuki status requires_action yang dapat Anda verifikasi dengan mengambil Jalankan.

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

Mengirimkan output fungsi

Anda kemudian dapat menyelesaikan Jalankan dengan mengirimkan output alat dari fungsi yang Anda panggil. Teruskan yang dirujuk tool_call_id dalam objek di required_action atas untuk mencocokkan output dengan setiap panggilan fungsi.

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

Setelah Anda mengirimkan output alat, Jalankan akan memasuki status queued sebelum melanjutkan eksekusi.

Lihat juga