LangChain é unha ferramenta de vangarda e robusta desenvolvida para aproveitar o poder dos grandes modelos de linguaxe (LLM).
Estes LLM posúen capacidades notables e poden afrontar de forma eficiente unha gran variedade de tarefas. Non obstante, é importante ter en conta que a súa fortaleza reside na súa natureza xeral e non na experiencia do dominio en profundidade. A súa popularidade creceu rapidamente desde a introdución de GPT-4.
Aínda que os LLM destacan no manexo de varias tarefas, poden enfrontarse a limitacións á hora de proporcionar respostas específicas ou abordar tarefas que requiren un profundo coñecemento do dominio. Considere, por exemplo, utilizar un LLM para responder preguntas ou realizar tarefas en campos especializados como a medicina ou o dereito.
Aínda que o LLM certamente pode responder a preguntas xerais sobre estes campos, pode ter dificultades para ofrecer respostas máis detalladas ou matizadas que precisen coñecementos ou experiencias especializadas.
Isto débese a que os LLM están adestrados en grandes cantidades de datos de texto de diversas fontes, o que lles permite aprender patróns, comprender o contexto e xerar respostas coherentes. Non obstante, a súa formación normalmente non implica a adquisición de coñecementos específicos ou especializados na mesma medida que os expertos humanos neses campos.
Polo tanto, aínda que LangChain, xunto cos LLM, pode ser unha ferramenta inestimable para unha ampla gama de tarefas, é importante recoñecer que aínda pode ser necesaria unha profunda experiencia de dominio en determinadas situacións. Os expertos humanos con coñecementos especializados poden proporcionar a profundidade necesaria, a comprensión matizada e os coñecementos específicos do contexto que poden estar máis aló das capacidades dos LLM só.
Recomendamos consultar os documentos de LangChain ou GitHub repositorio para unha comprensión máis completa dos seus casos de uso típicos. Recoméndase encarecidamente obter unha imaxe máis ampla deste paquete.
Como funciona?
Para comprender o propósito e o traballo de LangChain, consideremos un exemplo práctico. Somos conscientes de que GPT-4 ten un coñecemento xeral impresionante e pode proporcionar respostas fiables a unha gran variedade de preguntas.
Non obstante, e se queremos información específica dos nosos propios datos, como un documento persoal, un libro, un ficheiro PDF ou unha base de datos propietaria?
LangChain permítenos conectar un gran modelo lingüístico como GPT-4 ás nosas propias fontes de datos. Vai máis alá de simplemente pegar un fragmento de texto nunha interface de chat. Pola contra, podemos facer referencia a unha base de datos completa chea cos nosos propios datos.
Unha vez que obtemos a información desexada, LangChain pode axudarnos a tomar accións específicas. Por exemplo, podemos indicarlle que envíe un correo electrónico que conteña certos detalles.
Para logralo, seguimos un enfoque de pipeline usando LangChain. En primeiro lugar, tomamos o documento que queremos modelo lingüístico para referencialo e dividilo en anacos máis pequenos. Estes anacos almacénanse despois como incrustacións, que son representacións vectoriais do texto, nunha base de datos vectorial.
Con esta configuración, podemos construír aplicacións de modelos lingüísticos que seguen unha canalización estándar: un usuario fai unha pregunta inicial, que despois se envía ao modelo de linguaxe. A representación vectorial da pregunta úsase para realizar unha busca de semellanza na base de datos de vectores, recuperando os anacos de información relevantes.
Estes anacos son entón retroalimentados ao modelo lingüístico, o que lle permite proporcionar unha resposta ou realizar a acción desexada.
LangChain facilita o desenvolvemento de aplicacións que sexan conscientes dos datos, xa que podemos facer referencia aos nosos propios datos nunha tenda de vectores, e auténticas, xa que poden tomar accións máis aló de responder preguntas. T
o seu abre multitude de casos prácticos de uso, especialmente na asistencia persoal, onde un gran modelo lingüístico pode xestionar tarefas como reservar voos, transferir diñeiro ou axudar en asuntos relacionados coa fiscalidade.
Ademais, as implicacións para estudar e aprender novas materias son significativas, xa que un modelo lingüístico pode facer referencia a un programa completo e acelerar o proceso de aprendizaxe. Tamén se espera que a codificación, a análise de datos e a ciencia de datos estean moi influenciados por estes avances.
Unha das perspectivas máis interesantes é conectar grandes modelos lingüísticos aos datos da empresa existentes, como información de clientes ou datos de mercadotecnia. Esta integración con API avanzadas como a API de Meta ou a API de Google promete un progreso exponencial na análise de datos e na ciencia de datos.
Como crear unha páxina web (demo)
Actualmente, Langchain está dispoñible como paquetes Python e JavaScript.
Podemos crear unha aplicación web de demostración utilizando Streamlit, LangChain e o modelo OpenAI GPT-3 para implementar o concepto LangChain.
Pero primeiro, debemos instalar algunhas dependencias, incluíndo Streamlit, LangChain e OpenAI.
Prerrequisitos
Transmisión: Un paquete popular de Python para crear aplicacións web relacionadas coa ciencia de datos
OpenAI: É necesario acceder ao modelo de linguaxe GPT-3 de OpenAI.
Para instalar estas dependencias, use os seguintes comandos en cmd:
pip install streamlit
pip install langchain
pip install openai
Importar paquetes
Comezamos importando os paquetes necesarios, como OpenAI, LangChain e Streamlit. As nosas cadeas de modelos de linguaxe defínense e execútanse mediante tres clases de LangChain: LLMChain, SimpleSequentialChain e 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
A base estrutural do noso proxecto púxose entón usando a sintaxe Streamlit. Puxemos á aplicación o título "Que é VERDADEIRO: Usando cadea secuencial simple" e incluímos unha ligazón de rebaixa ao repositorio de GitHub que serviu de inspiración para a aplicación.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets front-end
Configuramos a aplicación con pouca información relevante, usando a sintaxe sinxela de Streamlit:
# 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 engadir widgets front-end
Ademais, necesitamos proporcionar un widget de entrada para que os nosos usuarios poidan introducir calquera 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 feito! As cadeas están en marcha!
Empregamos varias cadeas de operacións xunto con SimpleSequentialChain
para responder á consulta do usuario. As cadeas realízanse na seguinte secuencia cando o usuario selecciona a "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 é o primeiro paso do noso pipeline, recibe a pregunta do usuario como entrada e saída. A consulta do usuario serve como modelo da cadea.- A partir dunha afirmación vinculada á pregunta, o
assumptions_chain
xera unha lista con viñetas de supostos utilizando a saída doquestion_chain
como entrada. OLLMChain
OpenAI
utilizouse o modelo de LangChain para construír a declaración. O usuario ten a tarefa de crear unha lista dos supostos que se fixeron para producir a declaración usando o modelo para esta cadea. - Con base nas saídas do
question_chain
assumptions_chain
, Ofact_checker_chain
xera unha lista de afirmacións en forma de viñetas. As reclamacións realízanse mediante oOpenAI
modelo eLLMChain
de LangChain. O usuario ten a misión de determinar se cada reclamación é precisa ou incorrecta e de xustificar as que o son. - o
answer_chain
utiliza as saídas doquestion_chain
,assumptions_chain
efact_checker_chain
como entradas para crear unha resposta á pregunta do usuario utilizando os datos producidos polas cadeas anteriores. O modelo desta cadea solicita que o usuario responda á primeira consulta utilizando os feitos que se crearon. - Co fin de proporcionar a resposta definitiva á consulta do usuario baseándose na información producida polas cadeas anteriores, integramos estas cadeas na cadea global. Despois de completar as cadeas, usamos
st.success()
para mostrarlle ao usuario a solución.
Conclusión
Simplemente podemos encadear diferentes accións de modelos de linguaxe para crear canalizacións máis complicadas usando o SimpleSequentialChain
módulo de LangChain. Para unha gran variedade de aplicacións de PNL, incluíndo chatbots, sistemas de preguntas e respostas e ferramentas de tradución de idiomas, isto pode ser moi útil.
O brillo de LangChain atópase na súa capacidade de abstraer, o que lle permite ao usuario concentrarse no tema actual en lugar dos específicos do modelado lingüístico.
LangChain fai que o proceso de creación de modelos de linguaxe sofisticados sexa máis fácil de usar ofrecendo modelos adestrados previamente e unha selección de modelos.
Ofrécelle a opción de afinar os modelos de idioma utilizando os seus propios datos, facilitando a personalización dos modelos de idioma. Isto permite o desenvolvemento de modelos máis precisos e específicos de dominio que, para un determinado traballo, superan os modelos adestrados.
o SimpleSequentialChain
módulo e outras características de LangChain convérteno nunha ferramenta eficaz para desenvolver e implantar rapidamente sistemas de PNL sofisticados.
Deixe unha resposta