Perintah

Manipulasi perintah adalah cara utama agar Anda, sebagai developer aplikasi, memengaruhi output model AI generatif. Misalnya, saat menggunakan LLM, Anda dapat membuat perintah yang memengaruhi nada, format, panjang, dan karakteristik lainnya dari respons model.

Genkit dirancang berdasarkan premis bahwa perintah adalah kode. Anda dapat menulis dan mengelola perintah di file sumber, melacak perubahannya menggunakan sistem kontrol versi yang sama dengan yang digunakan untuk kode Anda, dan men-deploy-nya bersama dengan kode yang memanggil model AI generatif Anda.

Sebagian besar developer akan mendapati bahwa library Dotprompt yang disertakan memenuhi kebutuhan mereka dalam menggunakan perintah di Genkit. Namun, pendekatan alternatif juga didukung dengan bekerja dengan prompt secara langsung.

Menentukan prompt

Fungsi bantuan generate() Genkit menerima perintah string, dan Anda dapat memanggil model dengan cara ini untuk kasus penggunaan yang mudah.

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

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

Pada umumnya, Anda perlu menyertakan beberapa input yang diberikan pelanggan dalam perintah Anda. Anda dapat menentukan fungsi untuk merendernya seperti ini.

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

Salah satu kekurangan dalam menentukan prompt dalam kode Anda adalah pengujian mengharuskan eksekusinya sebagai bagian dari alur. Untuk memfasilitasi iterasi yang lebih cepat, Genkit menyediakan fasilitas untuk menentukan perintah Anda dan menjalankannya di UI Developer.

Gunakan fungsi definePrompt untuk mendaftarkan perintah Anda ke 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 }
    });
  }
);

Tindakan prompt menentukan fungsi yang menampilkan objek GenerateRequest yang dapat digunakan dengan model apa pun. Anda juga dapat menentukan skema input untuk perintah, yang merupakan analisis skema input untuk flow. Prompt juga dapat menentukan salah satu opsi konfigurasi model yang umum, seperti suhu atau jumlah token output.

Anda dapat menggunakan perintah ini dalam kode Anda dengan fungsi bantuan renderPrompt(). Berikan variabel input yang diharapkan oleh perintah, dan model yang akan dipanggil.

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

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

Di UI Developer Genkit, Anda dapat menjalankan perintah apa pun yang telah ditentukan dengan cara ini. Dengan demikian, Anda dapat bereksperimen dengan setiap prompt di luar cakupan alur tempat perintah tersebut mungkin digunakan.

{i>Dotprompt<i}

Genkit menyertakan library Dotprompt yang menambahkan fungsi tambahan ke perintah.

  • Memuat perintah dari .prompt file sumber
  • Template berbasis handlebar
  • Dukungan untuk template perintah multi-turn dan konten multimedia
  • Definisi skema input dan output yang ringkas
  • Penggunaan yang lancar dengan generate()