Firebase Genkit

Genkit, yapay zeka destekli uygulamalar ve özellikler geliştirmenize yardımcı olmak için tasarlanmış bir çerçevedir. Node.js ve Go için açık kaynak kitaplıkların yanı sıra test ve hata ayıklama için geliştirici araçları sağlar.

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

Node.js'nin desteklendiği her yerde Genkit kitaplıklarını dağıtıp çalıştırabilirsiniz. Tüm üretken yapay zeka model API'leriyle veya vektör veritabanlarıyla çalışacak şekilde tasarlanmıştır. Firebase ve Google Cloud için entegrasyonlar sunsak da Genkit'i tüm Google hizmetlerinden bağımsız olarak kullanabilirsiniz.

Kullanmaya başlama

Temel özellikler

Yapay zeka üretimi için birleşik API Çeşitli yapay zeka modellerinden içerik oluşturmak veya akışı gerçekleştirmek için tek bir API kullanın. Çok modlu giriş/çıkış ve özel model ayarlarıyla çalışır.
Yapılandırılmış oluşturma Yerleşik doğrulama ile yapılandırılmış nesneler (JSON gibi) oluşturun veya bu nesneleri akış olarak kullanın. Uygulamanızla entegrasyonu basitleştirin ve yapılandırılmamış verileri kullanılabilir bir biçime dönüştürün.
Araçla arama Yapay zeka modellerinin, görevleri tamamlamak için işlevlerinizi ve API'lerinizi araç olarak çağırmasına izin verin. Model, hangi araçların ne zaman ve kullanılacağına karar verir.
Almayla artırılmış oluşturma Verilerinizi entegre ederek, oluşturulan sonuçların doğruluğunu ve alaka düzeyini artırın. Basit API'ler çeşitli kaynaklardaki bilgileri yerleştirmenize, dizine eklemenize ve almanıza yardımcı olur.
İstem şablonu oluşturma Küçük ve çalıştırılabilir bir istem dosyasında zengin metin şablonu oluşturma, model ayarları, çok modlu destek ve araç entegrasyonu gibi etkili istemler oluşturun.

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

Temel oluşturma

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?',
});

Yapılandırılmış oluşturma

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

Araçla arama

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? ',
});

Alma

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

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

Geliştirme araçları

Genkit, yapay zeka uygulaması derlemeyi kolaylaştırmak için komut satırı arayüzü (KSA) ve yerel geliştirici kullanıcı arayüzü sunar. Bu araçlar size şu konularda yardımcı olur:

  • Deneme: Yapay zeka işlevlerinizi, istemlerinizi ve sorgularınızı test edip iyileştirin.
  • Hata ayıkla: Ayrıntılı yürütme izleriyle ilgili sorunları bulup düzeltin.
  • Değerlendirin: Birden fazla test durumunda oluşturulan sonuçları değerlendirin.

Bize ulaşın

  • Topluluğa katılın: Gelişmeleri takip edin, sorular sorun ve çalışmalarınızı Discord sunucumuzda paylaşın.
  • Geri bildirim gönderin: GitHub sorun izleyicimizi kullanarak sorun bildirin veya yeni özellik önerin.

Sonraki adımlar

Başlarken rehberimizden Genkit ile ilk yapay zeka uygulamanızı nasıl oluşturacağınızı öğrenin.