Poskytnutí kontextu ke zlepšení přesnosti
Poskytnutím kontextu modelu AI umožňuje modelu lépe porozumět tomu, o co žádáte, nebo co by měl vědět, aby poskytl nejlepší odpověď. Kontext lze poskytnout několika způsoby.
Složení výstupu požadavku
Určení struktury výstupu může mít velký dopad na výsledky. Může se jednat například o dotaz modelu, aby citovala jejich zdroje, napsala odpověď jako e-mail, naformátovala odpověď jako dotaz SQL, klasifikovala mínění do konkrétní struktury atd. Příklad:
Instrukce
Write a table in markdown with 6 animals in it, with their genus and species
Response
| 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 |
Tuto techniku lze použít s vlastními formáty, jako je například struktura JSON:
Instrukce
Put two fictional characters into JSON of the following format
{
firstNameFictional:
jobFictional:
}
Response
Here's an example of how you can put two fictional characters into JSON format:
{
"firstNameFictional": "Henry",
"jobFictional": "Wizard"
},
{
"firstNameFictional": "Frank",
"jobFictional": "Hero"
}
Systémová zpráva
Systémová zpráva je zahrnutá na začátku výzvy a je navržená tak, aby poskytovala pokyny k modelu, perspektivu k odpovědi nebo jiné informace užitečné k vedení odpovědi modelu. Tato systémová zpráva může zahrnovat tón nebo osobnost, témata, která by neměla být zahrnuta, ani specifika (například formátování) odpovědi.
Můžete jí například dát některé z následujících systémových zpráv:
- "Chci, abys fungoval jako terminál příkazového řádku. Odpovězte na příkazy přesně tak, jak by to bylo cmd.exe, v jednom jedinečném bloku kódu a nic jiného."
- "Chci, abys byl překladatel, z angličtiny do španělštiny. Nereagujte na nic, co říkám nebo se ptám, přeložte pouze mezi těmito dvěma jazyky a odpovězte přeloženým textem."
- "Jednat jako motivační mluvčí, volně dávat povzbuzovat rady o cílech a výzvách. Měli byste zahrnout spoustu pozitivních potvrzení a navrhovaných aktivit pro dosažení koncového cíle uživatele."
Další ukázkové systémové zprávy jsou k dispozici v horní části okna chatu v Azure AI Studiu výběrem tlačítka Ukázky výzvy . Zkuste definovat vlastní systémovou výzvu, která určuje jedinečnou odpověď, a chatujte s modelem, abyste viděli, jak se odpovědi liší.
Koncový ChatCompletion
bod umožňuje zahrnutí systémové zprávy pomocí role chatu System
.
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?")
}
};
Response
{
"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?"}
]
)
Response
{
"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"
}
}
],
...
}
Systémové zprávy můžou výrazně změnit odpověď ve formátu i obsahu. Zkuste definovat jasnou systémovou zprávu pro model, která přesně vysvětluje, jaký druh očekávané odpovědi a co děláte nebo nechcete, aby zahrnovala.
Historie konverzace
Spolu se systémovou zprávou je možné modelu poskytnout i další zprávy, aby se konverzace zlepšila. Historie konverzací umožňuje modelu pokračovat v odpovídání podobným způsobem (například tónem nebo formátováním) a umožnit uživateli odkazovat na předchozí obsah v následných dotazech. Tuto historii můžete poskytnout dvěma způsoby: ze skutečné historie chatu nebo z uživatelem definované ukázkové konverzace.
Rozhraní chatu, která používají modely OpenAI, jako je ChatGPT a chatovací hřiště v Azure AI Studiu, zahrnují historii konverzací automaticky, což vede k bohatší a smysluplnější konverzaci. V části Parametry chatovacího hřiště můžete určit, kolik minulých zpráv chcete zahrnout. Zkuste to snížit na 1 nebo zvýšit na maximum, abyste viděli, jak různá množství historie ovlivňují konverzaci.
Poznámka:
Další historie konverzací, která je součástí výzvy, znamená, že se používá větší počet vstupních tokenů. Budete muset určit, jaký je správný zůstatek pro váš případ použití, vzhledem k omezení tokenů modelu, který používáte.
Chatovací systémy můžou také využívat možnosti sumarizace modelu k uložení vstupních tokenů. Aplikace může zvolit souhrn minulých zpráv a zahrnout tento souhrn do historie konverzací a pak do modelu zadat pouze doslovné doslovné shrnutí předchozích zpráv.
Několik snímků učení
Použití ukázkové konverzace definované uživatelem se nazývá několik snímků učení, které poskytuje příklady modelu, jak by měl reagovat na daný dotaz. Tyto příklady slouží k trénování modelu, jak reagovat.
Pokud například modelu poskytnete několik výzev a očekávanou odpověď, bude pokračovat ve stejném vzoru, aniž byste mu řekli, co dělat:
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:
Pokud je model poskytován pouze You can't miss this
bez dalšího kontextu z několika snímků učení, odpověď pravděpodobně nebude užitečná.
V praxi se historie konverzací a několik snímků učení posílají do modelu stejným způsobem; každá zpráva uživatele a odpověď asistenta je samostatná zpráva v objektu zprávy. Koncový ChatCompletion
bod je optimalizovaný tak, aby zahrnoval historii zpráv bez ohledu na to, jestli je tato historie zpráv poskytována jako několik snímků učení nebo skutečné historie konverzací.
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"}
]
)
Rozdělení složité úlohy
Další technikou pro vylepšenou interakci je rozdělení složitých výzev na více dotazů. Díky tomu může model lépe porozumět jednotlivým částem a zlepšit celkovou přesnost. Rozdělení výzev také umožňuje zahrnout odpověď z předchozí výzvy do budoucí výzvy a pomocí těchto informací kromě možností modelu generovat zajímavé odpovědi.
Můžete například požádat model 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?
. Výsledek je pravděpodobně 3
, který pokud Doug začíná v horní části čáry zip je nesprávná.
Informativnější odpověď může pocházet z několika otázek, o době odezvy, abyste se vrátili na začátek řádku zip a jak zohlednit skutečnost, že Doug začíná nahoře. Rozdělení tohoto problému odhalí, že Doug může ve skutečnosti jezdit zip linku čtyřikrát.
Řetěz myšlenek
Jednou z užitečných metod, která vám pomůže efektivně rozdělit úkol, je požádat model, aby vysvětlil svůj řetěz myšlenek.
Dotazování modelu, aby reagoval s podrobným procesem, podle kterého určil odpověď, je užitečný způsob, jak pochopit, jak model interpretuje výzvu. Díky tomu můžete zjistit, kde model provedl nesprávný logický tah, a lépe pochopit, jak změnit výzvu, aby se zabránilo chybě. Tato technika může zahrnovat dotaz, aby citovala své zdroje, jako je chat Bing (který používá model GPT-4 generace) a zdůvodňuje, proč určil odpověď.
Řetězec myšlenkové techniky výzvy se nejlépe používá k iteraci a zlepšení na vašich výzev, aby získal nejvyšší kvalitu odpovědi z modelu.
Například dotaz na výsledek modelu What sport is easiest to learn but hardest to master?
odpovídá odpovědí a malé vysvětlení, proč. Po zobrazení výzvy What sport is easiest to learn but hardest to master? Give a step by step approach of your thoughts, ending in your answer
je však odpověď úplným vysvětlením toho, jak přišel na odpověď.
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.
Znalost kroků důvodu, které model použil k vytvoření odpovědi, nám umožňuje identifikovat, kde potřebujeme rozdělit výzvu, poskytnout další informace nebo objasnit pokyny.