jugar a buscar
PlayFetch hace que agregar funciones de modelo de lenguaje grande a su aplicación sea rápido y sencillo.
Fondo
Los LLM han cambiado la forma en que trabajan los equipos de productos. Actualmente, una parte cada vez mayor de las aplicaciones se construyen con lenguaje natural. A menudo hay miembros del equipo que no son de ingeniería involucrados en este proceso: estrategas de contenido que se preocupan por el tono y la entrega del texto generado, expertos en el dominio que aportan conocimientos altamente especializados al contenido generado y diseñadores y gerentes de producto que tienen un profundo conocimiento de sus necesidades de producto. Con estos nuevos miembros del equipo involucrados en la creación de prototipos, el desarrollo y el mantenimiento de partes críticas de aplicaciones junto con el equipo de ingeniería, hay muchas interacciones nuevas.
Estas nuevas interacciones entre los ingenieros y el resto del equipo necesitan nuevas herramientas. Los ingenieros no quieren que se distribuya texto sin formato en sus bases de código con solicitudes constantes de actualizaciones solo para descubrir que la nueva versión en realidad no es mejor. Los contribuyentes a mensajes o cadenas no quieren tener que esperar a que un ingeniero integre sus actualizaciones antes de descubrir que no funcionan como se esperaba. PlayFetch resuelve estos y muchos otros puntos débiles que hemos observado en las empresas que trabajan de esta manera.
¿Qué es PlayFetch?
- Un patio de juegos intuitivo creado en torno a la colaboración con comentarios, anotaciones, etiquetas y calificaciones.
- Un sistema de control de versiones no destructivo que cualquier miembro del equipo puede utilizar de forma transparente.
- Un entorno de prueba con importación y exportación de datos, cadenas de medición y pruebas automatizadas de chatbot.
- Una plataforma LLM que se integra perfectamente con herramientas para control de código fuente, gestión de proyectos y almacenamiento de vectores.
- Una solución de alojamiento independiente del modelo con una API unificada simple que admite llamadas simples, chat e interrupciones manuales.
- Una solución de análisis y monitoreo centrada en las necesidades de funciones de LLM.
Implementación de PlayFetch en Google Cloud
PlayFetch ha sido optimizado para ejecutarse en Google Cloud Platform. Siga las instrucciones a continuación para poner en funcionamiento su propia instancia. Asumiremos que ha bifurcado el repositorio oficial de PlayFetch en https://github.com/yello-xyz/playfetch (para que pueda configurar la integración continua). Si planea realizar cambios en el código, puede ejecutar estas instrucciones varias veces para configurar instancias separadas para desarrollo, preparación y producción.
Configurar un nuevo proyecto
- Configure su cuenta de Google Cloud Platform en https://cloud.google.com/.
- Acceda a Cloud Console en https://console.cloud.google.com.
- Navegue hasta IAM y administrador → Administrar recursos y haga clic en CREAR PROYECTO .
- Elija un nombre único (no se puede cambiar más adelante) y haga clic en CREAR .
- Vaya a Facturación y, en Gestión de cuentas , asegúrese de que la facturación esté habilitada para el nuevo proyecto.
Configurar API
- Vaya a API y servicios → API y servicios habilitados .
- Asegúrese de que el proyecto recién creado esté seleccionado en el selector de proyectos en la parte superior.
- Haga clic en HABILITAR APIS Y SERVICIOS .
- Busque la API de administración de App Engine y haga clic en HABILITAR .
- Busque Cloud Build API y haga clic en HABILITAR .
- Busque la API de Cloud Datastore y haga clic en HABILITAR .
- Busque la API de Cloud Scheduler y haga clic en HABILITAR .
- Busque el entorno flexible de Google App Engine y haga clic en HABILITAR .
- Busque la API de administración de identidad y acceso (IAM) y haga clic en HABILITAR .
- Busque Vertex AI API y haga clic en HABILITAR .
Configurar la aplicación App Engine
- Navegue hasta App Engine → Panel y haga clic en CREAR APLICACIÓN .
- Elija una ubicación (no se puede cambiar más adelante).
- Deje abierta la opción de cuenta de servicio (usaremos la predeterminada) y haga clic en SIGUIENTE .
- Ignore el panel de implementación (haga clic en LO HARÉ MÁS TARDE ).
Configurar el almacén de datos
- Navegue hasta Almacén de datos .
- Si no ve el almacén de datos (predeterminado) , espere un minuto y actualice.
- Seleccione el almacén de datos (predeterminado) .
- Seleccione Tiempo de vida (TTL) en la barra lateral y haga clic en CREAR POLÍTICA .
- Establezca Kind en _nextauth_token y la propiedad Timestamp en expires y haga clic en CREAR .
- Cree otra política con tipo caché y propiedad expiresAt .
Configurar el depósito de almacenamiento
- Navegue hasta Cloud Storage → Depósitos y seleccione el depósito [nombre-proyecto] .appspot.com .
- En PERMISOS , haga clic en CONCEDER ACCESO .
- Agregue allUsers principales y asigne la función Visor de objetos de almacenamiento .
- Haga clic en GUARDAR y PERMITIR ACCESO PÚBLICO (este depósito se utilizará para almacenar avatares).
Cree la cuenta de servicio de compilación
- Navegue a IAM y administrador → Cuentas de servicio y haga clic en CREAR CUENTA DE SERVICIO .
- Elija un nombre único y haga clic en CREAR Y CONTINUAR .
- Seleccione el rol Usuario de cuenta de servicio .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione App Engine Deployer .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione Agente de servicio del entorno flexible de App Engine .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione Administrador de servicio de App Engine .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione Cuenta de servicio Cloud Build .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione Administrador del índice de Cloud Datastore .
- Haga clic en AGREGAR OTRA FUNCIÓN y seleccione Administrador de Cloud Scheduler .
- Haga clic en CONTINUAR y LISTO .
[opcional] Configurar dominio personalizado
- Vaya a App Engine → Configuración .
- En DOMINIOS PERSONALIZADOS, haga clic en AGREGAR UN DOMINIO PERSONALIZADO .
- Ingrese el dominio personalizado y los subdominios que desea utilizar (siguiendo las instrucciones para verificar la propiedad).
- Haga clic en CONTINUAR y LISTO .
- Agregue los registros que se muestran a la configuración DNS de su proveedor de dominio personalizado.
[opcional pero recomendado] Configurar la autenticación de usuario de Google OAuth
- Navegue a API y servicios → Pantalla de consentimiento de OAuth .
- Elija el tipo de usuario interno o externo según su caso de uso y haga clic en CREAR .
- Complete los campos obligatorios, haga clic en GUARDAR Y CONTINUAR y luego haga clic en AGREGAR O QUITAR ALCANCE .
- Verifique el alcance .../auth/userinfo.profile y .../auth/userinfo.email , luego haga clic en ACTUALIZAR y GUARDAR Y CONTINUAR .
- Si seleccionó el tipo de usuario externo arriba, puede agregar algunas cuentas de prueba (antes de publicar la aplicación en producción). Asegúrese de incluir la dirección de correo electrónico que desea utilizar para su primer usuario administrador. Tenga en cuenta que también deberá otorgar acceso a estos usuarios en PlayFetch.
- Haga clic en GUARDAR Y CONTINUAR y VOLVER AL PANEL .
- Seleccione Credenciales en la barra lateral y luego haga clic en CREAR CREDENCIALES e ID de cliente de OAuth .
- Seleccione Aplicación web como tipo de aplicación y elija un nombre.
- En Orígenes de JavaScript autorizados , agregue https:// [nombre-proyecto] .appspot.com (y un dominio personalizado si tiene uno). Si también desea utilizar la autenticación de Google cuando ejecuta la aplicación localmente, agregue también http://localhost:3000 .
- En URI de redireccionamiento autorizados , agregue https:// [nombre-proyecto] .appspot.com/api/auth/callback/google (y una URL similar para cualquier dominio personalizado). Si también desea utilizar la autenticación de Google cuando ejecuta la aplicación localmente, agregue también http://localhost:3000/api/auth/callback/google .
- Haga clic en CREAR y copie el ID de cliente y el secreto de cliente generados para utilizarlos en la configuración del activador de compilación a continuación.
Configurar la compilación
- Navegue hasta Cloud Build → Activadores y haga clic en CONECTAR REPOSITORIO .
- Seleccione la fuente GitHub (aplicación Cloud Build GitHub) y haga clic en CONTINUAR para autenticar la cuenta de GitHub donde bifurcó el repositorio (en una ventana emergente).
- Seleccione el repositorio bifurcado, marque la casilla debajo y haga clic en CONECTAR .
- Haga clic en CREAR UN DISPARADOR .
- Elige un nombre para tu construcción.
- En Configuración , seleccione el archivo de configuración de Cloud Build (yaml o json) .
- Para una configuración mínima, deberá agregar las siguientes variables de sustitución a su activador de compilación (en la sección Avanzado ) haciendo clic en AGREGAR VARIABLE :
- _ENCRYPTION_KEY : cadena aleatoria de 64 dígitos hexadecimales .
- _NEXTAUTH_SECRET : cadena aleatoria de al menos 32 caracteres.
- _NEXTAUTH_URL : URL pública para su instancia, ya sea un dominio personalizado si tiene uno o https:// [nombre-proyecto] .appspot.com .
- _GCLOUD_STORAGE_BUCKET : el nombre del depósito de Cloud Storage al que permitiste el acceso público, por ejemplo, [nombre-proyecto] .appspot.com .
- _NOREPLY_EMAIL_USER y _NOREPLY_EMAIL_PASSWORD : cuenta de Gmail que se utilizará para correos electrónicos transaccionales salientes. Puede ser una cuenta dedicada en su Google Workspace (con contraseña normal) o una cuenta de Gmail separada (con contraseña de la aplicación). Consulte las instrucciones a continuación si necesita utilizar otro proveedor de correo electrónico.
- Si configuró la autenticación de Google anteriormente, también debe agregar las siguientes variables:
- _GOOGLE_CLIENT_ID y _GOOGLE_CLIENT_SECRET : los valores que copió anteriormente después de generar las credenciales de OAuth.
- En Cuenta de servicio , seleccione la cuenta de servicio que creó anteriormente.
- Haga clic en CREAR .
- Haga clic en EJECUTAR junto al activador recién creado y luego haga clic en EJECUTAR DISPARADOR.
- Seleccione Historial en la barra lateral y espere hasta verificar que la compilación se complete correctamente (puede tardar entre 10 y 15 minutos).
Inicialice su entorno PlayFetch
- Elija una dirección de correo electrónico que se utilizará como inicio de sesión para el usuario administrador inicial.
- Abra un navegador y navegue hasta https:// [nombre-proyecto] .appspot.com/api/admin/init?admin= [[email protected]] (asegúrese de especificar la dirección de correo electrónico correcta en la consulta).
- Este punto final ejecutará un script para inicializar el almacén de datos (lo que puede tardar un minuto), pero solo podrá ejecutarlo una vez (a menos que vuelva a crear el almacén de datos).
- Una vez que se complete el script, copie los valores de _PLAYFETCH_API_KEY y _PLAYFETCH_ENDPOINT_URL que se muestran en la respuesta.
- Navegue a Cloud Build → Desencadenadores , haga clic en el desencadenador que creó, agregue las dos variables de sustitución adicionales del paso anterior y haga clic en GUARDAR .
- Ejecute su activador de compilación nuevamente con las variables agregadas. Es posible que esta compilación necesite generar índices de almacén de datos faltantes, por lo que es mejor esperar hasta que se complete nuevamente.
Ahora debería poder navegar a https:// [nombre-proyecto] .appspot.com e iniciar sesión con la dirección de correo electrónico que especificó para su primer usuario administrador. Puede utilizar la autenticación de Google (si está configurada) o enlaces de correo electrónico (siempre que las variables _NOREPLY_EMAIL estén configuradas correctamente). Se puede otorgar acceso a usuarios adicionales en el panel de administración.
Ejecutando PlayFetch localmente
Si desea contribuir con PlayFetch o depurar problemas, puede seguir las instrucciones a continuación para que se ejecute en su máquina local.
Instalar nodo y npm
La forma más sencilla de instalar la última versión de node y npm es ejecutar el instalador más reciente.
Clonar el repositorio
Abra con GitHub Desktop y clone en un directorio local o conéctese a GitHub con SSH y ejecute git clone [email protected]:yello-xyz/playfetch.git
. Si ya bifurcaste el repositorio, puedes clonarlo en su lugar.
Configurar el entorno
Para ejecutar la aplicación localmente, deberá agregar algunas de las mismas variables a su archivo .env.local local (el control de fuente ignora este archivo para evitar la filtración de claves). Estos pueden ser los mismos valores que especificó en el activador de compilación de Google Cloud para su instancia de desarrollo (suponiendo que esté ejecutando una instancia separada para producción ya que no quiere correr el riesgo de filtrar esas claves), excepto _NEXTAUTH_URL donde debe especificar el valor http://localhost:3000.
Puede acceder al almacén de datos en Google Cloud desde su máquina local (nuevamente suponiendo que está ejecutando una instancia de desarrollo separada para no corromper o filtrar datos de producción accidentalmente) instalando la CLI de Google Cloud e inicializándola como se explica aquí (puede omitir los otros pasos). Ejecute los siguientes comandos para iniciar sesión con su cuenta de Google:
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
Construir y ejecutar
Ahora debería poder ejecutar los siguientes comandos:
-
npm install
-
npm run build
-
npm run start
Alternativamente, durante el desarrollo, puede ejecutar el siguiente comando para ejecutar una compilación de depuración con actualización rápida:
npm run dev
Para ejecutar todas las pruebas una vez:
npm run test
Para observar los cambios y volver a ejecutar automáticamente los conjuntos de pruebas relevantes:
npm run watch
Características opcionales
Para ampliar la configuración mínima, puede configurar las siguientes variables de entorno (ya sea en su activador de compilación de GCP o en su archivo .env.local local) para habilitar algunas funciones adicionales.
Integraciones
- _GITHUB_CLIENT_ID , _GITHUB_CLIENT_SECRET : se puede utilizar para configurar la autenticación GitHub OAuth (similar a Google). Requiere configurar una aplicación GitHub OAuth.
- _GITHUB_APP_CLIENT_ID , _GITHUB_APP_CLIENT_SECRET , _GITHUB_APP_ID , _GITHUB_APP_PRIVATE_KEY , _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK : se puede utilizar para configurar la integración del control de fuente. Requiere configurar una aplicación GitHub.
- _LINEAR_APP_CLIENT_ID , _LINEAR_APP_CLIENT_SECRET , _LINEAR_APP_WEBHOOK_SECRET : se puede utilizar para configurar la integración de la gestión de tareas. También requiere configurar una aplicación Linear.
- _NOTION_TOKEN, _NOTION_ONBOARDING_PAGE_ID, _NOTION_WAITLIST_PAGE_ID : se puede utilizar para sincronizar automáticamente las inscripciones en la lista de espera y las respuestas de la encuesta de incorporación a Notion. Requiere configurar una aplicación Notion.
Analítica
- _GOOGLE_ANALYTICS_API_SECRET , _GOOGLE_ANALYTICS_MEASUREMENT_ID : se puede utilizar para configurar análisis del lado del servidor (GA4).
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID , _NEXT_PUBLIC_COOKIE_DOMAIN , _NEXT_PUBLIC_COOKIE_NAME : se puede utilizar para configurar cookies y análisis del lado del cliente (Google Tag Manager).
Ambiente
- _GOOGLE_ANALYTICS_DASHBOARD_URL , _GOOGLE_ANALYTICS_REPORTS_URL , _GOOGLE_SEARCH_CONSOLE_URL , _INTEGRATION_TEST_URL , _SERVER_LOGS_URL : se pueden utilizar para agregar varios enlaces de diagnóstico en el panel de administración.
- _NEXT_PUBLIC_DOCS_URL , _NEXT_PUBLIC_SUPPORT_EMAIL : se puede utilizar para generar enlaces a documentación y soporte en el espacio de trabajo y las barras laterales del proyecto.
- _NOREPLY_EMAIL_HOST , _NOREPLY_EMAIL_PORT : se puede utilizar para configurar un proveedor de correo electrónico alternativo para correos electrónicos transaccionales salientes.
- _API_URL : se puede utilizar para dividir el tráfico entre el sitio web y la API, por ejemplo, si tiene subdominios separados que apuntan a su instancia.
Licencia
PlayFetch es de código abierto bajo una licencia permisiva del MIT.
Tenga en cuenta que PlayFetch utiliza CodeMirror como dependencia. Si utiliza CodeMirror comercialmente, existe una expectativa social (pero no legal) de que ayude a financiar su mantenimiento.
Contribuyendo
PlayFetch se está desarrollando en GitHub. Las contribuciones son bienvenidas. Siéntase libre de abrir problemas o abrir solicitudes de extracción al corregir errores o agregar funciones. Para comenzar, puede encontrar algo de inspiración en TODO.md.