Környezet biztosítása a pontosság javítása érdekében

Befejeződött

Azáltal, hogy kontextust biztosít az AI-modellnek, lehetővé teszi a modell számára, hogy jobban megértse, mit kér, vagy mit kell tudnia a legjobb válasz megadásához. A környezet többféleképpen is megadható.

Kimeneti összetétel kérése

A kimenet szerkezetének megadása nagy hatással lehet az eredményekre. Ilyen lehet például a modell felkérése a források idézésére, a válasz e-mailként való megírására, a válasz SQL-lekérdezésként való formázására, a hangulat adott struktúrába való besorolására stb. Példa:

Felszólítás

Write a table in markdown with 6 animals in it, with their genus and species

Válasz

| Animal           | Genus          | Species        |
| ---------------- |:--------------:|:--------------:|
| Red Panda        | Ailurus        | fulgens        |
| African Elephant | Loxodonta      | africana       |
| Snow Leopard     | Panthera       | uncia          |
| Arctic Fox       | Vulpes         | lagopus        |
| Chimpanzee       | Pan            | troglodytes    |
| Siberian Tiger   | Panthera       | tigris altaica |

Ez a technika egyéni formátumokkal, például JSON-struktúrával használható:

Felszólítás

Put two fictional characters into JSON of the following format

{
  firstNameFictional: 
  jobFictional:
}

Válasz

Here's an example of how you can put two fictional characters into JSON format:

{
  "firstNameFictional": "Henry",
  "jobFictional": "Wizard"
},
{
  "firstNameFictional": "Frank",
  "jobFictional": "Hero"
}

Rendszerüzenet

A rendszerüzenet egy üzenet elején található, és úgy van kialakítva, hogy a modell utasításait, a válasz perspektíváját vagy a modell válaszát segítő egyéb információkat adjon meg. Ez a rendszerüzenet tartalmazhat hangnemet vagy személyiséget, olyan témaköröket, amelyeket nem szabad belefoglalni, vagy a válaszra vonatkozó konkrétumokat (például formázást).

Megadhat például néhányat a következő rendszerüzenetek közül:

  • "Azt akarom, hogy úgy viselkedjen, mint egy parancssori terminál. Válaszoljon a parancsokra pontosan úgy, ahogy cmd.exe, egyetlen egyedi kódblokkban, és semmi másban."
  • "Azt akarom, hogy fordító legyen angolról spanyolra. Ne válaszoljon semmire, amit mondok vagy kérdezek, csak fordítsd le a két nyelv között, és válasz a lefordított szöveggel."
  • "Viselkedjen motivációs előadóként, és szabadon adjon bátorító tanácsokat a célokról és kihívásokról. Sok pozitív megerősítést és javasolt tevékenységet kell tartalmaznia a felhasználó végső céljának eléréséhez."

Az Azure AI Studio csevegőablakának tetején található további példarendszerüzenetek a Prompt samples (Mintakérés) gombra kattintva érhetők el. Adjon meg saját rendszerkérést, amely egyedi választ ad meg, és csevegjen a modellel, hogy lássa, miben különböznek a válaszok.

A ChatCompletion végpont lehetővé teszi a rendszerüzenetek csevegési System szerepkörrel való használatát.

var chatCompletionsOptions = new ChatCompletionsOptions()
{
    Messages =
    {
        new ChatRequestSystemMessage("You are a casual, helpful assistant. You will talk like an American old western film character."),
        new ChatRequestUserMessage("Can you direct me to the library?")
    }
};

Válasz

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Well howdy there, stranger! The library, huh?
                    Y'all just head down the main road till you hit the town 
                    square. Once you're there, take a left and follow the street 
                    for a spell. You'll see the library on your right, can’t 
                    miss it. Happy trails!",
        "role": "assistant"
      }
    }
  ],
  ...
}
response = openai.ChatCompletion.create(
    model="gpt-35-turbo",
    messages=[
        {"role": "system", "content": "You are a casual, helpful assistant. You will talk like an American old western film character."},
        {"role": "user", "content": "Can you direct me to the library?"}
    ]
)

Válasz

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Well howdy there, stranger! The library, huh?
                    Y'all just head down the main road till you hit the town 
                    square. Once you're there, take a left and follow the street 
                    for a spell. You'll see the library on your right, can’t 
                    miss it. Happy trails!",
        "role": "assistant"
      }
    }
  ],
  ...
}

A rendszerüzenetek jelentősen megváltoztathatják a választ formátum és tartalom formájában is. Adjon meg egy egyértelmű rendszerüzenetet a modellhez, amely pontosan leírja, hogy milyen választ vár, és hogy mit tesz vagy mit nem szeretne belefoglalni.

Beszélgetési előzmények

A rendszerüzenet mellett más üzeneteket is megadhat a modellnek a beszélgetés javítása érdekében. A beszélgetési előzmények lehetővé teszik, hogy a modell továbbra is hasonló módon válaszoljon (például hangnemre vagy formázásra), és lehetővé teszi a felhasználó számára, hogy a későbbi lekérdezésekben hivatkozzon a korábbi tartalmakra. Ez az előzmények kétféleképpen adhatók meg: egy tényleges csevegési előzményből vagy egy felhasználó által definiált példabeszélgetésből.

Az OpenAI-modelleket, például a ChatGPT-t és az Azure AI Studio csevegőterét használó csevegőfelületek automatikusan tartalmazzák a beszélgetési előzményeket, ami gazdagabb, tartalmasabb beszélgetést eredményez. A csevegőjátszótér Paraméterek szakaszában megadhatja, hogy hány korábbi üzenetet szeretne belefoglalni. Próbálja meg 1-re csökkenteni vagy maximálisra növelni, hogy lássa, milyen hatással van a beszélgetésre a különböző mennyiségű előzmény.

Feljegyzés

A kérdésben szereplő további beszélgetési előzmények azt jelentik, hogy a rendszer nagyobb számú bemeneti jogkivonatot használ. Meg kell határoznia, hogy mi a megfelelő egyenleg a használati esethez, figyelembe véve a használt modell jogkivonatkorlátját.

A csevegőrendszerek a modell összegzési képességeit is használhatják a bemeneti jogkivonatok mentéséhez. Az alkalmazások dönthetnek úgy, hogy összegzik a múltbeli üzeneteket, és belefoglalják az összegzést a beszélgetési előzményekbe, majd csak az előző párüzeneteket adják meg szó szerint a modellnek.

Kevés lövés tanulás

A felhasználó által definiált példabeszélgetés az úgynevezett néhány lövéses tanulás, amely példákat ad a modellnek arra, hogyan kell válaszolnia egy adott lekérdezésre. Ezek a példák arra szolgálnak, hogy betanítsa a modell válaszát.

Ha például a modellnek egy pár kérdést és a várt választ ad meg, ugyanazzal a mintával folytatódik, anélkül, hogy utasította volna, hogy mi a teendő:

User: That was an awesome experience
Assistant: positive
User: I won't do that again
Assistant: negative
User: That was not worth my time
Assistant: negative
User: You can't miss this
Assistant:

Ha a modell csak You can't miss this kevés lövéses tanulásból származó további környezettel rendelkezik, a válasz valószínűleg nem lesz hasznos.

Gyakorlati szempontból a beszélgetések előzményeit és a kevés lövéses tanulást ugyanúgy küldi el a modellnek; az egyes felhasználói üzenetek és asszisztensek válasza különálló üzenet az üzenetobjektumban. A ChatCompletion végpont úgy van optimalizálva, hogy tartalmazza az üzenetelőzményeket, függetlenül attól, hogy ez az üzenetelőzmény kevés lövéses tanulási vagy tényleges beszélgetési előzményként van-e megadva.

var chatCompletionsOptions = new ChatCompletionsOptions()
{
    Messages =
    {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("That was an awesome experience"),
        new ChatRequestAssistantMessage("positive"),
        new ChatRequestUserMessage("I won't do that again"),
        new ChatRequestAssistantMessage("negative"),
        new ChatRequestUserMessage("That was not worth my time"),
        new ChatRequestAssistantMessage("negative"),
        new ChatRequestUserMessage("You can't miss this")
    }
};
response = openai.ChatCompletion.create(
    model="gpt-35-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "That was an awesome experience"},
        {"role": "assistant", "content": "positive"},
        {"role": "user", "content": "I won't do that again"},
        {"role": "assistant", "content": "negative"},
        {"role": "user", "content": "That was not worth my time"},
        {"role": "assistant", "content": "negative"},
        {"role": "user", "content": "You can't miss this"}
    ]
)

Összetett feladat bontása

A továbbfejlesztett interakció másik módszere az összetett kérések több lekérdezésre való felosztása. Így a modell jobban megértheti az egyes részeket, és javíthatja az általános pontosságot. A kérések osztásával az előző üzenet válaszát is belefoglalhatja egy későbbi üzenetbe, és ezeket az információkat a modell képességein kívül érdekes válaszok létrehozására is használhatja.

Megkérdezheti például a modellt Doug can ride down the zip line in 30 seconds, and takes 5 minutes to climb back up to the top. How many times can Doug ride the zip line in 17 minutes?. Az eredmény valószínűleg 3helytelen, ha Doug a zip-sor tetején indul.

Egy informatívabb válasz származhat, ha több kérdést tesz fel, a körutazási időről, hogy visszatérjen a zip vonal tetejére, és hogyan kell figyelembe venni azt a tényt, hogy Doug a tetején kezdődik. Ennek a problémának a lebontása azt mutatja, hogy Doug valójában négyszer is lovagolhat a zip-vonalon.

Gondolatlánc

A feladat hatékony lebontásának egyik hasznos módszere, ha megkérjük a modellt, hogy magyarázza el a gondolatláncát.

A modell felkérése arra, hogy lépésről lépésre válaszoljon, amellyel meghatározta a választ, hasznos módja annak megértésének, hogy a modell hogyan értelmezi a kérést. Ezzel láthatja, hogy a modell hol hajtott végre helytelen logikai fordulatot, és jobban megértheti, hogyan módosíthatja a kérést a hiba elkerülése érdekében. Ez a technika magában foglalhatja a források idézését, például a Bing-csevegést (amely GPT-4 generációs modellt használ), és meg kell indokolnia, hogy miért határozta meg a válaszát.

A gondolatkérési technika lánca a legjobban arra szolgál, hogy segítsünk iterálni és javítani az utasításokat, hogy a lehető legjobb minőségű választ kapja a modelltől.

Ha például megkérdezi a modellt What sport is easiest to learn but hardest to master? , választ ad, és egy kis magyarázatot ad a miértre. Amikor azonban a rendszer kéri What sport is easiest to learn but hardest to master? Give a step by step approach of your thoughts, ending in your answer, a válasz teljes magyarázata annak, hogyan érkezett a válaszához.

Sure, here's a step-by-step approach to answering the question:
1. Identify sports that are popular and have a large following.
2. Consider the basic mechanics of each sport and how easy they are to learn.
3. Think about the various techniques and skills required to play each sport at a high level, and how difficult they are to master.
4. Compare the relative ease of learning each sport to the difficulty of mastering it.
5. Based on the above analysis, determine which sport is easiest to learn but hardest to master.

Using this approach, I would say that the sport of golf is easiest to learn but hardest to master. Here's why:
1. Golf is a popular sport with a large following.
2. The basic mechanics of hitting a golf ball are relatively simple and can be learned quickly with some practice.
3. However, achieving consistency and mastering the various shots and techniques required to play at a high level can take years of practice and dedication.
4. Compared to other sports, the difference between a beginner and an intermediate golfer is relatively small, while the difference between an intermediate and an advanced golfer is much larger.
5. Therefore, I would say that golf is the sport that is easiest to learn but hardest to master.

A válasz létrehozásához használt modell okainak ismerete lehetővé teszi számunkra, hogy azonosítsuk a kérdés felosztásának helyét, adjon meg további információkat, vagy tisztázzuk az utasításokat.