Puedes usar los flujos de Firebase Genkit como acciones del servidor en tus apps de Next.js. En el resto de esta página, se muestra cómo hacerlo.
Requisitos
Node.js 20 o una versión posterior.
Procedimiento
Ejecuta el siguiente comando para instalar la CLI de Genkit:
npm i -g genkit
Si aún no tienes una app de Next.js que quieras usar, crea una:
npx create-next-app@latest
Selecciona TypeScript como lenguaje preferido.
Inicializa Genkit en tu proyecto de Next.js:
cd your-nextjs-project
genkit init
- Selecciona Next.js como la plataforma de implementación.
- Selecciona el proveedor de modelos que deseas usar.
Acepta los valores predeterminados para los mensajes restantes. La herramienta
genkit
creará algunos archivos fuente de muestra para que puedas comenzar a desarrollar tus propios flujos de IA.Haz que las credenciales de API estén disponibles para la función implementada. Según el proveedor de modelos que elijas, realiza una de las siguientes acciones:
Gemini (IA de Google)
Asegúrate de que la IA de Google esté disponible en tu región.
Genera una clave de API para la API de Gemini con Google AI Studio.
Para ejecutar el flujo de manera local, como en el siguiente paso, configura la variable de entorno
GOOGLE_GENAI_API_KEY
como tu clave:export GOOGLE_GENAI_API_KEY=<your API key>
Cuando implementes la app, deberás hacer que esta clave esté disponible en el entorno implementado. Los pasos exactos dependen de la plataforma.
Gemini (Vertex AI)
En la consola de Cloud, habilita la API de Vertex AI para tu proyecto.
Para ejecutar el flujo de manera local, como en el siguiente paso, configura algunas variables de entorno adicionales y usa la herramienta
gcloud
para configurar las credenciales predeterminadas de la aplicación:export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
gcloud auth application-default login
Cuando implementes tu app, deberás hacer lo siguiente:
Configura las variables
GCLOUD_PROJECT
yGCLOUD_LOCATION
en el entorno implementado. Los pasos exactos dependen de la plataforma.Si no realizas la implementación en un entorno de Firebase o Google Cloud, configura la autorización para la API de Vertex AI mediante la federación de identidades para cargas de trabajo (recomendado) o una clave de cuenta de servicio.
En la página IAM de la consola de Google Cloud, otorga el rol Usuario de Vertex AI (
roles/aiplatform.user
) a la identidad que usas para llamar a la API de Vertex AI.- En Cloud Functions y Cloud Run, esta es la cuenta de servicio de procesamiento predeterminada.
- En Firebase App Hosting, es la cuenta de servicio de backend de tu app.
- En otras plataformas, se trata de la identidad que configuraste en el paso anterior.
El único secreto que debes configurar en este instructivo es para el proveedor del modelo, pero, en general, debes hacer algo similar con cada servicio que use tu flujo.
Si permitiste que el comando
genkit init
generara un flujo de muestra, creó un archivo,genkit.ts
, que tiene un flujo de Genkit que puedes usar como una acción del servidor. Haz una prueba:Primero, realiza un pequeño cambio en la función
callMenuSuggestionFlow
:export async function callMenuSuggestionFlow(theme: string) { const flowResponse = await runFlow(menuSuggestionFlow, theme); console.log(flowResponse); return flowResponse; }
Puedes acceder a esta función como una acción del servidor. Como ejemplo simple, reemplaza el contenido de
page.tsx
con lo siguiente:'use client'; import { callMenuSuggestionFlow } from '@/app/genkit'; import { useState } from 'react'; export default function Home() { const [menuItem, setMenu] = useState<string>(''); async function getMenuItem(formData: FormData) { const theme = formData.get('theme')?.toString() ?? ''; const suggestion = await callMenuSuggestionFlow(theme); setMenu(suggestion); } return ( <main> <form action={getMenuItem}> <label> Suggest a menu item for a restaurant with this theme:{' '} </label> <input type="text" name="theme" /> <button type="submit">Generate</button> </form> <br /> <pre>{menuItem}</pre> </main> ); }
Ejecútala en el entorno de desarrollo de Next.js:
npm run dev
También puedes ejecutar y explorar tus flujos en la IU para desarrolladores de Genkit:
genkit start