Firebase Genkit

Genkit چارچوبی است که برای کمک به شما در ساخت برنامه‌ها و ویژگی‌های مبتنی بر هوش مصنوعی طراحی شده است. کتابخانه های منبع باز برای Node.js و Go، به علاوه ابزارهای توسعه دهنده برای آزمایش و اشکال زدایی فراهم می کند.

این مستندات Genkit را برای Node.js پوشش می دهد. اگر برنامه‌نویس Go هستید، به مستندات Genkit Go مراجعه کنید.

شما می توانید کتابخانه های Genkit را در هر جایی که Node.js پشتیبانی می شود مستقر و اجرا کنید. این برای کار با هر API مدل هوش مصنوعی یا پایگاه داده برداری طراحی شده است. در حالی که ما ادغام هایی را برای Firebase و Google Cloud ارائه می دهیم، می توانید از Genkit مستقل از هر سرویس Google استفاده کنید.

شروع کنید

قابلیت های کلیدی

API یکپارچه برای تولید هوش مصنوعی از یک API برای تولید یا پخش محتوا از مدل های مختلف هوش مصنوعی استفاده کنید. با ورودی/خروجی چندوجهی و تنظیمات مدل سفارشی کار می کند.
خروجی ساختاریافته اشیاء ساختار یافته (مانند JSON) را با اعتبار سنجی داخلی تولید یا پخش کنید. ادغام با برنامه خود را ساده کنید و داده های بدون ساختار را به یک قالب قابل استفاده تبدیل کنید.
فراخوانی ابزار به مدل های هوش مصنوعی اجازه دهید توابع و API های شما را به عنوان ابزاری برای تکمیل وظایف فراخوانی کنند. مدل تصمیم می گیرد که چه زمانی و از کدام ابزار استفاده کند.
چت کنید Genkit یک API مخصوص چت را ارائه می دهد که مکالمات چند نوبتی با مدل های هوش مصنوعی را تسهیل می کند، که می تواند حالتی و پایدار باشد.
عوامل عوامل هوشمندی ایجاد کنید که از ابزارها (از جمله سایر عوامل) برای کمک به خودکارسازی وظایف پیچیده و گردش کار استفاده می کنند.
بازیابی داده ها با یکپارچه سازی داده های خود، دقت و ارتباط خروجی تولید شده را بهبود بخشید. API های ساده به شما کمک می کنند اطلاعات را از منابع مختلف جاسازی، فهرست بندی و بازیابی کنید.
قالب بندی سریع اعلان‌های مؤثری ایجاد کنید که شامل قالب‌بندی متن غنی، تنظیمات مدل، پشتیبانی چندوجهی، و یکپارچه‌سازی ابزار می‌شود - همه در یک فایل سریع فشرده و قابل اجرا.

برای درک دقیق نحوه استفاده از این قابلیت ها در کد، نمونه کد زیر را ببینید:

نسل پایه

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 یک رابط خط فرمان (CLI) و یک رابط کاربری محلی توسعه دهنده را برای ساختن برنامه های کاربردی هوش مصنوعی فراهم می کند. این ابزارها به شما کمک می کنند:

  • آزمایش: عملکردها، درخواست‌ها و پرس و جوهای هوش مصنوعی خود را آزمایش و اصلاح کنید.
  • اشکال زدایی: پیدا کردن و رفع مشکلات با ردیابی دقیق اجرای.
  • ارزیابی: نتایج تولید شده را در چندین مورد آزمایشی ارزیابی کنید.

با ما ارتباط برقرار کنید

  • به انجمن بپیوندید: به روز بمانید، سؤال بپرسید و کار خود را در سرور Discord ما به اشتراک بگذارید.
  • ارائه بازخورد: مشکلات را گزارش کنید یا ویژگی‌های جدید را با استفاده از ردیاب مشکل GitHub ما پیشنهاد دهید.

مراحل بعدی

در راهنمای شروع ما بیاموزید که چگونه اولین برنامه هوش مصنوعی خود را با Genkit بسازید.