Transcripciones
1. INTRODUCCIÓN: Hola, y bienvenidos a este curso, construyendo un
agente de IA con Open AI, índice
Lama,
cono de pino y streamlt Yo soy el Vidar
Mendais y seré el instructor de este curso.
¿Quién soy yo? Tengo una licenciatura en matemáticas,
una maestría
en
ciencia de datos y analítica, con enfoque en LMS Soy un ingeniero de
software apestoso con más de seis
años de experiencia Tengo certificación AW, certificación Ashur y soy un entusiasta de la ciberseguridad ¿Qué vamos a
hacer en este curso? Crearemos un agente
LLM basado en OpenAI GPT 40 El propósito del agente será
encontrar y resumir trabajos de
investigación desde la plataforma de archivo
y utilizaremos el marco del índice Lama para aumentar la base de
conocimiento del ¿Qué vamos a
aprender en este curso? Va a aprender
conceptos básicos de IA como incrustaciones vectoriales, índices
vectoriales, recuperación de
generación aumentada o RAC, plantillas de
Crum, agentes de reacción,
cómo optimizar las instrucciones de los agentes, bases de datos
vectoriales, índice
Lama para
aumentar el conocimiento, necesidad de
flujo para construir
una interfaz de usuario e implementarla, y las mejores prácticas de ingeniería de Python
y software y ¿Qué herramientas vamos a utilizar? El agente utilizará tres herramientas, un motor de consulta de rack
para obtener información de
una base de conocimiento, una herramienta de búsqueda de trabajos de
investigación para investigar o encontrar información
sobre artículos que no
tenemos en nuestra
base de conocimiento y una descarga en PDF si
desea descargar documentos
directamente en su Espero que les guste
este curso porque disfruté mucho construyéndolo. Espero poder verte en
la siguiente lección. Adiós.
2. Configurar el entorno de desarrollo: Hola y bienvenidos de nuevo.
En esta lección, vamos a configurar el entorno de
desarrollo. Algunas cosas que hay que
tener en cuenta. Vamos a usar
código VS como editor de código. Vamos a crear
un GidHubrpo para compartir el resultado final contigo
y vamos a usar PDM, que significa Python Dependencias Manager
para gestionar las dependencias
del proyecto Python para gestionar las dependencias
del proyecto También vamos a necesitar una clave API de IA abierta
para usar sus modelos. Entonces, ¿cuáles son las dependencias que vamos a
tener en este proyecto Vamos a tener Archive, que es una biblioteca para descargar los papeles de la plataforma de
archivo, python punto F para gestionar las variables de
entorno. En este caso, vamos
a tener la clave API OpenAI. Queremos que eso sea un secreto, así que por eso
vamos a usar Python Mv. Vamos a usar Notebook
porque vamos a usar Jupiter Notebook y
también vamos a instalar
el Lemma Index,
que es el framework
para ayudar a construir aplicaciones LLM Entonces esta es la
parte aburrida del curso, pero tenemos que hacerlo. Vamos a github.com, y esta es mi Vas a tu cuenta de GitHub. Si no tienes uno,
puedes crear uno, y vamos a
crear un nuevo repositorio. Entonces el nombre del repositorio, voy a llamarlo Investigador de
archivo. Puedes llamarlo como
quieras. Vamos a hacerlo público que
pueda compartir el resultado
final con ustedes. Vamos a agregar un GID
Ignore para un proyecto Python. Licencia, no y estas son
solo apps que tengo. Probablemente si
no tienes ninguna aplicación, esto no se va
a mostrar para ti, sino simplemente haz clic en
Crear Repositor Se crea un nuevo repositorio
para mí. Voy a abrir una terminal, y voy a dar
click aquí en código, y voy a copiar esta SSH Si no tienes una clave SSH, configura en
tu cuenta de Gita, entonces deberías usar HTTPS, pero SSH es la forma
recomendada de hacerlo Voy a copiar esto.Ve a la terminal y di git
clone, y pega Entonces ahora tengo ese repositorio en mi máquina local y
voy a abrir el código VS aquí Como pueden ver,
tenemos el GTI ni, que es lo mismo
que tengo aquí Si abro ese GTI ni, vas a encontrar
muchas cosas que suelen ser ignoradas
en un proyecto Python Entonces vamos a usar administrador de dependencias de
Python cuando inicialicemos un
proyecto con PDM, estas son las cosas que van a ser
ignoradas Vamos a
buscar PVM PVM Python. Entonces la URL es pdmpject.org. Si hago clic aquí, voy
a ver el sitio web de PDM. PDM, como se describe, es un paquete de iPhone moderno
y administrador de dependencias soporta los últimos estándares
PEP Pero es más que
un gestor de paquetes. Impulso su
flujo de trabajo de desarrollo en diversos aspectos. El propósito principal de PDM es la
resolución de dependencias, básicamente Porque cuando
instalas paquetes, esos paquetes pueden
depender de subpaquetes. Por lo tanto, los paquetes deben acordar qué versiones de
subpaquetes tiene que instalar. Esa es básicamente la idea de resolución de dependencias PDM es una gran herramienta para gestionar eso Entonces, ¿cómo se instala esto? Antes que nada, necesitas Python 3.9 o posterior para ser instalado. Funciona en múltiples plataformas, incluyendo Windows,
Linux y macOS. Como habrás notado, estoy usando macOS. Otra cosa que hace PDM es que puede administrar
múltiples versiones de Python Entonces, por ejemplo, si quiero usar Python 3.10 o 3.11 o 3.12, puedo Vamos a ver cómo
hacerlo en un momento. Pero quiero que vayas a la documentación y sigas los pasos para el método de
instalación recomendado. Dice como PIP, PDM proporciona un
script de instalación que
instalará PDM en un Para Linux y Mac, solo
tienes que copiar este comando y
pegarlo en tu terminal. En Windows, puedes
hacerlo con PowerShell. Pero si estás en Windows, recomiendo encarecidamente que
uses el Subsistema Windows para Linux, que tengas un entorno
Linux dentro de tu máquina Windows. Si no quieres hacer eso, si no estás familiarizado con el subsistema de
Windows para Linux, entonces puedes instalar
PDM con PowerShell Bien. Entonces después de hacer eso, deberías tener PDM
en tu máquina También hay instrucciones
si quieres desinstalar PDM,
pero voy a decir que guárdalo. Es una gran herramienta. Entonces si voy a mi
terminal y escribo PDM, me hago esto más grande Vas a ver que
esto tiene muchas opciones. PDM ad es uno de los comandos
que vamos a usar, y esto es para agregar paquetes a un archivo llamado
Piroject punto Esto es similar al paquete Jason si vienes
del mundo de No JS. PDM, otro comando que vamos a usar es PDM en él, y es para inicializar
un proyecto Pipe que
Tumel para un proyecto Pipe que
Tumel Otro comando que
vamos a usar que podemos
usar es PDM Python, y eso es para administrar
las múltiples versiones de Python que
te estaba diciendo hace algún tiempo Entonces veamos, otro comando que es muy
importante es PDM remove, que se utiliza para eliminar paquetes del proyecto
Pi hasta TamelFle ¿Bien? Entonces veamos qué
pasa si escribo PDM Python Entonces, si escribo PDM Python, tendré
subcomandos adicionales El primero es list, y es para listar todos los intérpretes Python
instalados con PDM Si escribo PDM Python list, verás que tengo
estas cuatro versiones de Python instaladas en mi máquina 3.12 0.2, 3.11 0.5,
3.13 0.0, y 3.11 Ahora supongamos que quiero instalar
una nueva versión de Python, puedo escribir PVM Python install debo especificar la versión de Python
que quiero instalar Si escribo PDM Python
Install Help, entonces vas a ver
que tengo esta bandera de lista Déjame escribir esa lista de instalación de
Python de PBM y vas a ver todas las versiones de Python
que están disponibles Si solo escribo PDM Python
Install como hice aquí, va a instalar
la última versión que es Python 3.13 0.0 Pero supongamos que quiero
instalar Python 3.12 0.7. Vamos a usar
esa versión de Python en este proyecto
y solo hacemos PDM Python Install y no
tienes que escribir toda
la app C Python Simplemente tecleas 3.12 0.7 y
eso debería ser suficiente. Por lo que descargará esa versión
de Python e la instalará y guardará el ejecutable
en esta carpeta aquí. Ahora estamos listos para
inicializar un proyecto PDM. Volvamos al código VS y vamos a teclearlo en
el terminal PDM. Ahora bien, si hago esto
un poco más grande, va a apuntalarme para elegir la versión de Python para
usar en este proyecto. Voy a usar 3.12 0.7. Esa es esta opción aquí. Voy a tener
la opción cuatro. Bien. Y eso
va a crear esta carpeta llamada VENV, que es el
entorno virtual Aquí es donde se
van a instalar todos los paquetes, y luego
me está preguntando ¿cuál va a
ser el nombre del proyecto? Sólo puedo escribir Enter varias veces para mantener aquí los valores
predeterminados. Bien. Por lo que crea un
proyecto Pi que voltea pila. Nuevamente, si vienes
del mundo NOJs, esto es similar a un archivo JSON de
paquete Aquí puedes ver que
tiene datos sobre el proyecto, la descripción del proyecto, los autores del proyecto, las dependencias, qué versión de Python
requiere, etcétera Lo que vamos
a hacer ahora mismo es instalar las dependencias que vamos a necesitar
para este producto Para eso, voy a
decir PDM en Archive,
index, typon dot y Si escribo Enter, puedes ver que se está
resolviendo para el entorno. Se está resolviendo todos esos sub paquetes que
van a ser instalados. Y esto puede llevar un tiempo. Mientras tanto,
quiero que se den cuenta en este archivo PDM Python Esto solo es decir
que el
ejecutable de Python para este proyecto
está dentro de este archivo VENB Se puede ver que esto es muy
específico para mi máquina. Por eso está en el GTI no. Cuando seleccionaste esa
Python, GTI ni plantilla, ya tiene este
archivo en la plantilla, por lo que ya se ignora Bien. Ahora veamos
aquí qué está pasando. Ha pasado 1 minuto y todavía se está resolviendo
para los paquetes. Ahora, hizo toda la resolución de
dependencia. Resolvió 149 paquetes. Eso es mucho porque acabamos instalar cuatro de
estos paquetes. Pero estos cuatro
paquetes en total, utilizan
entre bastidores 149 paquetes. Entonces PDM es
lo suficientemente inteligente como para resolver todas
las versiones para que no
tengamos ningún
conflicto en las versiones Todo se
instaló correctamente, sin errores, y se creó este archivo de registro de
puntos pdm Nuevamente, si vienes
del mundo No JS, este es el paquete, el archivo de registro del paquete. Y esto contiene información sobre todas las dependencias, subdependencias
que se instalaron Lo último que
vamos a hacer, vamos a ver que vamos
a crear un archivo EMV punto Y este archivo EMB va
a contener nuestra API OpenAI. Vamos a empatar OpenAI ApiKey y aquí vamos a
pegar nuestro APK de OpenAI Una estrategia o una
mejor práctica es tener un archivo ATnbteample Entonces este ejemplo de EMB no
va a estar en el GitKnt se puede comprometer de manera segura con el
repositorio Simplemente ponemos la
misma información que tenemos en el archivo EMV, pero sin los valores Aquí aún no teníamos
el valor. Aquí nunca
tendremos el valor. Esa es una buena práctica
para que cualquiera que clone el repositorio sepa que, oye, tengo que tener
un rey de API Open AI Eso es todo para esta lección. Espero que les guste y nos veamos
en la siguiente lección. H
3. Obtén una clave de API de OpenAI: Hola y bienvenidos de nuevo.
Antes de que lo olvidemos, obtengamos una clave API de Open AI. Vaya a open.com, vaya a
productos y vaya a API Login. Cambian esto todo el tiempo. Si no tienes
una cuenta Open AI, regístrate y si
tienes una, entonces inicia sesión. Voy a iniciar sesión con mi cuenta. Y ve al tablero de instrumentos. Y ve a Claves API. En primer lugar, hay que
tener habilitada la facturación. Así que ve a ajustes, ve a facturación en el método de
pago aquí, y puedes poner $5. Creo que es lo mínimo. Así que no te olvides de hacer eso. Volvamos a Dashboard, claves
API, y vamos a
crear una nueva clave secreta. Entonces esto se va a llamar
Archive y el proyecto, puedes alcanzarle estas claves
API a los proyectos. No voy a alcanzarlo para un producto específico porque no
tengo ningún proyecto. Entonces voy a usar un
proyecto por defecto , y los permisos, puedes ser muy estricto
y elegir lo que quieras, por ejemplo, solo
para modelos, para audio, para
terminaciones de chat, para incrustaciones No me voy a
complicar. Sólo voy a decir, Oh, voy a crear
la clave secreta y esta va a
ser mi clave secreta. Obviamente,
voy a borrarlo después de terminar de
construir este curso. Nosotros ahora voy a copiarlo. Voy a volver al código Vs
y en el archivo punto EMV, sólo
voy a pegar eso Esa es la clave API que voy
a usar antes de que nos olvidemos, hagamos un cómic. Vamos a teclear kit, tenerlo todo. Git commit y
vamos a decir un proyecto inicializado con
PDM y agrega dependencias Entonces podemos empujar
estas cadenas. Bien. Ahora bien, si vamos a
Github y
actualizamos, vamos a ver que el archivo
DotNB no está comprometido Elejemplo B está comprometido, pero eso no tiene nada. Entonces eso es seguro. De lo contrario, la gente verá tu clave API y
eso va a ser malo. Bien, así que eso es todo
para esta lección. Espero que les guste y nos veamos
en la siguiente lección.
4. Comprender LlamaIndex y RAG: Hola y bienvenidos de nuevo.
Entonces, ¿qué es el índice Lama En primer lugar, ¿cuál es
el problema con LMS? Son geniales, pero están pre capacitados en grandes cantidades de datos disponibles
públicamente. ¿Cómo aumentamos mejor el LMS
con nuestros propios datos privados? Ahí es donde entra el
índice de Lama. Necesitamos un conjunto de
herramientas completo para ayudar a realizar este
aumento de datos para LLM Entonces Lama Index ofrece
conectores de datos para ingerir sus fuentes de datos existentes
y formatos de datos como API,
PDF, perros, incluso También proporciona
formas de estructurar sus datos para que puedan
ser fácilmente utilizados con LMS Vamos a ver que
la forma más común de estructurar estos datos
es a través de un índice vectorial, y también proporciona una
interfaz de consulta de recuperación avanzada sobre sus datos. Puede encajar en cualquier mensaje de entrada
LM, recuperar el contexto y la salida aumentada de
conocimiento No podemos hablar de índice ama
sin hablar de RAC. ¿Qué es Rag? El trapo es una generación aumentada recuperable Este es un enfoque en el procesamiento
del lenguaje natural que combina la fuerza
de dos componentes rey. Recuperación de información,
que obtiene datos
relevantes de un baase de conocimiento
externo, base de datos o
repositorio de documentos, y generación de texto, que está utilizando un
modelo de lenguaje como OpenAIS, GPT cuatro Omni o
lo que sea para generar texto
humano basado en ¿Cómo funciona RAG? Primero, un usuario plantea una pregunta o consulta. Luego recuperamos documentos
relevantes de una
fuente externa y luego
generamos una respuesta usando un modelo de lenguaje que usa
la consulta del usuario, y el contexto de recuperación. Entonces, ¿por qué tenemos que usar RAG? Porque podemos tener acceso
a información actualizada,
permitiendo que los sistemas de IA
incorporen conocimiento
más allá de sus datos de entrenamiento. Mejora la precisión
bajo las respuestas porque ahora las respuestas
se basan en fuentes
verificadas y recuperables y podemos tener adaptabilidad de
dominio Podemos adaptar fácilmente
el sistema a industrias o temas
específicos vinculándonos a fases de
conocimiento especializado. Esto es rack en una imagen. El primer paso es recuperar
e ingerir estos documentos, pasarlos a través de
un modelo de incrustación y almacenar esas incrustaciones
en una El segundo paso es que el
usuario plantea una consulta. Entonces esta
consulta de usuario pasa por el mismo modelo de incrustación y luego vamos a buscar
en la base de datos vectoriales, contexto o pasajes o documentos que son muy similares a la consulta que el
usuario está planteando Cuando tengamos ese contexto, vamos a tener la consulta, el contexto, y algún prompt
que vamos a diseñar. Vamos a pasar toda
esta información al LLM, y el LLM va a
generar una respuesta, y esa respuesta
va volviendo al usuario Ese es Rag en pocas palabras. Espero que les guste este video. Nos vemos en la siguiente lección.
5. ¿Qué son los agentes?: Hola y bienvenidos de nuevo. Ahora
hablemos de agentes. ¿Qué es un agente? Un agente es un motor automatizado de
razonamiento y decisión. Toma una
entrada del usuario y puede tomar decisiones internas para ejecutar esa consulta con el fin de
devolver el resultado correcto. componentes del agente clave
pueden incluir, pero no se limitan a, desglosar una pregunta compleja
en preguntas más pequeñas, elegir una
herramienta externa para usar, además de idear parámetros
para llamar a esa herramienta, planificar un conjunto de tareas, almacenar tareas previamente
completadas, un módulo de memoria, etc. Por lo que los agentes comparten cinco bloques de construcción
fundamentales. Percepción, razonamiento,
memoria, planeación y acción. El primer
bloque de construcción es la percepción. percepción es la capacidad del
agente para recopilar información
sobre su entorno. Este objetivo implica
procesar consultas de texto, analizar datos de sensores,
interpretar imágenes o incluso leer tablas de
datos estructurados de una base de Cuanto más efectivamente pueda
percibir
un agente , más rico es el
contexto que puede entender Con una percepción más fuerte, los agentes pueden
adaptarse mejor a los cambios y responder con precisión a las condiciones
en evolución. Entonces tenemos razonamiento. razonamiento es donde
el agente le da sentido a
la información,
ha percibido. Esto implica
interpretar contextos, agitando diferentes opciones y formando conclusiones lógicas El razonamiento sustenta la inteligencia de un
agente. Garantiza que el agente
no solo reaccione ciegamente sino que evalúe escenarios para tomar decisiones informadas razonamiento avanzado a menudo
implica aprovechar modelos de lenguaje
grande u otros marcos de IA para comprender los matices
de una situación determinada Memoria, memoria es
la forma del agente de retener
información relevante a lo largo del tiempo. Esto puede incluir contexto a
corto plazo como la última solicitud del usuario
y conocimiento a largo plazo, como una base de datos de interacciones
pasadas o experiencia
general de la industria. La memoria le da al agente
una sensación de continuidad. En lugar de tratar
cada interacción como una interacción aislada, el agente puede construir sobre experiencias
previas, mejorando su precisión y conciencia del
contexto a medida que avanza. Entonces tenemos planeación.
La planeación es donde el agente decide qué pasos tomar
para lograr sus metas. Podría desglosar
tareas complejas en pasos más simples, secuenciarlas en
un orden óptimo y anticipar
posibles bloqueos de carreteras planificación asegura
que el agente no solo esté reaccionando a una
solicitud a la vez, sino trazando proactivamente un camino hacia objetivos a más largo plazo Esto es crucial para tareas como la
optimización de la cadena de suministro o gestión de
proyectos o
cualquier otro escenario donde las acciones tomadas ahora
tengan aplicaciones futuras. Tenemos acción. La acción es la ejecución real de
las decisiones del agente. Por ejemplo, enviar un correo electrónico, ajustar
los niveles de inventario, recomendar un producto o realizar una operación a nivel de
sistema Sin acción alguna, se desperdiciará
toda la percepción, memoria de
razonamiento y planeación en el mundo. acción cierra el bucle
y permite que el agente tenga un impacto tangible
en su entorno, entregando un resultado del mundo real. ¿Cómo trabajan juntos entonces? La percepción ajusta
al agente con datos. memoria almacena y recuerda información
útil
tanto del pasado inmediato
como lejano. razonamiento utiliza esos datos
y contexto para formar un plan, y el plan traza los
pasos necesarios para lograr los objetivos del agente y la acción ejecuta en esos pasos
creando valor medible Hay toneladas de casos de uso. Cualquier cosa puede ser un
agente hoy en día. Contamos con agentes de
ingeniería de software, agentes telefónicos de
IA,
agentes de ventas, agentes de investigación. Eso es lo que
vamos a hacer ahora mismo. Jefe de personal de IA que puede agilizar las operaciones diarias,
eso es una locura. Asistentes de investigación de venta,
agente contador de personal, mes y cierre asistente de IA Hay muchos casos de uso
que los agentes pueden tener hoy en día. ¿Cómo
funcionarán los agentes de IA en la práctica? Bueno, hay que
entrenar al agente de IA. Tienes que proporcionar
tu caso de uso, datos y libro de jugadas para adaptar las capacidades de
la IA a tus necesidades específicas Ingrese datos como
transcripciones, grabación de llamadas,
facturas, criterios de calificación y objetivos clave para
una adaptación precisa Después hay que configurar los flujos
de trabajo y
las integraciones. Tienes que alinear al agente de IA con tus
herramientas y procesos existentes. Por ejemplo,
configurar integraciones de SIMD
con CRM , calendarios y sistemas comerciales
mientras define acciones, alertas
y protocolos de escalación que coincidan con los requisitos de su
equipo Entonces hay que desplegar
y administrar las operaciones. Tienes que lanzar el agente de IA para manejar las operaciones de
forma autónoma, realizar un seguimiento de su rendimiento
a través de métricas en tiempo real, evaluar resultados y refinar procesos para lograr resultados
óptimos
6. Incrustaciones vectoriales: Hablemos de incrustaciones
vectoriales. Las incrustaciones vectoriales son
representaciones numéricas de datos. Los datos pueden ser texto, imágenes o audio en un espacio de alta
dimensión. Eso quiere decir que son vectores
con una dimensión fija. Cada dato se
convierte en un vector y captura su significado,
contexto o característica. Cómo funciona elementos similares se representan como vectores
más cercanos entre sí. Así es como habilitas
una comparación fácil. Por ejemplo, la palabra rey
y reina tendrá vectores que están muy juntos reflejando su similitud
semántica ¿Cómo se mide
esa similitud? Bueno, hay diferentes
métricas que puedes usar, como el producto punto o
la similitud de coseno ¿Qué son los índices vectoriales? Son estructuras de datos
que organizan estas incrustaciones vectoriales para una búsqueda y recuperación eficientes Permiten que los sistemas de IA encuentren
rápidamente los puntos de datos más
relevantes en función de medidas de
similitud como similitud de coseno
o producto de puntos, estas métricas de las que
estaba hablando Escupen
grandes conjuntos de datos queering y
permiten la recuperación escalable en tiempo
real
de información relevante Para generar estos
vectorumbeddings, necesitamos En este curso,
vamos a utilizar el texto incrustando tres grandes, que es un modelo avanzado de
incrustación desarrollado por Open AI Está diseñado para
transformar texto en representaciones vectoriales de
alta dimensión, capturando el significado
semántico de la entrada como
ya explicamos ¿Cuáles son las características clave
de este modelo de incrustación? Puede generar representaciones de alta
calidad. Produce incrustaciones que capturan de
manera efectiva el contexto, las relaciones y el
significado dentro del texto Es versátil,
es adecuado para una amplia gama de tareas como recuperación de información, búsqueda de
similitud
y agrupación, y la
dimensionalidad que pone vectores densos y de
alta dimensión
optimizados para tareas posteriores Espero que les guste esta
lección en la siguiente.
7. Crea una herramienta para recuperar papeles de arXiv: Entonces comencemos a codificar. En primer lugar, vamos
a crear una pila de herramientas. Desde el terminal, las herramientas
táctiles puntean PY. En este módulo, vamos
a utilizar la biblioteca Archivo. Entonces, si vamos a la documentación
de la biblioteca Archive, verás que Archive es solo un wrapper de Python
para la API de archivo. Entonces Archive ya tiene una
API y esta biblioteca es solo un wrapper para usar esa
API de una manera más sencilla. Entonces, ¿cómo lo
instala con PIP? Lo hicimos con PDM. Importamos Archivo.
Entonces hagámoslo. Archivo de importación. Y luego podemos obtener resultados
construyendo primero el cliente API
predeterminado Construyamos ese cliente. Entonces, por ejemplo,
podemos buscar los diez artículos más recientes que coincidan con la palabra clave quantum. Entonces solo buscamos eso y podemos iterar
sobre esos resultados Results es un generador, por lo que podemos iterar sobre
sus elementos uno por uno Y también hay una documentación de sintaxis de
consulta avanzada y nos dice que veamos el manual de usuario de
Archive API, que es este enlace aquí, y la consulta puede ser
algo así. AU significa autor.
Si no me equivoco, y TI no lo sé. Vayamos a ese enlace
y veamos esos prefijos. AU significa, TI significa título, ABS, resumen,
comentario, etcétera Si queremos
buscar todas estas cosas
al mismo tiempo, solo
decimos todas así que eso es lo que vamos
a hacer en nuestra función. Sólo vamos a usar
y columna algún tema. Eso es lo que vamos a
hacer. Empecemos a codificar. Vamos a definir esta función llamada
fetch archive papers, que va a
tomar dos parámetros El primero es el
título o la consulta, cualquiera que sea el segundo parámetro va a ser el recuento de papeles. Cuántos papeles
queremos traer. Entonces la consulta de búsqueda va a ser toda columna, y el título. Esa va a ser
nuestra consulta de búsqueda. Entonces vamos a hacer esto. No sé por qué esto
no está sangrando por sí mismo. Entonces, una cosa que tenemos que
hacer es seleccionar el intérprete de
Python. Voy en Mac es Command
Shift pin en Windows, creo que es Control Shift pin y vamos a tocar aquí seleccionamos intérprete
y vamos a seleccionar este archivo punto V&V Ahora tiene más capacidades, el editor de código porque sabe que estamos usando este entorno
virtual. Esta consulta no
va a ser cuántica, va a ser consulta de búsqueda. El resultado máximo
no va a ser diez, va a ser el
recuento de papeles este parámetro va a ser pasado o construido
por el agente. Eso lo vas a ver en acción en algunas lecciones y luego ordenar
por la fecha de envío. Eso está bien. Ahora vamos a inicializar
una matriz vacía de papeles y vamos
a um obtener los resultados Cliente de
resultados que busca resultados. Ahora tenemos un generador
y vamos a iterar sobre cada uno
de los resultados Para obtener resultados,
nuestra información en papel va a ser
un diccionario con un título. Resultado ese título Mira este título de resultado y
esto tiene más cosas. ¿Cómo sabemos cuál es
el resultado? ¿Qué otros atributos tiene? Bueno, si pasamos el cursor sobre resultado, podemos ver que es de tipo resultado. ¿Cuál
es el resultado del tipo? Bueno, podemos Control
clic o Comando haga clic en el módulo de archivo aquí con Comando
F o Control F aquí en Windows, podemos buscar documento, lo siento, no para
documento por resultado. Entonces tenemos que ensuciarnos
las manos aquí y
se puede ver que esta es la
definición de resultado. Tiene un ID de entrada,
que es la URL, la actualizada, cuándo
se actualizó por última vez el resultado , la publicada, cuando el resultado fue publicado
original, título, los autores, que es una lista
de autores, el resumen, que es una cadena, comentario, autores comentan para presentar, revista rev, el juguete, etcétera Veamos qué es este autor. Autor es otra definición de
tipo que solo tiene el
nombre como atributo. Con toda esta información, vamos a obtener
más atributos. El segundo atributo
va a ser resumen, resolver ese resumen. También vamos a obtener el resultado publicado
que publicó. Vamos a conseguir
el ref de la revista, vendimos el ref de la revista, vamos a conseguir el Di, resolvemos que Di A obviamente tienes el auto completado
desde el editor de código. Vamos a tener la categoría primaria, la categoría
primaria. Vamos a tener
las categorías, resolvemos esas categorías, y también el copiloto de GitHub me
está ayudando mucho Resolvemos esa URL PDF, y el Archivo Archivo, resultó Archivo, URL,
y no el archivo. Es el ID de entrada
y los autores, que va a ser una matriz, nombre de punto de autor para autor
en autores resultantes. Recuerda que esta era
una lista de autores. Esa va a ser
nuestra información de papel, y vamos a agregar
esta información de papel a
la lista de papeles Tinta de papel de pluma. Por último, vamos a
devolver todos los papeles. Esta es nuestra sencilla función
para buscar documentos de archivo, y como verán,
esta va a ser también una herramienta para el agente Eso es lo que vamos
a hacer para esta lección. Espero que les guste. Nos
vemos en la siguiente lección.
8. Crea una herramienta para descargar papeles: Hola y bienvenidos de nuevo. Ahora vamos a codificar nuestra segunda herramienta. Como puedes ver, estas son
solo funciones de Python, por lo que son muy fáciles de codificar. Esta segunda función va
a ser una herramienta de descarga PDF, que va a
recibir una URL PDF, que va a ser una cadena
y un nombre de archivo de salida, que va a ser así
como cadena. Para ello, vamos a
utilizar la biblioteca de peticiones. Para hacer una solicitud para
descargar el PDF, y también vamos
a usar la biblioteca del sistema operativo para crear un directorio
si no existe porque queremos
organizar nuestro proyecto. Entonces vamos a,
antes que nada, tratar de crear
un directorio llamado papers. Y si ya existe, entonces no lo cree. No tires un error, vive con él. ¿Bien? Y aquí, vamos
a poner el pase de aceptar. Vamos a especificar
la capa de error. Ahora vamos a declarar
la ruta de salida completa, y vamos a
decir OS, la ruta, la unión, los papeles
y la presentación de salida. Esa va a ser
la ruta de salida completa, la carpeta papers concatenada
con el archivo de salida Entonces vamos a obtener una respuesta usando
la biblioteca de solicitudes, vamos a hacer una
solicitud GET a la URL del PDF. Y si hay algún error,
vamos a plantear. Elevar para estatus. Entonces este método solo genera un error H
TTP si se produce uno. En la excepción, lo que
vamos a hacer es aceptar peticiones punto excepción, punto request exception como E. Vamos a devolver
las cadenas y error, y vamos a
imprimir ese error. Si no pasa nada, entonces
vamos a abrir la ruta de salida completa con
los permisos correctos, WB, y vamos a nombrar ese archivo
y vamos a que tenemos el contenido del punto de
respuesta. Y tenemos que devolver algo. Tenemos que devolver cadena diciendo PDF descargado con éxito y nos salvó y vamos a poner aquí la ruta de salida
completa. ¿Bien? Entonces como puedes
ver, esta es una función de Python
muy, muy simple que simplemente descarga algo. Se puede descargar un papel, se puede descargar
adyacente, lo que sea. En este caso,
sólo vamos a descargar el papel desde la URL del PDF. Eso es todo para este video. Muy, muy sencillo. Espero que te guste y
te vea en la siguiente.
9. Definir los modelos de integración y LLM: Bien, así que sigamos codificando. Vamos a crear
un nuevo archivo llamado constantes en el terminal,
toque Constance En este archivo, vamos a
declarar el modelo embed y
el modelo LM para reutilizarlo cuando construimos el índice y
cuando construimos el agente. En primer lugar, vamos a llamar
a la función Load dot M. Primero, vamos a importar desde
el punto de carga DoTM de carga. Lo que esto hace es cargar toda la variable
de entorno
desde el archivo ENB Ahora podemos acceder a la
ApiKey OpenAI con el módulo OS. Vamos a importar y dejar que Github Copilot me ayude a escribir
este os dot OpenAI APK Coincide con este bonito. Ahora vamos a decir que el
modelo de incrustación va a ser una
incrustación de IA abierta y vamos
a importar eso de las
incrustaciones de puntos de índice de
Plama OpenAI,
abrir AI desde allí, y me faltan
incrustaciones Abra la incrustación de IA y también el tipo de modelo de incrustación de IA
abierta. Tenemos algo más.
Embebido, no, este no No necesitamos esto.
Sólo necesitamos a estos dos. Vamos a
crear una instancia de la incrustación de IA abierta Vamos a pasar la clave API, que va a ser
la clave APN de IA abierta, y el modelo va a
ser de tipo de modelo de incrustación de IA abierta Mira esto, tenemos a
Ava, Baba Cree, DaVinci. Se trata de modelos muy antiguos. Los más nuevos son empotrar Ada 002 incrustar tres pequeños
y cama tres grandes. Vamos a usar el
embed tres grandes. Y para el modelo LM, voy a importar desde Lama index dot OpenAI,
Import Open AI Vamos a crear
una instancia de IA abierta. Nuevamente, tenemos que
pasar la clave API, que va a ser
nuestra IA, I API key, y el modelo, que en este
caso va a ser string, y va a
ser GPT para mini Bien, entonces estos son los dos modelos de Open AI
que vamos a utilizar. Quiero que te des cuenta de algo. Cuando importamos cosas de
incrustaciones y de LLM, solo
teníamos la opción Open AI Eso es porque por defecto, Lama Index solo tiene
ese plugin por defecto, solo las cosas de IA abiertas Pero si quieres
usar, por ejemplo, coágulo o Mistral AI o lo que sea, entonces Lama tiene todos estos conectores que
platicamos en esta diapositiva, pero hay que
instalarlos Espero que les guste este video.
Nos vemos en la siguiente.
10. Crea el índice y guárdalo localmente: Hola y bienvenidos de nuevo. Ahora
estamos listos para construir el índice. Para construir el índice, vamos a crear
un cuaderno Júpiter llamado build Index,
el terminal, touch
build index IPYNB Genial. En primer lugar,
vamos a agregar una celda. Y aquí, si no tienes
el VENV, puedes dar click. Probablemente te dirá seleccionar kernel aquí y
vas a elegir en VENB cual es el entorno
virtual, perdón por este proyecto Asegúrese de que el punto
VENV esté seleccionado. Entonces, antes que nada,
vamos a construir nuestro índice. Eso significa nuestra base de conocimiento. Eso será ponencias
de un tema específico. Que ya los tenemos en
nuestra base de datos o repositorio. Entonces antes que nada, desde las herramientas, vamos a importar
los papeles de archivo de búsqueda y vamos a
buscar algunos El tema va
a ser o el título, modelos de
lenguaje, es
decir modelos de lenguaje. Queremos aprender sobre modelos de
lenguaje, y el recuento de artículos
va a ser de diez. Bien. Puedes descargar
100 papeles si quieres. El tamaño o el número de
papeles no importa. Recuerde, los índices se construyen para manejar consultas en
grandes conjuntos de datos. Bien, entonces vamos
a ejecutar la celda, y vamos a imprimir los títulos de los
papeles que recuperemos. Así papel, título o
papel en papeles. Entonces estos son los papeles que
traemos que están relacionados con los modelos
de lenguaje Bien, ahora que tenemos esto, vamos a crear
una función llamada create Documents a partir de papeles. ¿Y qué es exactamente un documento? Bueno, eso es solo
una interfaz genérica para un documento de datos. Entonces este documento simplemente
se conecta a fuentes de datos. Vamos a pasar texto que va a contener la información del título
del artículo, de los autores del
resumen
de lo publicado, de la referencia
de la revista, DOI, la categoría primaria, las categorías, la URL del PDF
y la URL del archivo Vamos a poner toda esa información en una
sola cadena y luego vamos a pasar
esa sola cadena a esa sola cadena a la interfaz
de documentos del índice Lama En primer lugar, desde
Lama index dot core, vamos a
importar el documento, y luego vamos a
crear documentos a partir de papeles, y vamos a pasar
la lista de papeles En primer lugar, vamos a
inicializar una lista vacía y luego vamos a
iterar sobre estos papeles Entonces el contenido va a ser una sola cadena con la
información del título, y voy a dejar copiloto de
Github haga el trabajo
aburrido aquí Los autores van a ser una lista de autores
separados por una coma Recuerda, autores es una lista. ¿Recuerdas esto? Es una lista. También vamos a poner el resumen vamos a poner
la información publicada. Vamos a poner la referencia de
revista, referencia revista. Vamos a poner al
Di la categoría primaria. Las categorías también es lista. Aunque aquí no hicimos ningún
procesamiento de esa lista, solo
ponemos eso
y miramos esto. Todas las categorías de resultados, es
decir, una lista de cadenas. Podemos unir todas esas
cadenas mediante este comando. Vamos a tener el PDF
UL y también la URL del archivo. Que esta vez
Githukpilot fallan. Oh, no, no falló. Es URL de archivo. Sí, URL de archivo. Bien, genial. Entonces ahora
tenemos nuestra cadena. Lo que vamos a hacer ahora es agregar el contenido
a un documento Y el documento desapareció, la importación desapareció
porque tengo una configuración que elimina los documentos
no utilizados guardar. Bien. Entonces vamos a traerlo de vuelta y decir que el texto
va a estar contento. Y obviamente tenemos que
devolver esta lista, bien. Y ahora llamemos a
esa función. Digamos documentos,
secuela para crear
documentos a partir de papeles, papeles Bien. Y veamos esta lista. Entonces esta lista es una lista
de este objeto de documento, y cada
objeto de documento tiene un ID. Aún no tiene
una incrustación. Tiene metadatos vacíos. Esto puede ser útil en muchas
aplicaciones que tienen metadatos, pero no estamos configurando ningún
metadato en este documento. Aunque si quieres,
puedes poner metadatos aquí y poner cualquier diccionario Python aquí. Una información que desee.
Déjame cerrar esto otra vez. También tiene más atributos, pero el que nos interesa
es el recurso de texto, recurso medios, texto, y esta es la cadena que construimos. Se puede ver que puede ser
una cuerda muy larga. Bien. Entonces ahora que tenemos esto, vamos a construir nuestro índice. Entonces, ¿cómo hacemos
eso? Primero importemos desde ama index dot core. Vamos a importar la configuración, y vamos a importar vectores
almacenar índice. También a partir de constantes, vamos importar el modelo embed
porque recuerde, necesitamos pasar el texto a
través de un modelo embed Bien. Entonces, antes que nada,
vamos a decir ajustes tamaño de trozo
va a ser igual
a 1024 configuraciones Chunk
overlap igual a 50 Voy a explicar qué
es esto en un momento. Permítanme primero crear el índice. Voy a decir vector
store index a partir de documentos. Vamos a pasar la lista de documentos y el modelo embed
va a ser el modelo
embed que
instanciamos en esa constante Recuerda que esto es texto
incrustar tres grandes. Bien, entonces, ¿cuáles son estos
tamaños de trozo y superposición de trozo? Bien, entonces tamaño de trozo establece la propiedad de tamaño de trozo en este
número Eso significa que los datos, el texto aquí serán procesados
en trozos de 1024 unidades En este caso, unidades
significa caracteres. Si por ejemplo, este
texto tiene 2080 lo siento, 2048 caracteres, entonces se va a
dividir en dos trozos, pero no del todo porque tenemos esta otra configuración
llamada El solapamiento significa
que habrá un solapamiento de 50 unidades
entre trozos consecutivos Esto puede ser útil para garantizar la continuidad entre
fragmentos al procesar datos Eso significa que
un trozo puede tener algún contexto del
trozo consecutivo y viceversa Por lo que estos dos ajustes
son muy importantes. Se llaman
hiperparámetros porque estos pueden ser 128 si
quieres mantener más contexto, pero vas a
tener más fragmentos Entonces estos son buenos valores por defecto
para estas dos propiedades. Ahora que tenemos esto, ya
tenemos nuestro índice. Genial. Entonces, detrás de escena, esto en realidad está llamando la API OpenAI para convertir
todos estos en vectores Está usando el texto incrustando tres grandes modelos de
incrustación. Convierte todo en vectores. Ahora, podemos almacenar este índice usando
el contexto de almacenamiento, ese método persisten, y vamos a almacenar esto
en una carpeta llamada index. Derecha. Ahora tenemos
esta carpeta de índice
con todos estos archivos JSON, y esto es algo que
probablemente queramos tener
en el Git Ignore. Entonces agreguemos el índice aquí en el Getting
porque esto es dinámico. Si buscas otra
cosa, el índice obviamente
va a cambiar. Eso es todo para construir un índice. Se puede ver que con el
índice de Lama, esto es muy fácil. Este índice obviamente
es un índice local. Podemos usar un índice basado en la nube como Pine Cone,
servicio como piñecone, o podemos usar
herramientas más sofisticadas como Chroma TB, que también es una base de datos
vectorial local, pero tenemos que implementar Hay otros servicios, servicios en la nube como Vate para almacenar estos
índices en la nube Utilizan AWS detrás
de escena o GCP. Pero por ahora,
vamos a almacenar el índice localmente
en esta carpeta. Espero que les guste este video y nos veamos en la siguiente lección.
11. Crea la herramienta del motor de consultas RAG: Hola y bienvenidos de nuevo. Ahora vamos a empezar a
construir el propio agente. Vamos a crear otro
archivo llamado agente IPYNV. Esta vez, aquí hay
que seleccionar el kernel. Recuerda, selecciona VENV. Genial. En primer lugar, vamos a
cargar nuestro índice desde el almacenamiento. Eso es lo primero. Todo lo que se almacene
en estos archivos JSON, vamos a cargar eso. Lama Index tiene un método llamado índice de
carga del almacenamiento. Entonces desde Lama index dot core, vamos a importar
el contexto de almidón y el índice de carga del almacenamiento Necesitamos importar
el modelo embed para que este contexto
starch sea storge context desde los valores predeterminados, y el directorio persisten
va a ser index Ahora podemos cargar el índice con este
índice de carga desde el almacenamiento. Pasamos el
contexto de almacenamiento y
pasamos el modelo embed. Genial. Ahora tenemos nuestro índice
nuestro índice local cargado. Lo que vamos a hacer ahora es
construir un motor de consultas para. Vamos a ver cómo
funciona
esa herramienta de motor de consultas entre bastidores. Desde Lama index.co dot tools, vamos a importar
el motor de consultas También vamos a importar de las constantes el modelo LLM Entonces el motor de consultas
va a ser el índice, pero este índice tiene un método
llamado como motor de consulta. Tenemos que pasar el modelo LLM, que en nuestro caso va
a ser GPT cuatro Omni, y podemos pasar otro
parámetro llamado Top K, similitud, top K, y vamos a decir cinco. Vamos a recuperar máximo cinco vectores
cuando enviemos una consulta, vamos a encontrar un máximo de
cinco vectores similares. Ahora vamos a definir la herramienta RAC como una herramienta de motor de
consultas Y nuevamente, la
importación desaparece, así que tenemos que volver a hacerlo. Herramientas principales, motor de
consultas de importación a. De los valores predeterminados, y los predeterminados van a ser
el motor de consultas También tenemos que proporcionar
el nombre de esta herramienta. Entonces el nombre va a ser investigación, herramienta de motor de
consultas. Y también es una buena práctica
darle una descripción. Y esta descripción
va a ayudar
al agente a saber de qué se trata
esta herramienta. Entonces voy a decir que
este es un motor de trapo con trabajos de investigación recientes Entonces esta es la herramienta que el agente
va a utilizar
para obtener información en para obtener información en nuestra base de datos existente o en
nuestro repositorio existente Ahora quiero que muestres quiero
mostrarte las indicaciones que este motor de consultas utiliza
detrás de escena Por defecto, Lama Index utiliza un prompt refinado antes de
devolver una respuesta Y vamos a aprender
más sobre esto en un momento. En primer lugar, permítanme importar
desde IPython esa pantalla. Voy a importar
rebajas y mostrar. Estas son solo funciones de
utilidad para ver las cosas un poco
más agradables aquí en la pantalla Voy a definir este diccionario de solicitud de
visualización, y voy a pasar el diccionario de solicitud
para el
prompt de clave y el
prompt digt que los elementos Voy a mostrar
algunas rebajas aquí. El rebajas va
a ser la clave prompt. Y todo esto va
a tener sentido en un momento. Sólo tengan que aguantar conmigo. Y le pido que obtenga plantilla. Ahora que hemos
definido esta función, vamos a decir que el
diccionario de prompts va a ser el motor de consultas
que obtenga prompts, y vamos a
mostrar los Bien. Motor de consultas. Bien, no hemos
ejecutado esta celda. Bien. Aquí está. Entonces este motor de consultas
que definimos aquí tiene dos prompts. La primera es esta plantilla QA de
texto sintetizador de respuesta,
y la segunda
es esta plantilla de refinamiento de
sintetizador de respuesta refinamiento de
sintetizador Entonces, cuando recuperemos la información
relevante, un pedazo de información, va a usar el fragmento más
relevante Derecho Va a responder a la
pregunta o cualquier consulta que publique
el usuario usando ese trozo
y usando esta plantilla La información de contexto está a continuación. Y dada la información de
contexto y no conocimiento previo,
responder a la consulta. La consulta es lo que nosotros
como usuario ponemos y la respuesta
es la respuesta LLM Después de que tenga una respuesta, va a iterar
sobre los otros fragmentos, los otros datos relevantes Porque recuerden, vamos a tener cinco de estos
como máximo cinco, con los otros cuatro, va a usar esta plantilla aquí. La consulta original
es la siguiente. Hemos proporcionado
una respuesta existente por lo que esta es la respuesta
de este prompt aquí, tenemos la
oportunidad de refinar la respuesta existente solo si es necesario con algunos contextos
más abajo. Este contexto va
a ser otro trozo, otro dato relevante Dado el nuevo contexto, afinar la respuesta original
para responder mejor a la consulta. Si el contexto no es útil, devuelve la respuesta original. Esto se llama modo de
respuesta en índice de
Lama y tenemos
esta documentación aquí modo de respuesta por
defecto se refina, crea y refina la respuesta pasando
secuencialmente a través cada
fragmento de texto de recuperación y esto hace una llamada LLM separada para
nodo o fragmento de recuperación Los detalles, el primer
trozo se utiliza en una consulta usando la plantilla qa de
texto Usando esta plantilla aquí, usando el fragmento más relevante es el LLM va a
recuperar una respuesta Luego, la respuesta
y el siguiente fragmento así
como la
pregunta original, están usando una consulta con el prompt de
plantilla refinada y así
sucesivamente hasta que se
hayan analizado todos los fragmentos Con los trozos consecutivos, va a usar esta
plantilla aquí y
va a tener una respuesta refinada Si un fragmento es demasiado grande
para caber dentro de la ventana, considerando el tamaño del baile de graduación, se divide usando un divisor de texto
token Permitiendo cierta
superposición de texto entre fragmentos, y los nuevos fragmentos
adicionales se consideran como trozos de la colección de fragmentos
originales Esto es sólo si el
trozo es demasiado grande. Hay otro
modo de respuesta llamado compacto. Entonces el compacto,
similar a refinar, pero compacto concatena
los fragmentos de antemano, resultando en menos Entonces, en lugar de pasar los otros cuatro
fragmentos por separado, va a fusionar todos
esos otros cuatro fragmentos y ejecutar este prompt con
esos contenidos Entonces esto es muy
importante que entiendas lo que sucede
detrás de escena. Un agente tiene la capacidad de
corregirse a sí mismo mediante el uso de esta técnica
creativa refinada. Vamos a mantener
este enfoque, y vamos a
terminar la lección aquí. Espero que les guste y nos veamos
en la siguiente lección.
12. Crea e interactúa con el agente: Hola, y bienvenidos de nuevo.
Ahora vamos a definir las otras dos herramientas que va a utilizar la agencia. Importemos desde las herramientas, el PDF de descarga y los documentos de
archivo de búsqueda Para definir estas herramientas, vamos a importar desde
Lama herramientas de cordón índice Vamos a importar herramienta de
función. Y vamos a definir la herramienta de
descarga PDF, que va a ser una
instancia de esta herramienta de función, y tenemos que pasar
la función en sí, que es descargar PDF. Tenemos, de nuevo, para
darle un nombre. Entonces voy a llamar a esta herramienta de
descarga de archivos PDF, y también tenemos oh,
lo siento, herramienta de función de los valores predeterminados. Y también tenemos que
darle una descripción. Es una buena práctica
darle una descripción. Entonces voy a decir que
esta es una función de Python. Que descarga archivo PDF por link. Esa es nuestra
herramienta de descarga de PDF y
también vamos a definir otra herramienta
llamada la herramienta Archivo FEG, que va a
ser lo mismo Pasamos la función PE Archivar
papeles, darle un nombre,
buscar de Archivo Y
te vamos a dar la descripción
diciendo descargar el que podemos poner aquí Max PursultSCENT
ponencias respecto al tema Podemos poner ese marcador de posición
ahí desde Archivo. C. Y tenemos que cerrar esto. Bien, entonces ahora que hemos
definido estas dos herramientas, vamos a
crear una nueva celda, y vamos a
crear el agente. Entonces desde Lama index
dot core, ese agente, vamos a importar
un agente de reacción Entonces tenemos múltiples cosas aquí, vamos a crear una
instancia de un agente de reacción. ¿Por qué reaccionar? Porque va a Este agente opera
en dos etapas principales. La primera etapa es el razonamiento, por lo que recibe una consulta, el agente evalúa
si tiene suficiente información para responder directamente o si necesita una herramienta, y luego actúa Si el agente
decide usar una herramienta, la ejecuta y
luego vuelve a la etapa de
razonamiento para determinar
si ahora puede responder la consulta o si
necesita más herramientas Entonces es tan fácil como decir
reaccione agent de las herramientas. Y pasar una lista de herramientas. Así que descarga PDF dos, herramienta
Rack, y
busca Archivo dos Tenemos que proporcionar un LM
que este va a utilizar. Vamos a pasar nuestro modelo
LM, GPT 40 Mini. Por último, pero no menos importante, vamos a decir Vervos cierto para que sepamos lo que está
pasando detrás de escena, todos los registros que tira este
agente. Y eso es todo. Ahora hemos creado un agente. Para que podamos empezar a
platicar con nuestro agente. Para ello, vamos a
necesitar una plantilla de consulta. Vamos a crear una plantilla de consulta, y probablemente vamos a refinar esto en futuras lecciones. Entonces esto va a decir, me interesa
algún tema, ¿verdad? Encuentra trabajos en tu base de datos de
conocimientos relacionados con este tema. Utilice la siguiente plantilla
para consultar papel de investigación, herramienta de motor de
consultas para. Voy a decir proporcionar
título, el resumen, autores y enlace para
descargar cuatro trabajos. Déjame ver cuatro ponencias
relacionadas con el tema. Periodo. Tengo Whoops. Y voy a decir,
si no los hay, ¿
podrías ir a buscar el
reciente de Archivo De Archivo. Bien. Entonces, esta es una
plantilla de consulta que he escrito vamos a ver si esto funciona. Vamos a crear un nuevo yo y decir que la respuesta es igual
al agente que charla. Vamos a pasar la plantilla de consulta y vamos a formatear
para darte el tema. El tema va a
ser los modelos multimodelo. Espero de esta
lista de ponencias que, por ejemplo,
se vayan a recuperar modelos multimodelo. Y probablemente algo más. Pero no sé
qué otros papeles van a ser recuperados
porque este es solo el título. Y recuerda estas
búsquedas para el resumen, tiene resumen, tiene
categorías y todas esas cosas. Entonces probablemente va a
buscar otros papeles también. Así que vamos a ejecutar esto, y se puede ver que la salida está diciendo paso de ejecución y este ID, el paso de entrada es la
plantilla de consulta con el tema, que es modelos multimodales. Ahora el pensamiento
del agente es el
idioma actual del usuario es el inglés. Necesito usar una herramienta que
me ayude a responder la pregunta. Entonces, la acción que
va a tomar, va a utilizar el
trabajo de investigación, la herramienta del motor de consultas, y la entrada va a ser
esta, proporcionar el resumen del título, los autores y el enlace para descargar
para trabajos relacionados con modelos
multimodales Entonces, lo que esto está haciendo es
usar este motor de consultas. Recuerde, el motor de consultas
utiliza GPT cuatro omni, tiene la capacidad de dar una respuesta siguiendo
esta plantilla aquí Siguiendo o dando el
título resumen autores y enlace para descargar el trabajo. La observación es
que volverá. Todo esto es
generado por GPT 40 M. Se trata de dar el
título, el resumen, los autores, y la URL del PDF Podemos visualizar mejor
esta respuesta usando esta clase Markdown. Voy a decir Markdown,
respuesta punto respuesta. Bien. Ahora podemos
visualizar esto mejor. Esta es la respuesta
de GPT 40 Mini. Simplemente me dio una lista de
cuatro papeles. Esto es genial. En esta lección,
vamos a terminar aquí. En la siguiente lección,
vamos a ver si puede descargar
todos estos trabajos. Espero que les guste. Nos
vemos en la siguiente lección.
13. Descarga los documentos y busca nuevos: Hola y bienvenidos de nuevo.
Ahora, en esta lección, vamos a descargar
todos estos trabajos. El agente, recuerda una de las características
del agente es que conserva la memoria de las tareas
que ya estaban completadas. Dado que el agente conserva
este historial de chat, podemos solicitar
luego cargar los papeles sin
mencionarlos explícitamente. Bien. Así que vamos a escribir en este nuevo
agente de respuesta celular que charla y decirle al agente descargar todos
los papeles que mencionaste. Veamos qué pasa. Entonces se está ejecutando este paso y el paso de entrada es
descargar todos los trabajos que
mencionaste la acción
o el pensamiento, primer lugar, es que necesito
descargar múltiples archivos PDF basados en las URL proporcionadas para los trabajos relacionados con modelos
multimodales La acción es descargar el archivo
PDF dos. La entrada de acción
es esta URL PDF, y el archivo de salida es este. Esto es sólo para una ponencia. Se puede ver que en esta carpeta, sólo descargó un papel. Y luego se va
al otro papel, que es el texto cross
lingual llegar a comprensión
visual,
que es el segundo Pero mira esto. Ahora
está diciendo que el matón está diciendo
que puede responder
sin más herramientas, y todavía usa el um, no
está
pasando por una acción La respuesta es acción
descargar PDF dos. No se trata de descargar el segundo archivo ni el
tercero ni el cuarto. Arreglaremos esto haciendo un poco de ingeniería rápida
en este chat. Pero por ahora,
sigamos y bueno, pongamos la respuesta en rebaja para que podamos ver esto mejor Se puede ver que la respuesta
es descargar esto usa la herramienta de descarga PDF y nos
está diciendo lo último que hizo. Éste. Esto no es exacto.
Vamos a arreglar esto. Pero por ahora, veamos
qué pasa si
preguntamos sobre un tema que no está disponible en esta
lista que encontramos. Vamos a interactuar
con el agente una
vez más y
hablemos de agente, plantilla de
consulta,
y vamos a formatear con un tema diferente como la computación cuántica,
algo así. Ninguno de estos artículos
habla de
computación cuántica, creo. Veamos qué pasa si
hablamos de este tema
que no está disponible. Obviamente vamos a
ver mejor la respuesta aquí. Pero veamos el proceso de
razonamiento. Ahora la plantilla está
hablando de computación cuántica. El pensamiento es el idioma
actual del usuario es el inglés. Necesito usar herramienta que
me ayude a responder la pregunta. La acción es investigar
papel, herramienta de motor de consultas. El input es esta plantilla, pero parece que no
hay nada
relacionado con la computación cuántica. Entonces el pensamiento es,
parece que no hay papeles disponibles en la base de datos de
conocimiento relacionados con la computación cuántica. Voy a buscar
artículos recientes de Archivo. Ahora está usando la tercera herramienta, que es fetch from Archive, y la entrada de acción es el título computación cuántica
y los papeles cuentan cinco Bien. Entonces ahora encontré
estos cinco papeles aquí. Se puede ver el
enredo de sondeo, escalado a través de una transición de
fase cuántica en
una computadora cuántica, aditividad
uniforme, o lo que sea, estas cosas complicadas Pero definitivamente encontró nuevos papeles sin que
intervengamos en este proceso Esto es genial. El siguiente
paso en la siguiente lección, lo que vamos a
hacer es
solucionar realmente el problema de
descargar los papeles.
14. Mejora el aviso para descargar archivos: Hola, y bienvenidos de nuevo.
Entonces, antes que nada, hagamos un compromiso, para que no perdamos
todos nuestros cambios. Voy a borrar este documento que la próxima vez que
arreglemos este problema de papeles, vayan a ver que
todo está arreglado. Entonces agreguemos todo. Agreguemos un
mensaje de compromiso diciendo, construyamos la primera versión del agente y hagamos un push. En. Ahora, lo que vamos a hacer a continuación es modificar este prompt aquí, descargar prompt porque
ahora mismo es muy sencillo, y quizá esa no sea
la mejor manera de hacerlo. Por supuesto, puedes
usar Chat GPT o coágulo para potenciar este prompt
aquí, eso es lo que hice De hecho, el prompt que se le ocurrió
para solucionar este problema, fue un
proceso iterativo, en primer lugar Intenté esto varias
veces para solucionar este problema. Probé múltiples prompts, y este es el
que solucionó el problema También probé otros enfoques, y te voy a invitar
a probar otros enfoques. Vamos a discutir
eso en un momento. Por ahora, voy
a decir el prompt, descargar los siguientes
papeles y para cada ponencia. Voy a decir, antes que
nada, vaya. ¿Qué está pasando? Procese un papel a la vez. Segundo, hagámoslo así. Así. Sí. Segundo, indique qué número de
papel está
procesando del total. Tercero, no sé
por qué está bien esto. Completa un ciclo completo de descarga antes de pasar al siguiente vapor. Cuarto, declarar explícitamente al
pasar al siguiente trabajo,
y quinto, proporcionar
un resumen final solo después de que
se hayan descargado todos los trabajos. Entonces estas van a
ser las nuevas instrucciones para el paso de descarga. ¿Bien? Entonces veamos qué pasa ahora. Voy a ejecutar todo de
nuevo solo para ser
claros, borrar todas las salidas y ejecutar todas
y veamos que pasa. Se trata de recuperar de nuevo los
cuatro trabajos relacionados con los modelos multimodales.
Ahora está aquí. Es decir el pensamiento voy a empezar a descargar los
papeles uno por uno, procesando cada papel en
el orden en que fueron listados. Acción, descargando el PDF dos, la segunda acción es nuevamente
descargar el PDF dos. Pero ahora para el texto cross
lingual Rich visual, la tercera acción
es la misma usando el PDF de descarga dos pero con estos prototipos
multimodales integrales, y la cuarta acción es la misma pero con
una prenda de chat Rata. Ahora descargó
los cuatro papeles. Ahora veamos qué pasa
cuando busca el de
computación cuántica. Oh, Uy. Ahora también está descargando los de computación
cuántica. Entonces arreglamos parte del problema. Logramos descargar
los cuatro papeles que
explícitamente configuramos para descargar, pero ahora también está
descargando los otros. Entonces ahora tenemos que hacer
alguna otra cosa para evitar esta situación
y se puede ver esto también falló en este último paso. Permítanme borrar de nuevo todos
los papeles, por alguna razón, aquí, no
es explícito que no tenga que
descargar los papeles. Nuevamente, pasé por
un proceso iterativo. Esto es prueba y error
y éste es más sencillo. Sólo hay que decir,
no descargues papeles. A menos que el
usuario lo solicite explícitamente. Entonces con solo decirle a la IA, Oye, no descargues los papeles
a menos que el usuario lo diga, así que veamos qué pasa. Voy a despejar todas las
salidas otra vez y correr todas. Esta vez, tuve que modificar
la plantilla de crear, no la plantilla de descarga. Entonces ahora,
vuelve a estar buscando en la
base de datos o en el índice. ¿Cuáles son los
modelos multimodales de papel? Encontró los cuatro papeles, y veamos qué pasa. Todo este proceso es una ingeniería
rápida, así
como cuando se realiza una
ingeniería rápida para HAGPT, también
puede hacer
ingeniería rápida para los agentes Veamos qué pasa
en la carpeta de papeles. Descargué los cuatro
papeles con éxito. Los papeles multimodales. A 23 segundos. Y ahora está buscando nuevos papeles relacionados con la computación
cuántica Lo que espero ahora es
que no descargue los papeles de la
computación cuántica. Aquí está. puede ver ahora que
esta vez sólo encontró un papel, pero eso es bueno. Al menos no descargó todos los papeles.
Esa es una buena señal. Hagamos un compromiso aquí. SG commit, construir segunda versión
de la y vamos a hacer push. Esta vez con los
papeles incluidos. Eso es todo para este video. Espero que les guste y nos
vemos en la siguiente lección.
15. Crea una clase para administrar el índice: Hola, y bienvenidos de nuevo. Entonces lo que
vamos a hacer ahora es
crear dos clases. A una clase se le va a
llamar el gestor de índices, y a la segunda clase se va a llamar
la clase agente. Entonces estas dos clases, su propósito
será capturar toda
la lógica que
creamos aquí en estos cuadernos de la lógica que
creamos aquí en estos Júpiter
en una clase para que podamos reutilizar eso y
vamos a construir un stream iluminado que use
estas dos clases para que las cosas se pongan un poco
más fáciles de manejar Entonces, antes que nada, vamos a crear la clase index manager. Así que aquí vamos a definir una clase llamada index manager, y vamos a
crear un constructor. Y aquí, sólo vamos a tener como parámetro
el modelo embed. El modelo self dot embed va
a ser el que pasemos por aquí. También vamos a definir
esta matriz vacía de vapores. Bien. Entonces ahora vamos a
definir un método fetch papers, que va a recibir
como parámetros el tema que
queremos recuperar y
los papeles cuentan,
que vamos a por defecto a diez como hicimos en los cuadernos de
Júpiter Entonces, los papeles
autopuntados, en lugar de ser
ahora una matriz vacía, van a llamar a estos documentos de
archivo de búsqueda con un tema, y los papeles cuentan Tema. Genial. Y
tenemos que colar aquí. Bien. Ahora que tenemos
estos papeles de búsqueda, también
vamos a crear
este método llamado crear documentos a partir de papeles Este método va a ser exactamente
el mismo que éste. En realidad, déjame copiar
y pegar todo. Sangrar esto. Pero esta vez no
va a recibir papeles como parámetro porque los papeles ya se
inicializan aquí Sólo voy a decir para
papel en papeles autopuntados. También me voy a deshacer
de estos documentos aquí. Vamos a inicializar
documentos en otro lugar. Vamos a decir auto punto
documentos anexar documento. Necesitamos importar documento
del índice Lama, ¿verdad? Y podemos devolver los documentos o simplemente no
lo hacemos, eso depende de usted. Realmente no me importa.
Sólo voy a devolverlos. Bien, y dice que
los documentos no existen. Por eso es porque
no tenemos documentos definidos. Así que bien, hagámoslo aquí. No le hace daño a nadie.
Hagámoslo aquí. Autodocumentos y terreno. Ahora vamos a crear un método create index,
Dev Create index, y esto va a llamar a esta función create document
from papers, y también va a reunir y ejecutar
esta lógica aquí. Bien. Entonces algo como esto, fuimos inventamos esto
y tenemos que importar ajustes y
vector store index Bien. Y aquí, vamos a asignar esto a una
variable de instancia llamada index. También, embed model, tenemos
eso en el constructor, así podemos llamar a self
that embed model, y documents is here,
self the documents. Entonces prefiero
inicializar esto aquí. Ahí vas, y ahí vas. Esto es sólo una cuestión
de organización. No afecta el resultado. Pero ahora tenemos esta clase que tiene este método para
buscar los papeles Voy a poblar
la matriz de papeles. Entonces después de ejecutar
este método, puedes crear el índice, y luego necesitamos otro
método para recuperar el índice. Este método va a hacer lo mismo
que aquí estamos haciendo. Esta misma lógica, la
vamos a poner aquí y obviamente tenemos que
importar cosas, vectores a indexar, cargar
índice de almacenamiento, por alguna razón,
esto se duplicó. Modelo de cama va a ser
autodidacta y modelo Bt. ¿Y qué más? No vamos a asignar
esto sino devolver esta tasa. Entonces creo que esto es todo lo que tenemos
que hacer para esta clase. También podemos definir un método arr solo para imprimir
los títulos de los trabajos Entonces voy a decir papeles de lista, y sólo vamos a
copiar la lógica de esto. Me gusta imprimir Azulejo de
papel para papel Son los papeles, para mostrar las cosas si quieres Eso es todo para esta clase. En la siguiente lección,
lo que vamos a hacer es crear la clase de agente. No olvides hacer un commit agrega index
manager Cass. Empuje. Eso es todo para esta lección. Espero que les guste. Nos
vemos en la siguiente lección.
16. Crea una clase para interactuar con el agente: Genial. Ahora vamos a construir otra clase llamada
la clase agente. Vamos a crear otro archivo
llamado agente punto PY. Aquí vamos a definir
esta clase llamada agente. En destructor, vamos
a obtener el índice
y el modelo LLM El índice de autopunto va a ser índice y el modelo LLM de punto automático
va a ser modelo LLM En Deconstructuor,
vamos a construir el motor de consultas, la herramienta RAG, la herramienta de descarga de PDF, la herramienta archivo Fetch
y
el método
del agente de compilación para construir el agente Entonces, básicamente, saca la lógica de este
cuaderno de Júpiter a una clase Entonces, antes que nada, construir,
construir motor de consultas. Lo que esto va a hacer
es básicamente hacer esto. Toma esta línea de
código y ponla aquí. Vamos a decir que el motor de consulta de
autopunto va a ser igual al índice de
puntos propios como motor de consulta, módulo de
autopunto M y similitud superior
K igual a cinco. Esto puede ser también parámetro
del constructor, pero vamos a codificarlo duro a cinco. El segundo método va
a ser construir herramienta RAC. Y básicamente,
va a ser esto. Entonces auto punto Rat va a ser igual
a la herramienta de motor de consultas. Vamos a importar que en este archivo y el motor de consultas va a ser el motor de consulta de
autopunto. Vamos a deshacernos de esto
y ahí tienes. Ahora, el otro método
va a ser la
herramienta de descarga de PDF construida y
básicamente va a ser
solo el así que copiamos esto, autopunto descargar PDF a. Tenemos que importar
la herramienta de función y tenemos
que descargar PDF
del archivo de herramientas aquí. Ahí vas. Ahora, construir la herramienta de búsqueda de archivo. Nuevamente, esto va a ser esto. Vamos a copiarlo
y pegarlo aquí. Decir self dot fetch
Archive tool e importe el archivo fetch
del archivo tools Ahí vas. Ahora vamos
a definir otro método, que va a
ser build agent. Build agent va
a ser justo esto aquí. Vamos a copiar esto, pegarlo aquí, e importar esto
en la parte superior. Ahí vas. Y estas van a ser la herramienta PDF de descarga de punto
automático, la herramienta auto punto g, la herramienta archivo de búsqueda de punto
automático
y la tasa de modelo LLM de punto automático Nuevamente, todos estos
parámetros como verbos verdaderos. Se pueden configurar en el
inicializador si quieres. Yo sólo voy a codificarlos duro y decir variables,
varios siempre cierto. Ahora voy en
el inicializador para
llamar a todos estos
métodos en ese orden Primero, el motor de consultas, luego la herramienta build Rag,
luego la herramienta de
descarga de PDF de compilación, luego construye cualquier herramienta de archivo
pet
y, finalmente, construye el agente Genial. Nos falta un
solo método aquí. Cuando inicialicemos
esta clase de agente, el agente va a ser
inicializado automáticamente, pero quiero un método de chat, que va a
recibir un mensaje Se va a volver a sí mismo, al agente, a la charla. Mensaje. Básicamente, esta
interacción aquí, ya no
vamos a pasar estas plantillas de
consulta. Sólo vamos a
pasar cualquier mensaje. El mensaje va a ser
básicamente cualquier cadena aquí. Bien, así que eso es todo
para esta clase. De nuevo, eso es get at Git commit
as agent class y push. Eso es todo para este
video. Espero que te guste y nos veamos en
la siguiente lección donde vamos
a construir una app de sprint let usando estas dos clases.
17. Crea una interfaz de usuario de chat con Streamlit: Hola, y bienvenidos de nuevo.
Lo que vamos a hacer ahora es construir
una app stream let. El líder de Stream es un
framework de Python para construir aplicaciones, especialmente aplicaciones de datos
como dicen aquí. Convierte scripts de datos en aplicaciones
web compartidas en
MD, todo inter pith No se requiere
experiencia en front-end. Vas a la sección de galería, verás muchos
ejemplos que la gente ha construido con stream it. Por ejemplo, para LMS, han construido chatbots
o chat GPT con memoria, muchas cosas Se pueden ver los trending ones, Matemáticas GBT, portafolio, lo que sea Y tiene mucha
compatibilidad o muchas herramientas,
diré, para construir mapas LLM Bien. Entonces vamos a empezar a construir este chatbot para
interactuar con el agente En primer lugar, necesitamos instalar streamlt como dependencia Entonces PDM agrega streamlet y espera a que se instale
la dependencia Mientras tanto,
vamos a crear un archivo llamado app dot PY. Bien. Entonces aquí, vamos a
importar nuestra clase de agente, y también vamos a importar
nuestra clase de gestor de índices. Además, vamos a
importar desde las constantes, el modelo embed y
el modelo LM. Bien. Y también vamos
a importar streamlt como ST. Así es como la gente de la comunidad Python
solía importar esta biblioteca. Todavía no
lo reconoce porque aún se está
instalando. Y vamos a empezar a construir la app mientras
ésta se instala. Entonces, antes que nada, necesitamos
entender un concepto en streamlt
que es el estado de sesión Entonces en streamlt
construimos un script, y este script se ejecuta como
si estuviera en un bucle salvaje Entonces todo lo que escribamos aquí
será recreado si
no ponemos esas variables en lo que se llama
el estado de sesión Hay una manera de que
hay múltiples formas almacenar en caché estas variables, y una de esas formas es
mediante el uso de un decorador Este decorador se llama
ST stream lit cache. Aquí podemos definir una función, y voy a llamar a esta
función inicializar agente Porque queremos que el agente
sea inicializado sólo una vez. Por eso estamos guardando este recurso
en caché. Vamos a decir
index manager es igual a index
manager, recuerda, tenemos que pasar el modelo embed, y luego podemos obtener
el index llamando
al método retrieve index
que construimos para esta clase. Por último, vamos
a devolver un agente con índice y el modelo LM. Bien. Y ahora vamos a inicializar inicializar el
agente y el estado de la sesión Bien. Entonces, ¿cómo hacemos esto? Decimos si el agente no está
en la sesión de punto extremo, estado de
sesión, entonces
vamos a decir stream session state dot
agent, agente inicializado La primera vez que se ejecuta este script, agente no va a estar
en el estado de sesión, por lo que se inicializará También necesitamos inicializar en el estado de sesión los
mensajes del chat Si los mensajes no están en estado de sesión de
flujo, entonces los mensajes van
a ser una matriz vacía. Entonces stream lead tiene una
manera de construir chats. Vamos a ver cómo
utiliza el concepto de filas. Entonces una parte
del chat va a ser
el usuario o el humano, y la otra parte
del chat va a ser el asistente o la IA. Entonces vamos a ver cómo funciona
eso en un momento. Entonces lo que vamos
a hacer ahora es
mostrar los mensajes de chat. Recuerda, todo
esto
va a correr como en un bucle while. Entonces necesitamos que cada vez se ejecute
este script,
imprimir los mensajes. Para mensaje en
estado de sesión que mensajes, esta es la sintaxis que
usamos para escribir los mensajes con SD y esto tiene esta variable de
mensaje de chat. ¿Y qué tenemos que poner? El nombre? El nombre puede ser el usuario, el asistente, la IA o el humano. Usuario y humano son
lo mismo. Asistente e IA
son lo mismo. Pero el mensaje va
a contener el papel. Entonces vamos a decir
mensaje punto papel. Entonces el rol de mensaje va a ser usuario
o
va a ser asistente.
¿Cómo sabemos eso? Porque vamos a definir eso en un momento.
Sólo tengan paciencia conmigo. Entonces aquí para escribir
algo en el chat, usamos este método de rebajas, y aquí vamos a imprimir
el contenido del mensaje Bien. Se podría decir que
los mensajes van a ser una matriz de diccionarios y cada diccionario
va a tener un rol y un contenido. El rol va a
ser usuario o asistente y el contenido va a ser el
mensaje en sí, que puede estar en Markdown. Ahora vamos a construir la funcionalidad
central de esto. Vamos a decir if prompt, y vamos a llamar a
este método de entrada. Pregúntame cualquier cosa sobre los vapores de
investigación. Bien. Entonces, ¿qué significa esto? Esto significa que si no
se inicializa
esta variable prompt,
esta sintaxis significa, bien, inicializarla para que sea esta para
ser lo que devuelve esta entrada de chat Esto es solo un marcador como vas a
ver en un momento Entonces lo que escribimos aquí va a ser asignado a este prompt. Bien. Entonces ahora vamos a anexar a los mensajes de
estado de sesión, lista este diccionario
aquí aquí porque como
voy a introducir algo,
yo soy el usuario Entonces el rol será el
usuario y el contenido será lo que se le asigne
en este prompt. Genial. Entonces lo agregamos, pero ahora tenemos que
mostrarlo en la pantalla. Entonces con SD, el mensaje de chat, y esta vez
va a ser el usuario. Voy a marcar
el aviso. Entonces voy a mostrar
lo que escribí, básicamente. Entonces voy a mostrar
lo que responde el asistente. Con mensaje de chat ST, asistente, voy a obtener la
respuesta y la respuesta va a ser recuperada
con el agente y recuerda que
construimos este método chat chat y pasamos el prompt y esto devuelve algo que
tiene un atributo response. Ahora vamos a imprimir
la respuesta y finalmente, vamos a anexar a mensajes de estado de sesión
la respuesta, pero con el papel
de asistente Entonces eso es todo. Acabamos construir esta app en
33 líneas de código. Y para poder ejecutar esto, asegúrate de que en tu terminal, cierra la terminal y asegúrate volver
a abrirla y
que muestre esto. Esto quiere decir que usted está dentro del entorno virtual, señor. Y si no ves eso, también
puedes escribir PDM use lo siento, PDM Ben B ENV y
PDM BENV activan Ese es el comando. Así que imprime el comando para activar
el entorno virtual. Así que
básicamente tendrás que escribir esto
y pegarlo. Bien. Entonces ahora estoy dentro de un entorno
virtual. Bien. Entonces deberías ver esto. Cuando veas esto o si no tienes CSH
o Mac, solo tienes que escribir esto Obviamente, con un comando
correcto, escribirás stream
it run up dot PY. Esto abrirá este chat aquí, pero algo anda mal. Entonces déjame ver qué es recurso de
caché, no caché. Así que intentemos de nuevo. Bien, entonces agreguemos
algo que me perdí, y va a ser
un azulejo solo para ver esto un poco más agradable Entonces st Tile Archive,
Papers, Chatbot, si. Ese es un buen nombre. Entonces espero que si estás fresco,
veas este título. Bien, entonces como te dije, este es un marcador de posición
para la entrada del chat Pero aquí puedo escribir cualquier cosa. Voy a decir, ¿puedes buscar papeles relacionados con la mecánica
cuántica Y recuerden, la mecánica
cuántica
no está en la base de conocimientos. Entonces aquí se
muestra este pequeño icono por indicar
que soy el usuario, y este es el asistente. Y aquí, voy
a agregar algo más solo para que sea un
poco mejor. En primer lugar, creo
que devolvió la respuesta, pero quiero ser
más fácil de usar. Y aquí en esta línea, voy a decir
con st dot spinner, y voy a decir pensando. Entonces, si bien esto no lo es, mientras el agente esté pensando, vamos a mostrar spinner que sea más fácil de usar. Déjame copiar esto
y hacerlo de nuevo. Pensando con un spinner. Porque recuerda
estos lleva algún tiempo. Esta es una
forma más fácil de usar para mostrar el resultado. Veamos qué son los lotes. Entonces sí, creo que terminó, o creo que se equivocó
por alguna razón Detengamos esto y
ejecutemos esto de nuevo y volvamos a hacer
la misma pregunta. ¿Se pueden buscar papeles relacionados con
la mecánica cuántica? Entonces está usando la herramienta fetch from Archive,
pero sigue pensando Entonces esperemos un momento, y ahí tienes.
Esta es la respuesta. Bien, entonces ahora tenemos una interfaz de usuario para ver los
resultados de nuestro arduo trabajo. Espero que les guste este video, nos vemos en la siguiente lección.
18. Obtén una clave API de Pinecone: Hola y bienvenidos de nuevo.
Así que ahora vamos a almacenar nuestro
índice en Pine Ce. Por lo que el cono de pino es un servicio en
la nube para almacenar índices. Eso significa que es una base de
datos vectorial en la nube. Entonces, como dice aquí, puedes construir IA conocedora con su
base de datos vectoriales en el núcleo Pine cone es la plataforma de
conocimiento líder para crear aplicaciones de
IA precisas, seguras y escalables. Para que puedas crear
una cuenta gratuita. Obviamente, esto tiene un nivel gratuito. Puedes elegir el plan de
inicio para probar y para
aplicaciones pequeñas. Es gratis. Tienes Pinec serverless, tienes Pinec inferencia y asistente que son algunos productos
que están construyendo, y tienes que usar la región EU east
uno de ocho de nosotros Puedes comenzar gratis, crear
una cuenta y luego iniciar sesión. Voy a hacer eso por mi cuenta. Aquí, Y entonces lo que vamos a hacer aquí
es crear un índice. Da click en este botón,
crea un índice, y voy a decir Investigación de
archivo. Aquí puedes configurar las
dimensiones de esos vectores. Recuerde, los vectores
tienen dimensiones. Esas son las incrustaciones, o puedes elegir un preset Recuerda, estamos usando
incrustación de texto tres grandes, así que solo podemos elegir esto
directamente. Y mira esto. Las dimensiones se
rellenan automáticamente con 3,072 Entonces esa es la dimensión de las incrustaciones cuando
usamos este modelo embed Sin servidor.
Voy a elegir Ws. Puedo elegir otros
proveedores de Cloud porque
estoy en el plan pago y
puedo elegir otras regiones. Pero si estás usando
la capa gratuita, entonces solo vas
a poder usar AWS
USPara que puedas habilitar la protección de eliminación para evitar que
cualquier usuario
elimine accidentalmente este índice Como voy a borrar esto cualquier manera, no importa. Bien. Ahora creaste
tu índice en la Nube. Ahora necesitas algunas claves API. Creé una clave API.
Se le puede dar un nombre. Puedes darle permisos personalizados o si no quieres
complicarte por ahora, solo dale todos los permisos, y luego tendrás
que copiarlo y copiarlo en un lugar seguro En la siguiente lección,
lo que vamos a hacer es crear otra
clase llamada Index manager piñecone que herede del gestor de
índices y
hacer algunos retoques con el fin de guardar los datos en fin de guardar los datos
19. Crea un administrador de índices para Pinecone: Hola, y bienvenidos de nuevo.
Entonces, antes que nada, hagamos un compromiso
para salvar nuestro trabajo. Así que ponte en Git commit, y olvidé lo que hicimos. Entonces, oh, sí,
construimos, lo transmitimos. Eso es lo que hicimos.
Hacemos un empujón Git. Bien. Entonces lo que vamos a hacer ahora es instalar
dos dependencias, en
primer lugar, que necesitamos para poder usar piece En primer lugar, necesitamos
al cliente de piñas, y también vamos a necesitar el índice Lama vector
stores piñecone Entonces dejemos que PDM haga el trabajo pesado aquí e
instale esas dependencias La otra cosa es
que vamos a crear un index manager
pinecone dot Y vamos a crear otra clase llamada
index manager Pine cone. Pero aquí vamos a usar
herencia y
vamos a heredar del gestor
de índices Así que vamos a heredar algunos métodos de la clase
index manager Entonces en ese constructor, vamos a necesitar, nuevamente, el modelo embed, el nombre del índice de la piña que
acabamos Vamos a llamar al constructor
padre, y el constructor padre
solo necesita el modelo embed. Y vamos a crear
una instancia de cono de pino. este momento, no se está mostrando
porque está instalando, pero vamos a importarlo formas. Entonces desde Piña, vamos a importar
esta piña. Bueno, terminó instalado, así que ahora reconoce. Entonces vamos a
necesitar la clave API. Y eso va a obtener de las variables de entorno.
Nosotros no hicimos eso. No sé por qué está haciendo
esto. Nosotros no hicimos eso. Vamos a poner aquí en punto ejemplo
ENB, pin cone, API key aquí en el ENB, vamos a poner
lo mismo pero con el valor real Entonces ya tengo
mi clave API copiada. Por lo que también debes copiarlo
va a pegarlo aquí. Y obviamente, voy
a borrarlo más tarde. Bien. Entonces, para poder
cargar esa clave API, necesitamos descargar punto m. así que vamos a
importar desde punto EM Vamos a cargar puerto
punto M. Vamos a llamar a eso para obtener el entorno
b de ese archivo EMV Genial. Ahora lo que
vamos a hacer es decir self dot Pine Ce Index, pc dot index, y vamos
a pasar el nombre del índice. Entonces vamos a
inicializar el almacén de vectores
como tienda Vctor de piñas, y necesitamos importarlo Vamos a importar eso de Lama index dot vectorstores
dot Pine cone,
Import Pine Cone Vector store.
Bien. Entonces esta tienda de vectores, necesitamos pasar el índice de
piñas,
que va a ser el índice de piñas
auto punto,
lo que aquí definimos lo También necesitamos el contexto
de almacenamiento. Voy a decir contexto de
almacenamiento de autopunto igual a, y necesitamos importar el contexto de almacenamiento desde el núcleo de punto índice
Lama, importar el contexto almidón Contexto de almacenamiento de valores predeterminados, y vamos a pasar
esta vez el almacén de vectores Bien. Genial. Entonces lo que hemos
hecho hasta ahora es llamar al constructor de
este gestor de índices y asignar algunas otras
variables aquí. Ahora necesitamos escribir el método create index
desde el gestor de índices. Recuerda, tenemos
este índice de creación. Tenemos que reescribir eso porque ahora vamos a guardar cosas en Pine C. Entonces hacemos lo mismo Inicializamos un MTRray. Llamamos a crear
documentos a partir de papeles, y establecemos los ajustes para esto. También tenemos que importar
ajustes. Consigamos ajustes
desde aquí también. Por último, pero no menos importante, vamos a
subir los vectores Auto o vector lo siento, vector store index, que creo que también necesitamos
importar de aquí. Índice de tienda vectorial. Que lo que vamos a hacer aquí es a partir de documentos
como lo hicimos aquí. Bien. De documentos. Estamos en el índice de
puntos propios así. Documentos autopunteados. El contexto de almacenamiento
va a ser contexto de almacenamiento de puntos
propios
y el modelo de incrustación o el modelo de incrustación
será el modelo de incrustación de punto automático. Bien. Ahí vas. Para recuperar el índice, solo
vamos a devolver punto de índice de almacén
vectorial
de la tienda vectorial, y vamos a
pasar la tienda de vectores,
que es la tienda de vectores de self dot y la embed que va
a ser el modelo Embed de self dot. Eso es. Esto es todo lo que
tenemos que hacer para, um upsert datos y recuperar
el índice de Pin C. Así que si vamos aquí
a la base de datos,
archivo para búsqueda, no hay registros todavía Entonces lo que vamos a hacer es crear un cuaderno de Júpiter, que se va a llamar Pine C y en este cuaderno de
UPiTER, lo que vamos a hacer es mejorar
los vectores. Desde constance, vamos a
importar el modelo embed. Seleccionemos primero el kernel. También vamos a desde el gestor de índice piñas importar el índice, gestor
de índice
piñecone , gestor
de índice Vamos a crear
una instancia de
ese gestor de índice de clase PyCon, pasamos el modelo embed y
pasamos el nombre del índice, que en nuestro caso es Archive
research, Archive research Y ahora vamos
a buscar los papeles,
buscar papeles , modelos de lenguaje Vamos a
buscar los últimos 101. Buscamos los papeles
y ahora estamos listos para crear el índice Vamos a crear el índice. Se puede ver, vaya,
tenemos un error, y eso es porque dice, creo que esto tiene
que ser modelo incrustar, no incrustar ese modelo Vamos a intentarlo de nuevo. A ver si eso
resuelve el problema. Sí, así que por alguna razón, este es el modelo embed, pero la finalización
automática no
funcionó para mí. Así incrustar modelo, no incrustar. El modelo Embed
actualizará los vectores. Se puede ver ahora que hemos upserted esos vectores en el espacio de nombres
por defecto Y puedes ver aquí el vector. Estos son básicamente solo valores. Aquí hay 3,072 de
estos números, y esto tiene algunos metadatos, contenido de
nodo y tipo de nodo, documento, ID de documento, etc. Entonces básicamente, estos son vectores. Tenemos diez de
ellos, diez vectores. Estas son incrustaciones. Eso es. No hay más magia en ello. También podemos recuperar
el índice haciendo este gestor de índice recuperar Index y BLA
recuperamos el índice, y también podemos imprimir la lista de los papeles
que hemos obtenido. Entonces ya puedes ver
que es diferente. Se puede ver el video Panda. En realidad, aquí vamos a hacer algún cambio porque
esto es difícil de leer. A ver. Vamos al encargado
del índice, y aquí vamos a decir por papel por papel en papeles. Simplemente imprima el
azulejo de papel. Relleno de los papeles. Bien. Entonces eso es todo. Eso es todo lo que tenemos que hacer. Esto no va a reflejarse tristemente porque tenemos
que reiniciar el kernel. Entonces hagamos este gestor
de índices. Lo siento. Y no vamos
a ir a buscar Bueno,
sí, vamos a buscar los papeles, pero vamos a crear no volvamos a
crear el índice Sólo voy a enumerar los
papeles y aquí está. Estos son los papeles
que tenemos ahora mismo. Ahora lo que vamos
a hacer es comprometernos para salvar nuestro progreso. Agrega el gestor de índices
Pinec y consigue push. Eso es todo para este video. Espero que les guste, y
continuemos con la siguiente lección.
20. Uso del índice de pinecone en la aplicación Streamlit: Genial. Ahora tenemos nuestros
vectores en Cono de pino. Tenemos estos datos,
estos títulos en Pino C. Test. Probemos si esto realmente
está funcionando. Así que en nuestra app streamlt, al inicializar nuestro agente, en lugar de usar
el gestor de índices, vamos a usar la pinecone del gestor de
índices Bien. Entonces tenemos que
pasar el nombre del índice, que va a ser investigación de
archivo. Ese es el único cambio que
tenemos que hacer para ahora obtener los
datos del Pin C.
Probemos este
streamlt run up dot PI Veamos cuál es el
resultado ahora. Entonces voy a usar esta vez
esta plantilla de consulta que
usamos la última vez, que está aquí. A ver. Entonces,
reemplacemos esto. Estoy interesado en multi modelo y modelos
multi modelo. Entonces veamos si el agente es capaz de
recuperar información de este
índice
de piñas y recuperar aquellos papeles que están relacionados con Si vemos aquí, ¿dónde está eso? Icono. Estos son los papeles
de los modelos lingüísticos. Dice que aquí
hay algunos trabajos recientes
relacionados con modelos multimodales Traducción
y reconocimiento de voz de recursos cero con LMS y generación de
voz de forma larga con modelos de lenguaje hablado Tenemos uno de ellos.
¿Dónde está eso? Esta, generación de
voz de forma larga con modelos de lenguaje hablado, y la otra es
¿cuál es el otro nombre? de
voz de recursos
cero, traducción de voz de recursos cero
y reconocimiento con LM. Podría recuperar con éxito los datos de PyCon.
No es tan emocionante. Eso es. Ahora hemos
construido un agente que almacena el índice en la nube. Recupera eso y
funciona perfectamente. Espero que les guste esta lección
y nos veamos en la siguiente.
21. Implementa la aplicación para simplificar la nube comunitaria: Hola, y bienvenidos de nuevo. Entonces ahora
lo que vamos a hacer es implementar nuestra app en
streaming Community Cloud Como puedes ver, en
la landing page, el
despliegue en Community
Cloud es gratuito. Es gratis. Entonces solo tienes que
registrarte, crear una cuenta, conectar tu cuenta de GitHub, y luego
podrás encontrar el repositorio Tiene que estar en tu
cuenta de Github e implementar esa app. Es un proceso muy, muy fácil. Entonces lo que voy a
hacer ahora mismo antes de hacer esto es crear un archivo TXT punto
requisitos. ¿Por qué? Porque Streamlt
Community Cloud espera un archivo de texto de requisitos para instalar todas las dependencias No reconoce
este archivo de registro pdmt, así que tal vez en el
futuro, lo harán, pero por ahora, necesitan los
requisitos punto textFile Entonces PDM tiene este comando de exportación. Entonces, si escribe esto, va a
imprimirlo en la terminal, pero queremos
que esté en un archivo. Entonces usamos este símbolo
mayor que y decimos, Bien, queremos que en
requisitos punto texto. Entonces, si abres este archivo, va a tener
todas las dependencias que están en el registro PDM, pero como requisito
punto archivo TXT Hagamos una confirmación
de un archivo
TXT de punto de requisitos. Vamos a empujar. Y ahora vamos a la Streamed Community
Cloud al dashboard Una vez que te registres, regístrate, conecta tu
cuenta de GitHub y puedes hacer
clic en este botón que
dice crear App. Voy a elegir esta opción, que es desplegar una app
pública desde GitHub. Entonces voy a buscar al investigador de
Archivo Ripple. Recuerda, esta es mi Ripple. Voy a decir que la ruta
principal del archivo es app dot PY, y este es un subdominio
elegido aleatoriamente Tu dominio va a
ser esta que stream app. Puedes hacer clic en Deploy y eso va a
implementar tu app. Pero esto no
va a funcionar en
estos momentos porque tenemos que
poner canicas ambientales Recuerda que necesitamos
la clave API OpenAI
y la
clave API Pine hone para que esto funcione Si vuelves a compartir ese
stream dot IO y haces clic en la configuración del proyecto
y vas a secreto, vas a poder establecer los secretos o las burbujas del
entorno aquí. Voy a copiar y fasear, pero hay que
ponerlos entre comillas. De lo contrario, se
va a quejar. Guarda los cambios, y ahora la app se va a implementar con esas burbujas de
entorno. Voy a dar click aquí Si
haces clic en esta app de gestión, vas a ver que instaló las dependencias a
partir de requisitos Instalo todo esto
y las dependencias de Python se instalaron desde requisitos
punto TXT, y eso es todo. Ahora puedes
saludar al chat. trata de un LLM, por lo
que sabrá que no necesita ninguna base de conocimientos para
poder responder al hola Ahora vamos a usar la
plantilla que teníamos aquí. Pero solo para tener en cuenta
que no necesitas esto, puedes experimentar
con otras plantillas, pero esta es la que funciona ahora mismo, así que
voy a usar esto. Estoy interesado en
modelos multi modelo aquí, multi modelos. A ver si
puede procesar esto. Espero que los registros se muestren aquí, pero no estoy seguro de por
qué no se muestra. Déjame refrescar esto. Voy a copiar esto y refrescar solo para ver que
hay algo en esto. Sí. Si eso no funciona, voy a reiniciar la
app para ver si eso funciona. Bueno, esta vez funcionó, pero aquí no veo los registros. Por lo general los registros se muestran aquí, pero no estoy seguro de por qué no
se muestran en este momento. Pero de todos modos, respondió con uno de los papeles de
la base de conocimiento. Recuerde, esta generación de
habla no forma con los
modelos de lenguaje hablado estaba en la base de conocimiento.
Entonces eso es todo. Ahora puedes compartir este enlace con tus amigos y dejar que te
prueben la app. Espero que les guste este video, nos vemos en la siguiente lección.
22. Conclusión: Enhorabuena por
terminar este curso. Gracias por unirse a
este viaje para aprender a crear agentes de IA. Ya sabes cómo son las herramientas para construir, mejorar e implementar soluciones de IA con aplicaciones del mundo real. Sigue experimentando,
sigue curioso y recuerda que las posibilidades
con la IA son infinitas ¿Cuáles son los siguientes pasos? Aplica tus conocimientos a proyectos del mundo
real. Esa es la mejor manera de aprender. Comparta sus logros y conéctese con la
comunidad y siga
aprendiendo y manténgase actualizado
sobre los avances de la IA Tus comentarios importan. Por favor, tómate un momento para dejar una reseña o compartir tus pensamientos. Tus comentarios ayudan a mejorar este curso y el contenido futuro, y no
olvides mantenerte conectado. Comunícate con preguntas, ideas de
proyectos o simplemente
para compartir tu progreso. Juntos, podemos hacer que la IA sea
accesible y le doy una palmada a C.