Firebase Genkit
Genkit הוא מסגרת שמיועדת לעזור לכם לפתח אפליקציות ותכונות מבוססות-AI. יש בו ספריות קוד פתוח ל-Node.js ול-Go, וגם כלים למפתחים לבדיקה ולניפוי באגים.
המאמר הזה עוסק ב-Genkit ל-Node.js. אם אתם מפתחים של Go, כדאי לעיין במסמכי התיעוד של Genkit Go.
תוכלו לפרוס ולהריץ ספריות Genkit בכל מקום שבו יש תמיכה ב-Node.js. הוא תוכנן לפעול עם כל ממשק API של מודל AI גנרטיבי או מסד נתונים של וקטורים. אנחנו מציעים שילובים ל-Firebase ול-Google Cloud, אבל אפשר להשתמש ב-Genkit ללא תלות בשירותים של Google.
יכולות עיקריות
API מאוחד ליצירת AI | להשתמש ב-API אחד כדי ליצור או לשדר תוכן מתוך מודלים שונים של AI. התכונה פועלת עם הגדרות קלט/פלט רב-אופניים והגדרות מודל מותאם אישית. |
יצירה מובנית | יצירה או שידור של אובייקטים מובנים (כמו JSON) באמצעות אימות מובנה. פשוטת את השילוב עם האפליקציה וממירה נתונים לא מובְנים לפורמט שאפשר להשתמש בו. |
התקשרות לכלי | מאפשרים למודלים של AI להפעיל את הפונקציות וממשקי ה-API שלכם ככלים להשלמת משימות. המודל מחליט מתי ובאילו כלים להשתמש. |
יצירה משופרת של אחזור | שילוב הנתונים שלכם יעזור לכם לשפר את הדיוק והרלוונטיות של הפלט שנוצר. ממשקי API פשוטים עוזרים להטמיע, להוסיף לאינדקס ולאחזר מידע ממקורות שונים. |
יצירת הנחיות | תוכלו ליצור הנחיות יעילות שכוללות תבניות של טקסט עשיר, הגדרות מודלים, תמיכה מרובה מצבים ושילוב כלים – והכול בקובץ הנחיות קומפקטי שניתן להריץ. |
דוגמאות הקוד הבאות יכולות לעזור לכם להבין איך להשתמש ביכולות האלה בקוד:
יצירה בסיסית
import { generate } from '@genkit-ai/ai';
import { gemini15Flash, claude3Sonnet, llama31 } from '@genkit-ai/vertexai';
import { gpt4o } from 'genkitx-openai';
// Use the same API to generate content from many models
const result = await generate({
model: gemini15Flash, // Or use claude3Sonnet, llama31, gpt4o
prompt: 'What makes you the best LLM out there?',
});
יצירה מובנית
import { generate } from '@genkit-ai/ai';
import { gemini15Flash } from '@genkit-ai/googleai';
import { z } from 'zod';
const result = await generate({
model: gemini15Flash,
prompt: 'Create a brief profile for a character in a fantasy video game.',
// Specify output structure using Zod schema
output: {
schema: z.object({
name: z.string(),
role: z.enum(['knight', 'mage', 'archer']),
backstory: z.string(),
attacks: z.array(z.object({
name: z.string(),
damage: z.number().describe('amount of damage, between 2 and 25'),
})).describe('3 attacks the character can use')
})
}
});
קריאה לכלים
import { generate, defineTool } from '@genkit-ai/ai';
import { gemini15Flash } from '@genkit-ai/googleai';
import { z } from 'zod';
// Define tool to get weather data for a given location
const lookupWeather = defineTool({
name: 'lookupWeather',
description: 'Get the current weather in a location.',
// Define input and output schema so the model knows how to use the tool
inputSchema: z.object({
location: z.string().describe('The location to get the weather for.'),
}),
outputSchema: z.object({
temperature: z.number().describe('The current temperature in Fahrenheit.'),
condition: z.string().describe('A brief description of the weather conditions.'),
}),
async (input) => {
// Insert weather lookup API code
}
});
const result = await generate({
model: gemini15Flash,
tools: [lookupWeather], // Give the model a list of tools it can call
prompt: 'What is the weather like in New York? ',
});
אחזור
import { generate, retrieve } from '@genkit-ai/ai';
import { devLocalRetrieverRef } from '@genkit-ai/dev-local-vectorstore';
import { gemini15Flash } from '@genkit-ai/googleai';
// Sample assumes Genkit documentation has been chunked, stored, and indexed in
// local vectorstore in previous step.
// Reference to a local vector database storing Genkit documentation
const retriever = devLocalRetrieverRef('genkitQA');
const query = 'How do I retrieve relevant documents in Genkit?'
// Consistent API to retrieve most relevant documents based on semantic similarity to query
const docs = await retrieve({
retriever: retriever,
query: query,
options: { limit: 5 },
});
const result = await generate({
model: gemini15Flash
prompt: 'Use the provided context from the Genkit documentation to answer this query: ${query}',
context: docs // Pass retrieved documents to the model
});
תבנית של הצעה לפעולה
---
model: vertexai/gemini-1.5-flash
config:
temperature: 0.9
input:
schema:
properties:
location: {type: string}
style: {type: string}
name: {type: string}
required: [location]
default:
location: a restaurant
---
You are the most welcoming AI assistant and are currently working at {{location}}.
Greet a guest{{#if name}} named {{name}}{{/if}}{{#if style}} in the style of {{style}}{{/if}}.
כלי פיתוח
Genkit מספק ממשק שורת פקודה (CLI) וממשק משתמש מקומי למפתחים כדי להקל על הבנייה של אפליקציות AI. הכלים האלה יעזרו לכם:
- ניסוי: אפשר לבדוק ולשפר את הפונקציות, ההנחיות והשאילתות של AI.
- ניפוי באגים: איתור ותיקון בעיות באמצעות דוחות ביצוע מפורטים.
- בדיקה: הערכה של התוצאות שנוצרו בכמה תרחישי בדיקה.
טוב להיות בקשר
- הצטרפות לקהילה: תוכלו להתעדכן, לשאול שאלות ולשתף את העבודה שלכם בשרת Discord שלנו.
- שליחת משוב: אפשר לדווח על בעיות או להציע תכונות חדשות באמצעות אתר הבעיות שלנו ב-GitHub.
השלבים הבאים
במדריך תחילת העבודה מוסבר איך ליצור את אפליקציית ה-AI הראשונה שלכם באמצעות Genkit.