Подсказки

Оперативное манипулирование — это основной способ, с помощью которого вы, как разработчик приложений, можете повлиять на результаты генеративных моделей ИИ. Например, при использовании LLM вы можете создавать подсказки, влияющие на тон, формат, продолжительность и другие характеристики ответов моделей.

Genkit разработан с учетом того, что подсказки — это код . Вы пишете и поддерживаете свои запросы в исходных файлах, отслеживаете их изменения с помощью той же системы контроля версий, которую вы используете для своего кода, и развертываете их вместе с кодом, который вызывает ваши генеративные модели ИИ.

Большинство разработчиков обнаружат, что включенная библиотека Dotprompt отвечает их потребностям в работе с подсказками в Genkit. Однако альтернативные подходы также поддерживаются за счет непосредственной работы с подсказками.

Определение подсказок

Вспомогательная функция generate() Genkit принимает строковые запросы, и вы можете вызывать модели таким образом для простых случаев использования.

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

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

В большинстве случаев вам потребуется включить в приглашение некоторые данные, предоставленные клиентом. Вы можете определить функцию для их рендеринга следующим образом.

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'),
});

Одним из недостатков определения подсказок в коде является то, что тестирование требует их выполнения как части потока. Чтобы ускорить итерацию, Genkit предоставляет возможность определять ваши подсказки и запускать их в пользовательском интерфейсе разработчика.

Используйте функцию definePrompt , чтобы зарегистрировать ваши запросы в 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 }
    });
  }
);

Действие подсказки определяет функцию, возвращающую объект GenerateRequest , который можно использовать с любой моделью. При желании вы также можете определить схему ввода для приглашения, аналогичную схеме ввода для потока. В подсказках также можно определить любые общие параметры конфигурации модели, такие как температура или количество выходных токенов.

Вы можете использовать это приглашение в своем коде со вспомогательной функцией renderPrompt() . Укажите входные переменные, ожидаемые в приглашении, и модель для вызова.

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

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

В пользовательском интерфейсе разработчика Genkit вы можете запустить любое приглашение, определенное вами таким образом. Это позволяет вам экспериментировать с отдельными подсказками за пределами потоков, в которых они могут использоваться.

Подсказка

Genkit включает библиотеку Dotprompt , которая добавляет подсказкам дополнительную функциональность.

  • Загрузка подсказок из исходных файлов .prompt
  • Шаблоны на основе рулей
  • Поддержка многоходовых шаблонов подсказок и мультимедийного контента.
  • Краткие определения схемы ввода и вывода.
  • Свободное использование с generate()