Índice del contenido[Esconder][Espectáculo]
LangChain es una herramienta robusta y de vanguardia desarrollada para aprovechar el poder de los modelos de lenguaje grande (LLM).
Estos LLM poseen capacidades notables y pueden abordar de manera eficiente una amplia gama de tareas. Sin embargo, es importante tener en cuenta que su fuerza radica en su naturaleza general en lugar de una experiencia de dominio profunda. Su popularidad ha crecido rápidamente desde la introducción de GPT-4.
Si bien los LLM se destacan en el manejo de varias tareas, pueden enfrentar limitaciones cuando se trata de proporcionar respuestas específicas o abordar tareas que requieren un conocimiento profundo del dominio. Considere, por ejemplo, utilizar un LLM para responder preguntas o realizar tareas dentro de campos especializados como medicina o derecho.
Si bien el LLM ciertamente puede responder a consultas generales sobre estos campos, puede tener dificultades para ofrecer respuestas más detalladas o matizadas que requieran conocimientos o experiencia especializados.
Esto se debe a que los LLM están capacitados en grandes cantidades de datos de texto de diversas fuentes, lo que les permite aprender patrones, comprender el contexto y generar respuestas coherentes. Sin embargo, su formación no suele implicar la adquisición de conocimientos especializados o específicos de un dominio en la misma medida que los expertos humanos en esos campos.
Por lo tanto, si bien LangChain, junto con los LLM, puede ser una herramienta invaluable para una amplia gama de tareas, es importante reconocer que una profunda experiencia en el dominio aún puede ser necesaria en ciertas situaciones. Los expertos humanos con conocimientos especializados pueden proporcionar la profundidad necesaria, la comprensión matizada y los conocimientos específicos del contexto que podrían estar más allá de las capacidades de los LLM por sí solos.
Recomendamos consultar los documentos de LangChain o GitHub repositorio para una comprensión más profunda de sus casos de uso típicos. Se recomienda encarecidamente obtener una imagen más grande de este paquete.
¿Cómo funciona?
Para comprender el propósito y el trabajo de LangChain, consideremos un ejemplo práctico. Somos conscientes de que GPT-4 tiene un conocimiento general impresionante y puede proporcionar respuestas confiables a una amplia gama de preguntas.
Sin embargo, ¿qué pasa si queremos información específica de nuestros propios datos, como un documento personal, un libro, un archivo PDF o una base de datos propietaria?
LangChain nos permite conectar un modelo de lenguaje grande como GPT-4 a nuestras propias fuentes de datos. Va más allá de simplemente pegar un fragmento de texto en una interfaz de chat. En cambio, podemos hacer referencia a una base de datos completa con nuestros propios datos.
Una vez que obtengamos la información deseada, LangChain puede ayudarnos a tomar acciones específicas. Por ejemplo, podemos indicarle que envíe un correo electrónico que contenga ciertos detalles.
Para lograr esto, seguimos un enfoque de tubería utilizando LangChain. Primero, tomamos el documento que queremos que modelo de lenguaje para hacer referencia y dividirlo en partes más pequeñas. Estos fragmentos luego se almacenan como incrustaciones, que son representaciones vectoriales del texto, en una base de datos vectorial.
Con esta configuración, podemos crear aplicaciones de modelo de lenguaje que sigan una canalización estándar: un usuario hace una pregunta inicial, que luego se envía al modelo de lenguaje. La representación vectorial de la pregunta se utiliza para realizar una búsqueda de similitud en la base de datos vectorial, recuperando los fragmentos de información relevantes.
Luego, estos fragmentos se retroalimentan al modelo de lenguaje, lo que le permite proporcionar una respuesta o realizar la acción deseada.
LangChain facilita el desarrollo de aplicaciones conscientes de los datos, ya que podemos hacer referencia a nuestros propios datos en un almacén de vectores, y auténticas, ya que pueden tomar acciones más allá de responder preguntas. T
Esto abre una multitud de casos de uso práctico, particularmente en asistencia personal, donde un modelo de lenguaje grande puede manejar tareas como reservar vuelos, transferir dinero o ayudar con asuntos relacionados con impuestos.
Además, las implicaciones para estudiar y aprender nuevas materias son significativas, ya que un modelo de lenguaje puede hacer referencia a un programa completo y acelerar el proceso de aprendizaje. También se espera que la codificación, el análisis de datos y la ciencia de datos se vean muy influenciados por estos avances.
Una de las perspectivas más interesantes es la conexión de grandes modelos lingüísticos con los datos existentes de la empresa, como la información del cliente o los datos de marketing. Esta integración con API avanzadas como la API de Meta o la API de Google promete un progreso exponencial en el análisis de datos y la ciencia de datos.
Cómo construir una página web (demostración)
Actualmente, Langchain está disponible como paquetes de Python y JavaScript.
Podemos crear una aplicación web de demostración utilizando Streamlit, LangChain y el modelo OpenAI GPT-3 para implementar el concepto LangChain.
Pero primero, debemos instalar algunas dependencias, incluidas Streamlit, LangChain y OpenAI.
Pre-requisitos
iluminado: Un popular paquete de Python para crear aplicaciones web relacionadas con la ciencia de datos
IA abierta: Se necesita acceso al modelo de lenguaje GPT-3 de OpenAI.
Para instalar estas dependencias, use los siguientes comandos en cmd:
pip install streamlit
pip install langchain
pip install openai
Paquetes de importación
Comenzamos importando los paquetes necesarios, como OpenAI, LangChain y Streamlit. Nuestras cadenas de modelos de lenguaje se definen y ejecutan utilizando tres clases de LangChain: LLMChain, SimpleSequentialChain y PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Configuración básica
La base estructural de nuestro proyecto se puso entonces usando la sintaxis Streamlit. Le dimos a la aplicación el título "Qué es VERDADERO: uso de cadena secuencial simple" e incluimos un enlace de descuento al repositorio de GitHub que sirvió como inspiración para la aplicación.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets frontales
Configuramos la aplicación con poca información relevante, utilizando la sintaxis Streamlit simple:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
Para agregar widgets frontales
Además, debemos proporcionar un widget de entrada para permitir que nuestros usuarios ingresen cualquier pregunta.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
¡Todo listo! ¡Las cadenas están funcionando!
Empleamos varias cadenas de operaciones junto con SimpleSequentialChain
para responder a la consulta del usuario. Las cadenas se realizan en la siguiente secuencia cuando el usuario selecciona el "Tell me about it"
botón:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: que es el primer paso en nuestra canalización, recibe la pregunta del usuario como entrada y salida. La consulta del usuario sirve como plantilla de la cadena.- Sobre la base de una declaración vinculada a la pregunta, el
assumptions_chain
genera una lista de viñetas de suposiciones utilizando la salida de laquestion_chain
como entrada ElLLMChain
yOpenAI
Se usó el modelo de LangChain para construir la declaración. El usuario tiene la tarea de crear una lista de las suposiciones que se hicieron para producir la declaración utilizando la plantilla para esta cadena. - Sobre la base de las salidas de la
question_chain
yassumptions_chain
, lafact_checker_chain
genera una lista de afirmaciones en forma de viñetas. Las reclamaciones se producen utilizando elOpenAI
modelo yLLMChain
de LangChain. El usuario tiene la tarea de determinar si cada reclamo es exacto o incorrecto y proporcionar la justificación de los que lo son. - El
answer_chain
utiliza las salidas delquestion_chain
,assumptions_chain
yfact_checker_chain
como entradas para crear una respuesta a la pregunta del usuario utilizando los datos producidos por las cadenas anteriores. La plantilla para esta cadena solicita que el usuario responda a la primera consulta utilizando los hechos que se crearon. - Con el fin de proporcionar la respuesta definitiva a la consulta del usuario en función de la información producida por las cadenas anteriores, integramos estas cadenas en la cadena general. Después de completar las cadenas, usamos
st.success()
para mostrar al usuario la solución.
Conclusión
Simplemente podemos encadenar diferentes acciones del modelo de lenguaje para crear canalizaciones más complicadas usando el SimpleSequentialChain
módulo de LangChain. Para una amplia variedad de aplicaciones de NLP, incluidos chatbots, sistemas de preguntas y respuestas y herramientas de traducción de idiomas, esto puede ser muy útil.
La brillantez de LangChain se encuentra en su capacidad de abstracción, lo que permite que el usuario se concentre en el problema actual en lugar de en los detalles específicos del modelado del lenguaje.
LangChain hace que el proceso de creación de modelos de lenguaje sofisticados sea más fácil de usar al ofrecer modelos previamente entrenados y una selección de plantillas.
Le da la opción de ajustar los modelos de lenguaje utilizando sus propios datos, lo que simplifica la personalización de los modelos de lenguaje. Esto permite el desarrollo de modelos específicos de dominio más precisos que, para un trabajo determinado, superan a los modelos entrenados.
El SimpleSequentialChain
El módulo y otras características de LangChain lo convierten en una herramienta eficaz para desarrollar e implementar rápidamente sistemas sofisticados de NLP.
Deje un comentario