Prompty

Manipulacja promptami to główna metoda wpływu deweloperów aplikacji z modeli generatywnej AI. Na przykład przy użyciu modeli LLM można tworzyć które wpływają na ton, format, długość i inne cechy odpowiedzi modeli.

Usługa Genkit opiera się na założeniu, że prompty są kodem. Ty piszesz i Utrzymanie promptów w plikach źródłowych, śledzenie w nich zmian za pomocą tej samej wersji w systemie operacyjnym, z którego korzystasz w przypadku kodu, i który jest wdrażany wraz z kodem które wywołuje modele generatywnej AI.

Większość deweloperów znajdzie w dołączonej bibliotece Dotprompt spełnia potrzeby w zakresie pracy z promptami w Genkit. Natomiast alternatywna są również obsługiwane, jeśli chodzi o bezpośrednią pracę z promptami.

Definiowanie promptów

Funkcja pomocnicza generate() w usłudze Genkit akceptuje prompty w postaci ciągu znaków. Możesz w ten sposób używać w prostych przypadkach użycia.

import { generate } from '@genkit-ai/ai';

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: 'You are a helpful AI assistant named Walt.',
});

W większości przypadków musisz w prompcie uwzględnić dane wejściowe dostarczone przez klienta. Możesz zdefiniować funkcję renderowania w ten sposób.

function helloPrompt(name: string) {
  return `You are a helpful AI assistant named Walt. Say hello to ${name}.`;
}

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: helloPrompt('Fred'),
});

Wadą definiowania promptów w kodzie jest to, że testowanie wymaga wykonywania jako część przepływu pracy. Aby przyspieszyć iterację, Genkit udostępnia placówkę , aby zdefiniować prompty i uruchomić je w interfejsie dewelopera.

Za pomocą funkcji definePrompt możesz rejestrować prompty w Genkit.

import { definePrompt } from '@genkit-ai/ai';
import z from 'zod';

export const helloPrompt = definePrompt(
  {
    name: 'helloPrompt',
    inputSchema: z.object({ name: z.string() }),
  },
  async (input) => {
    const promptText = `You are a helpful AI assistant named Walt.
    Say hello to ${input.name}.`;

    return {
      messages: [{ role: 'user', content: [{ text: promptText }] }],
      config: { temperature: 0.3 }
    });
  }
);

Działanie związane z promptem definiuje funkcję, która zwraca obiekt GenerateRequest której można używać z dowolnym modelem. Opcjonalnie możesz też zdefiniować schemat danych wejściowych dla promptu, który jest związany ze schematem wejściowym przepływu. Prompty mogą też definiować dowolne typowe opcje konfiguracji modelu, takie jak temperatury lub liczby tokenów wyjściowych.

Możesz użyć tego promptu w kodzie za pomocą funkcji pomocniczej renderPrompt(). Podaj zmienne wejściowe oczekiwane w prompcie oraz model do wywołania.

import { generate, render } from '@genkit-ai/ai';

generate(
  renderPrompt({
    prompt: helloPrompt,
    input: { name: 'Fred' },
    model: 'googleai/gemini-1.5-flash-latest',
  })
);

W interfejsie użytkownika aplikacji Genkit możesz uruchamiać dowolne prompty zdefiniowane w ten sposób. Dzięki temu możesz eksperymentować z poszczególnymi promptami spoza zakresu sposoby ich wykorzystania.

Kropka

Genkit zawiera bibliotekę Dotprompt, która dodaje do promptów.

  • Wczytuję prompty z .prompt plików źródłowych
  • Szablony oparte na paskach kierownicy
  • Obsługa szablonów promptów wieloetapowych i treści multimedialnych
  • Zwięzłe definicje schematu danych wejściowych i wyjściowych
  • Swobodne korzystanie z platformy generate()