พรอมต์

การจัดการพรอมต์เป็นวิธีหลักที่คุณในฐานะนักพัฒนาแอปโน้มน้าว เอาต์พุตของโมเดล Generative AI ตัวอย่างเช่น เมื่อใช้ LLM คุณจะสร้าง ที่มีผลต่อน้ำเสียง รูปแบบ ความยาว และลักษณะอื่นๆ ของ คำตอบของโมเดล

Genkit ได้รับการออกแบบภายใต้พื้นที่ที่ข้อความแจ้งเป็นโค้ด คุณเขียนและ เก็บข้อความแจ้งในไฟล์ต้นฉบับ ติดตามการเปลี่ยนแปลงการแก้ไขโดยใช้เวอร์ชันเดียวกัน ระบบควบคุมที่คุณใช้สำหรับโค้ดของคุณ และคุณทำให้ใช้งานได้พร้อมกับโค้ด ที่เรียกโมเดล Generative AI ของคุณ

นักพัฒนาซอฟต์แวร์ส่วนใหญ่จะพบว่าไลบรารี Dotprompt ที่รวมอยู่ ตอบสนองความต้องการในการใช้พรอมต์ใน Genkit อย่างไรก็ตาม ก็ใช้กับพรอมต์โดยตรงได้เช่นกัน

การกำหนดพรอมต์

ฟังก์ชันผู้ช่วย generate() ของ Genkit ยอมรับพรอมต์สตริงและคุณสามารถ ในลักษณะนี้สำหรับ Use Case ที่ตรงไปตรงมา

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 ได้ให้บริการอำนวยความสะดวกแก่การปรับปรุงอย่างรวดเร็ว เพื่อกำหนดพรอมต์ของคุณและเรียกใช้ใน UI สำหรับนักพัฒนาซอฟต์แวร์

ใช้ฟังก์ชัน 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',
  })
);

ใน UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit คุณสามารถเรียกใช้พรอมต์ที่คุณกำหนดไว้ด้วยวิธีนี้ ซึ่งช่วยให้คุณสามารถทดสอบกับข้อความแจ้งแต่ละรายการภายนอกขอบเขตของ ขั้นตอนที่อาจใช้

ดอทพรอมพ์

Genkit มีไลบรารี Dotprompt ซึ่งจะเพิ่มส่วนเพิ่มเติม ฟังก์ชันการทำงานของข้อความแจ้ง

  • กำลังโหลดข้อความแจ้งจากไฟล์ต้นฉบับ .prompt ไฟล์
  • เทมเพลตที่ใช้แฮนเดิล
  • รองรับเทมเพลตพรอมต์แบบมัลติเทิร์นและเนื้อหามัลติมีเดีย
  • คำจำกัดความของสคีมาอินพุตและเอาต์พุตที่กระชับ
  • การใช้งานอย่างคล่องแคล่วกับ generate()