Bagikan melalui


Pelajari cara menggunakan output yang dapat direproduksi (pratinjau)

Secara default jika Anda meminta model Penyelesaian Obrolan Azure OpenAI pertanyaan yang sama beberapa kali Anda mungkin mendapatkan respons yang berbeda. Oleh karena itu, respons dianggap tidak deterministik. Output yang dapat direproduksi adalah fitur pratinjau baru yang memungkinkan Anda mengubah perilaku default secara selektif untuk membantu menghasilkan output yang lebih deterministik.

Dukungan output yang dapat direproduksi

Output yang dapat direproduksi saat ini hanya didukung dengan yang berikut:

Model yang didukung

  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (Pratinjau 1106)
  • gpt-4 (Pratinjau 0125)
  • gpt-4 (turbo-2024-04-09)
  • gpt-4o (2024-05-13)

Lihat halaman model untuk informasi terbaru tentang ketersediaan regional model.

Versi API

Dukungan untuk output yang dapat direproduksi pertama kali ditambahkan dalam versi API 2023-12-01-preview

Contoh

Pertama, kita akan menghasilkan tiga respons terhadap pertanyaan yang sama untuk menunjukkan varianbilitas yang umum untuk respons Penyelesaian Obrolan bahkan ketika parameter lain sama:

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

for i in range(3):
  print(f'Story Version {i + 1}\n---')
    
  response = client.chat.completions.create(
    model="gpt-35-turbo-0125", # Model = should match the deployment name you chose for your 0125-preview model deployment
    #seed=42,
    temperature=0.7,
    max_tokens =50, 
    messages=[
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Tell me a story about how the universe began?"}
    ]
  )
  
  print(response.choices[0].message.content)
  print("---\n")
  
  del response

Output

Story Version 1
---
Once upon a time, before there was time, there was nothing but a vast emptiness. In this emptiness, there existed a tiny, infinitely dense point of energy. This point contained all the potential for the universe as we know it. And
---

Story Version 2
---
Once upon a time, long before the existence of time itself, there was nothing but darkness and silence. The universe lay dormant, a vast expanse of emptiness waiting to be awakened. And then, in a moment that defies comprehension, there
---

Story Version 3
---
Once upon a time, before time even existed, there was nothing but darkness and stillness. In this vast emptiness, there was a tiny speck of unimaginable energy and potential. This speck held within it all the elements that would come

Perhatikan bahwa sementara setiap cerita mungkin memiliki elemen yang sama dan beberapa pengulangan verbatim semakin lama respons berlangsung semakin mereka cenderung menyimpang.

Sekarang kita akan menjalankan kode yang sama seperti sebelumnya tetapi kali ini membatalkan komentar baris untuk parameter yang mengatakan seed=42

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

for i in range(3):
  print(f'Story Version {i + 1}\n---')
    
  response = client.chat.completions.create(
    model="gpt-35-turbo-0125", # Model = should match the deployment name you chose for your 0125-preview model deployment
    seed=42,
    temperature=0.7,
    max_tokens =50, 
    messages=[
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Tell me a story about how the universe began?"}
    ]
  )
  
  print(response.choices[0].message.content)
  print("---\n")
  
  del response

Output

Story Version 1
---
In the beginning, there was nothing but darkness and silence. Then, suddenly, a tiny point of light appeared. This point of light contained all the energy and matter that would eventually form the entire universe. With a massive explosion known as the Big Bang
---

Story Version 2
---
In the beginning, there was nothing but darkness and silence. Then, suddenly, a tiny point of light appeared. This point of light contained all the energy and matter that would eventually form the entire universe. With a massive explosion known as the Big Bang
---

Story Version 3
---
In the beginning, there was nothing but darkness and silence. Then, suddenly, a tiny point of light appeared. This was the moment when the universe was born.

The point of light began to expand rapidly, creating space and time as it grew.
---

Dengan menggunakan parameter 42 yang sama seed untuk masing-masing dari tiga permintaan kami, sambil menjaga semua parameter lain tetap sama, kami dapat menghasilkan hasil yang jauh lebih konsisten.

Penting

Determinisme tidak dijamin dengan output yang dapat direproduksi. Bahkan dalam kasus di mana parameter seed dan system_fingerprint sama di seluruh panggilan API, saat ini tidak jarang masih mengamati tingkat varianbilitas dalam respons. Panggilan API yang identik dengan nilai yang lebih besar max_tokens , umumnya akan menghasilkan respons yang kurang deterministik bahkan ketika parameter seed diatur.

Detail parameter

seed adalah parameter opsional, yang dapat diatur ke bilangan bulat atau null.

Fitur ini masih dalam tahap Pratinjau. Jika ditentukan, sistem kami akan melakukan upaya terbaik untuk sampel secara deterministik, sehingga permintaan berulang dengan benih dan parameter yang sama harus mengembalikan hasil yang sama. Determinisme tidak dijamin, dan Anda harus merujuk ke system_fingerprint parameter respons untuk memantau perubahan di backend.

system_fingerprint adalah string dan merupakan bagian dari objek penyelesaian obrolan.

Sidik jari ini mewakili konfigurasi backend yang dijalankan model.

Ini dapat digunakan dengan parameter permintaan benih untuk memahami kapan perubahan backend telah dilakukan yang dapat memengaruhi determinisme.

Untuk melihat objek penyelesaian obrolan lengkap dengan system_fingerprint, Anda dapat menambahkan print(response.model_dump_json(indent=2)) ke kode Python sebelumnya di samping pernyataan cetak yang ada, atau $response | convertto-json -depth 5 di akhir contoh PowerShell. Perubahan ini menghasilkan informasi tambahan berikut menjadi bagian dari output:

Output

{
  "id": "chatcmpl-8LmLRatZxp8wsx07KGLKQF0b8Zez3",
  "choices": [
    {
      "finish_reason": "length",
      "index": 0,
      "message": {
        "content": "In the beginning, there was nothing but a vast emptiness, a void without form or substance. Then, from this nothingness, a singular event occurred that would change the course of existence forever—The Big Bang.\n\nAround 13.8 billion years ago, an infinitely hot and dense point, no larger than a single atom, began to expand at an inconceivable speed. This was the birth of our universe, a moment where time and space came into being. As this primordial fireball grew, it cooled, and the fundamental forces that govern the cosmos—gravity, electromagnetism, and the strong and weak nuclear forces—began to take shape.\n\nMatter coalesced into the simplest elements, hydrogen and helium, which later formed vast clouds in the expanding universe. These clouds, driven by the force of gravity, began to collapse in on themselves, creating the first stars. The stars were crucibles of nuclear fusion, forging heavier elements like carbon, nitrogen, and oxygen",
        "role": "assistant",
        "function_call": null,
        "tool_calls": null
      },
      "content_filter_results": {
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ],
  "created": 1700201417,
  "model": "gpt-4",
  "object": "chat.completion",
  "system_fingerprint": "fp_50a4261de5",
  "usage": {
    "completion_tokens": 200,
    "prompt_tokens": 27,
    "total_tokens": 227
  },
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ]
}

Pertimbangan tambahan

Saat Anda ingin menggunakan output yang dapat direproduksi, Anda perlu mengatur seed ke bilangan bulat yang sama di seluruh panggilan penyelesaian obrolan. Anda juga harus mencocokkan parameter lain seperti temperature, , max_tokensdll.