Dela via


Lär dig hur du använder reproducerbara utdata (förhandsversion)

Som standard om du ställer en Azure OpenAI Chat Completion-modell samma fråga flera gånger kommer du sannolikt att få ett annat svar. Svaren anses därför vara nondeterministiska. Reproducerbara utdata är en ny förhandsgranskningsfunktion som gör att du selektivt kan ändra standardbeteendet för att hjälpa produkten med mer deterministiska utdata.

Stöd för reproducerbara utdata

Reproducerbara utdata stöds bara för närvarande med följande:

Modeller som stöds

  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (1106-förhandsversion)
  • gpt-4 (0125-Preview)
  • gpt-4 (turbo-2024-04-09)
  • gpt-4o-mini (2024-07-18)
  • gpt-4o (2024-05-13)

Se modellsidan för den senaste informationen om regional tillgänglighet för modeller.

API-version

Stöd för reproducerbara utdata lades först till i API-version 2023-12-01-preview

Exempel

Först genererar vi tre svar på samma fråga för att visa variabiliteten som är gemensam för svar på chattens slutförande även när andra parametrar är desamma:

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

Observera att även om varje berättelse kan ha liknande element och vissa ordagranna upprepningar, desto längre går svaret desto mer tenderar de att skilja sig åt.

Nu ska vi köra samma kod som tidigare, men den här gången avkommentarer raden för parametern som säger 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.
---

Genom att använda samma seed parameter på 42 för var och en av våra tre begäranden, samtidigt som alla andra parametrar hålls likadana, kan vi ge mycket mer konsekventa resultat.

Viktigt!

Determinism garanteras inte med reproducerbara utdata. Även i fall där parametern seed och system_fingerprint är densamma i API-anrop är det för närvarande inte ovanligt att fortfarande observera en grad av variabilitet i svar. Identiska API-anrop med större max_tokens värden resulterar vanligtvis i mindre deterministiska svar även när parametern seed anges.

Parameterinformation

seed är en valfri parameter som kan anges till ett heltal eller null.

Den här funktionen finns i förhandsversion. Om det anges gör vårt system bästa för att sampla deterministiskt, så att upprepade begäranden med samma startvärde och parametrar ska returnera samma resultat. Determinism är inte garanterad och du bör referera till svarsparametern system_fingerprint för att övervaka ändringar i serverdelen.

system_fingerprint är en sträng och är en del av chattens slutförandeobjekt.

Det här fingeravtrycket representerar serverdelskonfigurationen som modellen körs med.

Den kan användas med parametern för seed request för att förstå när serverdelsändringar har gjorts som kan påverka determinismen.

Om du vill visa det fullständiga chattavslutsobjektet med system_fingerprintkan du lägga print(response.model_dump_json(indent=2)) till den tidigare Python-koden bredvid den befintliga utskriftsuttrycket eller $response | convertto-json -depth 5 i slutet av PowerShell-exemplet. Den här ändringen resulterar i att följande ytterligare information ingår i utdata:

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

Ytterligare överväganden

När du vill använda reproducerbara utdata måste du ange seed samma heltal för samtal med chattavslut. Du bör också matcha andra parametrar som temperature, max_tokensosv.