Inženýrství pokynů v .NET

V tomto článku prozkoumáte základní koncepty nastavování výzev. Řada modelů AI je založená na výzev, což znamená, že reagují na text uživatelského vstupu ( výzva) s odpovědí vygenerovanou prediktivními algoritmy ( dokončení). Novější modely také často podporují dokončování ve formuláři chatu se zprávami založenými na rolích (systém, uživatel, asistent) a historii chatu, aby se zachovaly konverzace.

Práce s podněty

Modely, které podporují chatovací aplikace, používají tři role k uspořádání dokončení: systémovou roli, která řídí chat, roli uživatele , která představuje vstup uživatele a roli asistenta pro reagování na uživatele. Rozdělte výzvy na zprávy pro každou roli:

  • Systémové zprávy poskytují pokyny k modelu pro asistenta. Výzva může obsahovat pouze jednu systémovou zprávu a musí to být první zpráva.
  • Uživatelské zprávy obsahují výzvy od uživatele, příkladů nebo pokynů pro asistenta. Příklad dokončení chatu musí obsahovat alespoň jednu zprávu uživatele.
  • Zprávy pomocníka zobrazují příklad nebo historické dokončování a musí obsahovat odpověď na předchozí zprávu uživatele. Zprávy pomocníka nejsou povinné, ale pokud je zahrnete, musí být spárované s uživatelskou zprávou, aby bylo možné vytvořit příklad.

Použijte pokyny ke zlepšení výsledku

Instrukce je text, který modelu říká, jak reagovat. Instrukce může být direktiva nebo imperativní:

  • Direktivy říkají modelu, jak se chovat, ale nejsou jednoduché příkazy – zamyslete se nad nastavením postavy improvizovaného herce: "Pomáháte studentům učit se o historii USA, takže mluvte o USA, pokud se konkrétně neptají na jiné země nebo oblasti."
  • Imperativní příkazy jsou jednoznačné příkazy , které má model sledovat. "Přeložit na Tagalog:"

Použití příkladů k vedení modelu

Příkladem je text, který ukazuje, jak reagovat na model poskytnutím ukázkového vstupu uživatele a výstupu modelu. Model používá příklady k odvození toho, co se má zahrnout do dokončování. Příklady mohou být uvedeny před nebo po pokynech v navržené výzvě, ale neměly by se střídat.

Příklad začíná výzvou a volitelně může obsahovat dokončení. Dokončení v příkladu nemusí obsahovat doslovnou odpověď – může obsahovat jenom formátované slovo, první odrážku v neuspořádaném seznamu nebo něco podobného, aby bylo možné určit, jak má být každé dokončení zahájeno.

Klasifikujte příklady jako učení s nulovým snímkem nebo učení s několika snímky na základě toho, jestli obsahují doslovné dokončování.

  • Zero-shot learning příklady zahrnují výzvu bez doslovného doplnění. Tento přístup testuje odpovědi modelu bez poskytnutí ukázkového výstupu dat. Výzvy s nulovým snímkem můžou obsahovat dokončování, která obsahují upozornění, jako je například označení, že by model měl vypsat seřazený seznam tak, že zahrne "1". jako dokončení.
  • Few-shot learning příklady zahrnují několik dvojic výzev s doslovnými dokončeními. Učení z malého množství dat může změnit chování modelu rozšířením jeho stávajících znalostí.

Signály

Upozornění je text, který vyjadřuje požadovanou strukturu nebo formát výstupu. Podobně jako instrukce model nezpracovává upozornění, jako by šlo o uživatelský vstup. Jako příklad ukazuje model, co chcete, namísto toho, abyste mu říkali, co má dělat. Přidejte tolik informací, kolik potřebujete k tomu, abyste iterovali na požadovaný výsledek. Použijte upozornění s pokyny nebo příkladem a umístěte je na konec výzvy.

Příklad výzvy pomocí .NET

.NET poskytuje různé nástroje pro vyvolání výzev a chatování s různými modely umělé inteligence. Pomocí agenta Framework se můžete připojit k široké škále modelů a služeb umělé inteligence. Agent Framework obsahuje nástroje pro vytváření agentů pomocí pokynů systému a udržování stavu konverzace napříč několika výměnami.

Vezměme si následující příklad kódu:

using Azure;
using Azure.AI.OpenAI;
using Microsoft.Agents.AI;
using OpenAI.Chat;

string endpoint = "https://<your-endpoint>.openai.azure.com/";
string apiKey = "<your-api-key>";

AIAgent agent = new AzureOpenAIClient(
    new Uri(endpoint),
    new AzureKeyCredential(apiKey))
        .GetChatClient("gpt-4o")
        .AsAIAgent();

// Create a session to maintain conversation state.
AgentSession session = await agent.CreateSessionAsync();

while (true)
{
    // Get user prompt.
    Console.WriteLine("Your prompt:");
    string? userInput = Console.ReadLine();

    if (string.IsNullOrWhiteSpace(userInput))
        break;

    // Send prompt to agent and stream response.
    Console.WriteLine("AI response:");
    await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(userInput, session))
    {
        Console.Write(update.Text);
    }
    Console.WriteLine();
}

Předchozí kód:

  • Vytvoří klienta Azure OpenAI s koncovým bodem a klíčem rozhraní API.
  • Získá chatovacího klienta pro model GPT-4o a převede ho na agenta AI.
  • Vytvoří relaci agenta pro zachování stavu konverzace v průběhu několika výměn.
  • Přijímá vstup uživatele ve smyčce, aby bylo možné použít různé typy výzev.
  • Asynchronně streamuje odpověď AI a zobrazí ji do konzoly.