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 как инструменты для выполнения задач. Модель решает, когда и какие инструменты использовать. |
Генерация с расширенным поиском | Повысьте точность и актуальность получаемых результатов за счет интеграции ваших данных. Простые API помогут вам встраивать, индексировать и извлекать информацию из различных источников. |
Быстрое создание шаблонов | Создавайте эффективные подсказки, включающие в себя форматированные текстовые шаблоны, настройки модели, мультимодальную поддержку и интеграцию инструментов — и все это в компактном, работоспособном файле подсказок . |
См. следующие примеры кода, чтобы получить конкретное представление о том, как использовать эти возможности в коде:
Базовое поколение
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 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, в нашем руководстве по началу работы .