Firebase Genkit

Genkit, yapay zeka destekli uygulamalar ve özellikler oluşturmanıza yardımcı olmak için tasarlanmış bir çerçevedir. Node.js ve Go için açık kaynak kitaplıklar ve test ve hata ayıklama için geliştirici araçları sunar.

Bu dokümanlar, Node.js için Genkit'i kapsar. Go geliştiricisiyseniz Genkit Go belgelerine bakın.

Genkit kitaplıklarını, Node.js'in desteklendiği her yerde dağıtabilir ve çalıştırabilirsiniz. Herhangi bir üretken yapay zeka modeli API'si veya vektör veritabanı ile çalışacak şekilde tasarlanmıştır. Firebase ve Google Cloud için entegrasyonlar sunuyoruz ancak Genkit'i herhangi bir Google hizmetinden bağımsız olarak kullanabilirsiniz.

Kullanmaya başlama

Temel özellikler

Yapay zeka oluşturma için birleşik API Çeşitli yapay zeka modellerinden içerik oluşturmak veya yayınlamak için tek bir API kullanın. Çoklu giriş/çıkış ve özel model ayarlarıyla çalışır.
Yapılandırılmış çıkış Dahili doğrulamayla yapılandırılmış nesneler (JSON gibi) oluşturun veya yayınlayın. Uygulamanızla entegrasyonu basitleştirin ve yapılandırılmamış verileri kullanılabilir bir biçime dönüştürün.
Araç çağrısı Yapay zeka modellerinin, görevleri tamamlamak için araç olarak işlevlerinizi ve API'lerinizi çağırmasına izin verin. Ne zaman ve hangi araçların kullanılacağına model karar verir.
Chat Genkit, durum bilgisine sahip ve kalıcı olabilecek yapay zeka modelleriyle çok turlu sohbetleri kolaylaştıran, sohbete özel bir API sunar.
Temsilciler Karmaşık görevleri ve iş akışlarını otomatikleştirmeye yardımcı olmak için araçları (diğer temsilciler dahil) kullanan akıllı temsilciler oluşturun.
Veri alma Verilerinizi entegre ederek oluşturulan çıktının doğruluğunu ve alaka düzeyini artırın. Basit API'ler, çeşitli kaynaklardan bilgi yerleştirmenize, dizine eklemenize ve almanıza yardımcı olur.
İstem şablonları Zengin metin şablonları, model ayarları, çoklu modlu destek ve araç entegrasyonu içeren etkili istemleri kompakt, çalıştırılabilir bir istem dosyasında oluşturun.

Bu özelliklerin kodda nasıl kullanılacağı hakkında net bir fikir edinmek için aşağıdaki kod örneklerine bakın:

Temel oluşturma

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);
}

Yapılandırılmış çıkış

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);

İşlev çağırma

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);

Sohbet

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

Aracılar

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.' );

Veri alma

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
});

İstem şablonu

---
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}}.

Geliştirme araçları

Genkit, yapay zeka uygulamalarını oluşturmayı kolaylaştırmak için bir komut satırı arayüzü (KSA) ve yerel bir geliştirici kullanıcı arayüzü sağlar. Bu araçlar sayesinde:

  • Deneme: Yapay zeka işlevlerinizi, istemlerinizi ve sorgularınızı test edip hassaslaştırın.
  • Hata ayıklama: Ayrıntılı yürütme izlemeleriyle sorunları bulup düzeltin.
  • Değerlendir: Oluşturulan sonuçları birden fazla test durumunda değerlendirin.

Bize ulaşın

  • Topluluğa katılın: Discord sunucumuzda güncel bilgilere ulaşabilir, soru sorabilir ve çalışmalarınızla ilgili paylaşımda bulunabilirsiniz.
  • Geri bildirimde bulunma: GitHub sorun izleyicimizi kullanarak sorunları bildirin veya yeni özellikler önerin.

Sonraki adımlar

Başlangıç kılavuzumuzda, Genkit ile ilk yapay zeka uygulamanızı nasıl oluşturacağınızı öğrenin.