Firebase Genkit

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

تتناول هذه المستندات Genkit لنظام التشغيل Node.js. إذا كنت مطوّر تطبيقات Go، يمكنك الاطّلاع على مستندات Genkit Go.

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

البدء

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

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

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

الإنشاء الأساسي

import { genkit } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,  // Set default model
});

// Simple generation
const { text } = await ai.generate('Why is AI awesome?');
console.log(text);

// Streamed generation 
const { stream } = await ai.generateStream('Tell me a story');
for await (const chunk of stream) {
  console.log(chunk.text);
}

الإخراج المنظَّم

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const { output } = await ai.generate({
  prompt: 'Create a brief profile for a character in a fantasy video game.',
  // Specify output structure using Zod schema
  output: {
    format: 'json',  
    schema: z.object({
      name: z.string(),
      role: z.enum(['knight', 'mage', 'archer']),
      backstory: z.string(),
    }),
  },
});

console.log(output);

استدعاء الدوالّ

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define tool to get current weather for a given location
const getWeather = ai.defineTool(
  {
    name: "getWeather",
    description: "Gets the current weather in a given location",
    inputSchema: z.object({ 
      location: z.string().describe('The location to get the current weather for')
    }),
    outputSchema: z.string(),
  },
  async (input) => {
    // Here, we would typically make an API call or database query. For this
    // example, we just return a fixed value.
    return `The current weather in ${input.location} is 63°F and sunny.`;
  }
);

const { text } = await ai.generate({
    tools: [getWeather], // Give the model a list of tools it can call
    prompt: 'What is the weather like in New York? ',
});

console.log(text);

دردشة

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const chat = ai.chat({ system: 'Talk like a pirate' });

let response = await chat.send('Hi, my name is Pavel');

response = await chat.send('What is my name?');
console.log(response.text);
// Ahoy there! Your name is Pavel, you scurvy dog

الوكلاء

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define prompts that represent specialist agents
const reservationAgent = ai.definePrompt(
  {
    name: 'reservationAgent',
    description: 'Reservation Agent can help manage guest reservations',
    tools: [reservationTool, reservationCancelationTool, reservationListTool],

  },
  `{{role "system"}} Help guests make and manage reservations`
);

const menuInfoAgent = ...
const complaintAgent = ...

// Define a triage agent that routes to the proper specialist agent
const triageAgent = ai.definePrompt(
  {
    name: 'triageAgent',
    description: 'Triage Agent',
    tools: [reservationAgent, menuInfoAgent, complaintAgent],
  },
  `{{role "system"}} You are an AI customer service agent for Pavel's Cafe.
  Greet the user and ask them how you can help. If appropriate, transfer to an
  agent that can better handle the request. If you cannot help the customer with
  the available tools, politely explain so.`
);

// Create a chat to enable multi-turn agent interactions
const chat = ai.chat(triageAgent);

chat.send('I want a reservation at Pavel\'s Cafe for noon on Tuesday.' );

استرداد البيانات

import { genkit } from 'genkit';
import { googleAI, gemini15Flash, textEmbedding004 } from '@genkit-ai/googleai';
import { devLocalRetrieverRef } from '@genkit-ai/dev-local-vectorstore';

const ai = genkit({ 
  plugins: [
    googleAI()
    devLocalVectorstore([
      {
        indexName: 'BobFacts',
        embedder: textEmbedding004,
      },
    ]),
  ],
  model: gemini15Flash,
});

// Reference to a local vector database storing Genkit documentation
const retriever = devLocalRetrieverRef('BobFacts');

// Consistent API to retrieve most relevant documents based on semantic similarity to query
const docs = await ai.retrieve(
  retriever: retriever,
  query: 'How old is bob?',
);

const result = await ai.generate({
    prompt: `Use the provided context from the Genkit documentation to answer this query: ${query}`,
    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 واجهة سطر أوامر وواجهة مستخدم للمطوّر على الجهاز لتسهيل إنشاء تطبيقات الذكاء الاصطناعي. تساعدك هذه الأدوات في ما يلي:

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

التواصل معنا

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

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

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