Firebase Genkit

Genkit هو إطار عمل مصمّم لمساعدتك في إنشاء تطبيقات وميزات مستندة إلى الذكاء الاصطناعي. وهو يوفّر مكتبات مفتوحة المصدر لكلٍّ من Node.js وGo، بالإضافة إلى أدوات المطوّرين للاختبار وتصحيح الأخطاء.

تتناول هذه الوثائق Genkit لـ Node.js. إذا كنت من مطوِّري تطبيقات Go، يُرجى الاطّلاع على مستندات Genkit Go.

ويمكنك نشر مكتبات Genkit وتشغيلها في أي مكان يتيح استخدام Node.js. صُمِّمت هذه المنصة للعمل مع أيّ واجهة برمجة تطبيقات خاصة بنماذج الذكاء الاصطناعي التوليدي أو قاعدة بيانات متجهات. على الرغم من أنّنا نقدّم عمليات دمج لمنصة Firebase وGoogle Cloud، يمكنك استخدام Genkit بشكل مستقل عن أي خدمة من خدمات Google.

البدء

الإمكانات الرئيسية

واجهة برمجة تطبيقات موحّدة لإنشاء الذكاء الاصطناعي يمكنك استخدام واجهة برمجة تطبيقات واحدة لإنشاء المحتوى أو بثّه من نماذج الذكاء الاصطناعي المختلفة. تعمل هذه الميزة مع إعدادات الإدخال/الإخراج المتعدّدة الوسائط وإعدادات النماذج المخصّصة.
الإنشاء المنظَّم أنشِئ أو بث عناصر منظَّمة (مثل JSON) باستخدام ميزة التحقّق المضمَّنة. يمكنك تبسيط عملية الدمج مع تطبيقك وتحويل البيانات غير المنظَّمة إلى تنسيق قابل للاستخدام.
أدوات الاتصال يمكنك السماح لنماذج الذكاء الاصطناعي باستدعاء الدوال وواجهات برمجة التطبيقات كأدوات لإكمال المهام. يقرر النموذج الوقت والأدوات التي سيتم استخدامها.
الجيل المستند إلى استرجاعه يمكنك تحسين دقة النتائج التي يتم إنشاؤها ومدى صلتها بموضوع البحث من خلال دمج بياناتك. تساعدك واجهات برمجة التطبيقات البسيطة في تضمين المعلومات من مصادر مختلفة وفهرستها واستردادها.
إنشاء نماذج الطلبات إنشاء طلبات فعّالة تتضمّن نماذج نص منسّق وإعدادات النماذج والدعم المتعدد الوسائط ودمج الأدوات، وكل ذلك من خلال ملف طلب مضغوط وقابل للتنفيذ

يمكنك الاطلاع على نماذج التعليمات البرمجية التالية للحصول على فكرة ملموسة عن كيفية استخدام هذه الإمكانات في التعليمة البرمجية:

إنشاء أساسي

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 world's 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) وواجهة مستخدم محلية للمطوّرين لتسهيل إنشاء تطبيقات الذكاء الاصطناعي. تساعدك هذه الأدوات في:

  • التجربة: يمكنك اختبار وتحسين وظائف الذكاء الاصطناعي والطلبات وطلبات البحث.
  • تصحيح الأخطاء: للعثور على المشاكل في عمليات تتبُّع التنفيذ التفصيلية وحلّها.
  • التقييم: يمكنك تقييم النتائج التي تم إنشاؤها في حالات اختبار متعددة.

التواصل معنا

  • الانضمام إلى المنتدى: يمكنك الاطّلاع على آخر الأخبار وطرح الأسئلة ومشاركة عملك على خادم Discord.
  • إرسال ملاحظات: يمكنك الإبلاغ عن المشاكل أو اقتراح ميزات جديدة باستخدام أداة تتبُّع المشاكل في GitHub.

الخطوات التالية

يمكنك التعرّف على كيفية إنشاء أول تطبيق مستند إلى الذكاء الاصطناعي باستخدام Genkit في دليل البدء.