Sección Blog technologique

Sistema RAG y TxtAi Parte 3: Casos prácticos

Escrito por gbourdin el 22/01/2024
Categorías :   Inteligencia Artificial
Etiquetas :   AI, Inteligencia Artificial
En la primera parte, abordamos cómo dialogar con un modelo para obtener un diálogo basado en información sobre la cual no ha sido entrenado. En nuestra segunda parte, examinamos la estrategia para crear nuestros índices y almacenarlos. En esta última parte, abordaremos, a través de un caso práctico, cómo crear un sistema RAG completo e iniciar un diálogo para dar a los usuarios la posibilidad de conversar con nuestro modelo enri...

Sistema RAG y TxtAi Parte 2: Bases de Datos e Indexación Vectorial

Escrito por gbourdin el 22/01/2024
Categorías :   Inteligencia Artificial
Etiquetas :   AI, Inteligencia Artificial
En la primera parte, abordamos cómo interactuar con un modelo para obtener un diálogo basado en información sobre la cual no ha sido entrenado. Para resumir, añadimos al contexto la información deseada. Pero, ¿qué sucede si quisieras usar una base de conocimientos completa? Eso sería demasiada información para agregar al contexto. Por ello, necesitamos poner en una base de datos toda la información que deseamos proporcion...

Sistema RAG y TxtAi Parte 1: Transformando la Generación de Lenguaje con Inteligencia

Escrito por gbourdin el 08/12/2023
Categorías :   Inteligencia Artificial
Etiquetas :   AI, Inteligencia Artificial
Para esta primera parte de nuestra serie de artículos, vamos a basar nuestra exploración en este tutorial para implementar un proceso RAG. Pero, ¿qué es un RAG? RAG, o "Generación Aumentada por Recuperación" (por sus siglas en inglés, "Retrieval-Augmented Generation"), es una técnica avanzada en inteligencia artificial, específicamente en el campo del procesamiento de lenguaje natural (NLP), que implica enriquecer el proceso de ...

Llama.cpp le LLM a su alcance

Escrito por gbourdin el 05/12/2023
Categorías :   Inteligencia Artificial
Etiquetas :   AI, Inteligencia Artificial
Llama CPP es una nueva herramienta diseñada para ejecutar modelos de lenguaje directamente en C/C++. Esta herramienta está especialmente optimizada para procesadores Apple Silicon gracias al uso de la tecnología ARM NEON y del framework Accelerate. También ofrece compatibilidad AVX2 para sistemas basados en arquitecturas x86. Funcionando principalmente en la CPU, Llama CPP también incorpora la capacidad de cuantificación de 4 bits, aumentando as&iac...

Introducción a txtai: Simplificación y Potencia de los LLMs para Desarrolladores

Escrito por admin el 05/12/2023
En el universo en constante evolución de la inteligencia artificial y el procesamiento del lenguaje natural, txtai surge como una herramienta revolucionaria, especialmente para aquellos que se sumergen en el mundo de los modelos de lenguaje de gran escala (LLMs). Imagina un puente entre tú y una gama de potentes LLMs, donde txtai juega el papel de intermediario facilitando, simplificando y amplificando tus interacciones con estas tecnologías complejas. Conectividad Ampl...

Página Sonata 5: Agregando etiquetas Open Graph con SonataPage y SonataMediaSonata

Escrito por el 02/10/2023
Categorías :   symfony, Sonata
Si ya has utilizado SonataPage y SonataMedia, sabes lo poderosos que son para gestionar contenido y medios en tu sitio. En este artículo, voy a mostrarte cómo extender estas herramientas para añadir fácilmente etiquetas Open Graph a tus páginas para mejorar su compartición en redes sociales. ¿Por qué las etiquetas Open Graph? Las etiquetas Open Graph (OG) son meta-etiquetas que puedes agregar a tus páginas para definir títulos, descripciones, imágenes y otra información que se utilizará cuand...

Sonata Página 5: Ocultar bloques dentro de bloques compartidos.

Escrito por el 30/09/2023
Categorías :   symfony
Si estás usando el paquete SonataPage, podrías haber notado que algunos de los bloques ofrecidos son innecesarios o no funcionales.Hablaremos sobre cómo ocultar estos bloques de la lista de forma limpia, con un archivo de configuración y sobrescribiendo las plantillas de administración de SonataPage. 1 – La Configuración Necesitamos crear una lista de servicios que no queremos mostrar. Esta lista irá naturalmente en los parámetros de nuestro archivo de servicios: #co...

Sonata: Añadir un Panel de Administración sin una Entidad con Sonata Admin 5 y Symfony 6.2

Escrito por el 06/06/2023
Categorías :   symfony, Sonata
En este artículo, aprenderemos a agregar un panel de administración sin entidades en un proyecto Symfony 6.2 usando Sonata Admin 5. Nuestra base de proyecto será crear una interfaz simple de carga de archivos. Pero podrías hacer cualquier aplicación. Incluso añadir texto simple. 1. Instalando Sonata Admin Bundle Si aún no has instalado Sonata Admin, puedes hacerlo con composer: composer require sonata-project/admin-bundle Te invitamos a navegar en nuestro sitio para instalar Sonata Admi...

Cómo crear un transporte de correo electrónico personalizado con Symfony Mailer

Escrito por el 19/05/2023
Categorías :   PHP, symfony
Hoy, vamos a ver cómo crear un transporte de correo electrónico personalizado con Symfony Mailer. Para el ejemplo, crearemos un transporte llamado “pt”. Prerrequisitos Antes de comenzar, asegúrate de haber instalado y configurado Symfony Mailer y HttpClient en tu proyecto. Puedes añadirlos a tu proyecto utilizando los siguientes comandos: composer require symfony/mailer composer require symfony/http-client Creando la Clase de Transporte Lo primero que debemos hacer es crear...

PHP FFI: Creando un enlace con una biblioteca, QuickJS – Parte 5

Escrito por el 24/01/2023
Categorías :   PHP, PHP / FFI
Para concluir este mini archivo técnico sobre la interfaz de funciones foráneas de PHP, me propuse simplemente conectarme a una librería. Un tipo de desafío que podría al mismo tiempo ayudarme a progresar en el tema. Así que tuve que idear una idea de proyecto. Algo no demasiado pequeño o simple pero tampoco demasiado grande. Fallé, encontré una idea pero resulta ser mucho más compleja de lo que imaginé. No importa, aun así lo intenté. Así que para nuestro artículo, pensé que intent...

Symfony: Forzar a una entidad a utilizar una conexión de base de datos diferente a la configurada por defecto

Escrito por admin el 19/01/2023
Categorías :   PHP, symfony
No es raro tener múltiples bases de datos para un solo proyecto. Normalmente, cuando se usan dos bases de datos, las entidades pueden organizarse en directorios específicos que se declaran en tu configuración. En este caso, el sistema utilizará la conexión configurada para el directorio de la entidad. Puedes ver un ejemplo de múltiples conexiones aquí Symfony 4 / Sonata: gestionando una interfaz de administración multi-servidor Supongamos que querem...

Usa composer y bin/console de tu imagen Docker directamente en PHPSTORM

Escrito por el 19/01/2023
Categorías :   PHP, symfony, phpstorm, Divers
Está bien, eres como yo. Tu máquina no tiene nada instalado localmente. ¡Ni siquiera composer ni PHP en CLI!Aunque uses PHP y quizás incluso Symfony (o no), necesitas utilizar composer diariamente. Usas PhpStorm todos los días y piensas que es una lástima no aprovechar todas las opciones de tu IDE, especialmente todo lo relacionado con composer y la consola de Symfony. Entonces, ¿cómo configuras PhpStorm para especificar que el composer de tu proyecto se encuentra en la imagen de docker?Aquí ...

Acciones Personalizadas de Sonata

Escrito por el 19/01/2023
Categorías :   PHP, symfony, Sonata
Siguiendo el artículo escrito por Thomas Bourdin SYMFONY / SONATA: AÑADIENDO UNA FUNCIÓN DE CLONACIÓN A UN CRUD, vamos a mostrar cómo, de manera muy simple, podemos añadir acciones personalizadas a una interfaz. En el Tablero: Pero también vamos a ver cómo personalizar de manera simples y genérica las acciones personalizadas del listado, el encabezado de su CRUD y finalmente cómo añadir acciones para el procesamiento por lotes. Para mi ejemplo, comencé con una tabla muy simple llamada...

Depurar con PhpStorm y Symfony en una imagen de Docker

Escrito por el 19/01/2023
Categorías :   PHP, PHP / FFI, symfony, phpstorm
Configuración de PHP/Docker Si estás desarrollando con Symfony, instalado en un docker compose y aún no utilizas el depurador, entonces este artículo es para ti. Vamos a mostrarte cómo preparar tu entorno para que ya no tengas que hacer dd() o var_dump. Una vez que hayas experimentado las alegrías de depurar, no podrás prescindir de ello, ya que aumentará enormemente tu comodidad. Para este artículo necesitas tener una aplicación Symfony alimentada por apache/php (o nginx y fpm, no importa) ...

Crea una biblioteca con composer

Escrito por el 04/01/2023
Categorías :   PHP, Divers
¿Qué es Composer? Así como NPM es para JavaScript, Composer es la herramienta dedicada para PHP que te permite gestionar las dependencias de librerías para tus aplicaciones. Si has utilizado un framework como Symfony, definitivamente lo has usado. En realidad, todo desarrollador de PHP lo usa a diario. Si estás en esta página, probablemente te estés preguntando cómo crear una librería que pueda ser fácilmente redistribuida y compartida con la comunidad. Eso es lo que intentaré mostrarte. Para...

Configuración de 'Herramientas de Calidad' en una Imagen de Docker en PHPSTORM

Escrito por el 15/12/2022
Categorías :   PHP, symfony, phpstorm
Aquí hay una pregunta que recientemente consideré. Normalmente, instalo herramientas de control de calidad (QA) directamente en mi máquina anfitriona o en la imagen de Docker. Si las herramientas están instaladas en mi máquina anfitriona, no hay problema en configurar PhpStorm. Si las herramientas están directamente configuradas en la imagen de Docker, tampoco hay problema en usarlas dentro de la imagen. Sin embargo, ¿cómo se puede combinar el poder de PhpStorm y Docker para vincular los dos?...

Configurar Exim para enviar correos electrónicos con Gmail

Escrito por el 12/12/2022
Veremos cómo configurar Exim4 para enviar correos electrónicos del sistema con Gmail. Esto garantizará que tus correos enviados con tu CRON sean correctamente encaminados y no terminen en spam.Instalemos Exim4 apt-get install exim4 Configuración dpkg-reconfigure exim4-config Elige: correo enviado por intermediario (smarthost); sin correo local Luego responde las preguntas de la siguiente manera: System mail name: YOUR_HOSTNAME IP-addresses to listen on for incoming ...

Sonata DataMapper y Autowiring

Escrito por el 08/12/2022
Categorías :   PHP, symfony, Sonata
Si tienes una necesidad específica de transformar datos entre el formulario y el registro de tu entidad y piensas que este código de transformación debería ubicarse en un servicio porque tiene más sentido, puedes utilizar el dataMapper utilizando la inyección de dependencias proporcionada por Symfony. ¿Pero cómo implementarlo?Un pequeño recordatorio sobre el DataMapper. Si estamos de acuerdo con la documentación oficial de Symfony respecto a DataMapper y DataTransformer, un dataMapper tiene l...

SF6 / Sonata 5: Gestionando una interfaz OneToMany en un CRUD con el CollectionType de Sonata

Escrito por el 27/11/2022
Categorías :   PHP, symfony, Sonata
Etiquetas :   sonata, symfony, admin
En este ejemplo, tomaremos el caso concreto de una interfaz simple que incluye múltiples elementos. Hemos elegido usar una tabla de "Proyectos" en la que asignaremos documentos. Por lo tanto, para un proyecto, podemos asignar varios documentos. Y para facilitar la administración, nos aseguraremos de que podamos gestionar nuestra interfaz anidada directamente dentro de la vista de edición de nuestro proyecto.Necesitamos crear el esquema. En primer lugar, importamos nuestro esquema actual en My...

PHP FFI: Usando una Biblioteca Multiplataforma Kotlin – Parte 4

Escrito por el 11/11/2022
Categorías :   PHP, PHP / FFI
Con Stéphane Péchard https://www.linkedin.com/in/stephanepechard/, experto en Android y gurú de KMP, nos preguntamos si sería factible desarrollar un algoritmo bajo KMP y ejecutarlo directamente en PHP. Las especificaciones eran simples: el desarrollador de Android (Stéphane) me proporciona un archivo de cabecera, un archivo .so y yo me encargo de él. Con el archivo de cabecera, el contrato, deberíamos poder idear algo... Así que logramos hacer nuestra llamada a la función...

PHP FFI: Callback - Parte 3

Escrito por el 11/11/2022
Categorías :   PHP, PHP / FFI
El CallbackDurante la preparación de este artículo, noté que muchos recursos en internet usan directamente el libc para sus ejemplos. Puedes encontrar fácilmente ejemplos bastante demostrativos y sencillos. Pero para hacer algo genial y original, pensé "vamos a encontrar algo para mostrar con este libc también". Después de todo… si solo es pasar una estructura como la mayoría de los ejemplos, no será útil. Y luego encontré una función en un foro donde la g...

PHP FFI: Pasando Parámetros – Parte 2

Escrito por el 11/11/2022
Categorías :   PHP, PHP / FFI
¿Llamando directamente a la biblioteca de PHP?¿Qué tal si nos divertimos escribiendo un fragmento de código que es inútil? ¡Vamos! ¡Vamos! ¡Vamos!Está bien, de acuerdo. Propongo que hagamos algo inútil utilizando PHP para llamar a una biblioteca de C que usa el Zend Engine.De hecho, este párrafo no es tan inútil como parece. Su propósito es mostrarte un comportamiento particular 😊PHP-FFI tiene algunas limitaciones: no puedes pasar una variable de PHP directamente para recuperar su valor dinám...

PHP FFI: Introducción – Parte 1

Escrito por el 11/11/2022
Categorías :   PHP, PHP / FFI
IntroducciónDesde la versión 7.4 de PHP, finalmente tenemos acceso a funciones de interoperabilidad entre diferentes lenguajes y PHP: FFI o Interfaz de Función Externa.¿Qué es FFI? Es simplemente la capacidad de utilizar una biblioteca externa (.dll o .so) directamente en PHP, sin tener que crear una extensión de PHP. ¡Sí, con solo un script de PHP! Es, entre otras cosas, lo que ha hecho que Python sea tan famoso y le haya permitido tener tantas características.Lo grandioso de FFI es que un ...

Symfony 6 / Sonata 5: Instalando SonataClassification.

Escrito por el 14/03/2022
Categorías :   PHP, symfony, Sonata
Hemos visto en artículos anteriores cómo inicializar un proyecto Symfony 6 + Sonata 5 con multimedia y usuarios en un admin seguro. Luego, analizamos cómo gestionar las localizaciones de usuarios.Ahora veremos cómo instalar y gestionar clasificaciones. Procedemos con la instalación de la última versión hasta la fecha. php8.1 composer.phar require sonata-project/classification-bundle:5.x-dev Al parecer, tenemos un error de configuración. Unrecognized option "media" under "sonata_clas...

Symfony 6 / Sonata 5: Vincular las configuraciones regionales y la zona horaria a las preferencias del usuario.

Escrito por el 10/03/2022
Categorías :   PHP, symfony, Sonata
En un artículo anterior vimos cómo instalar Symfony 6 + Sonata Admin 5 con gestión de usuarios y medios. Continuaremos con esta instalación con la configuración de idiomas y zonas horarias. Instalaremos intlBundle que permite gestionar la visualización localizada. php8.1 composer.phar require sonata-project/intl-bundle Aprovechamos esta oportunidad para agregar un campo de zona horaria y localidad al usuario.Para hacer esto, extenderemos userBundle y agregaremos un campo en el admin. Ex...