referencia:
1. Resumen:
Cree un chatbot chatGPT para varios archivos PDF de gran tamaño utilizando la nueva API GPT-4.
La pila de tecnología utilizada incluye LangChain, Pinecone, Typescript, Openai y Next.js. LangChain es un marco que facilita la creación de chatbots y aplicaciones de modelos de lenguaje grandes de IA/LLM escalables. Pinecone es un almacén de vectores para almacenar archivos PDF incrustados y con formato de texto para su posterior recuperación de documentos similares.
2. Trabajos de preparación:
Clave API de OpenAI GPT-3.5 o GPT-4 openai
Clave API de Pinecone/Entorno/Índice de piña
Los índices para los usuarios del plan Pinecone Starter (gratuito) se eliminan después de 7 días. Para evitar esto, envíe una solicitud API a Pinecone hace 7 días para restablecer el contador. Puedes seguir usándolo gratis.
3. Clona o descarga el proyecto gpt4-pdf-chatbot-langchain
git clone https://github.com/mayooear/gpt4-pdf-chatbot-langchain.git
4. Instalar paquetes de dependencia
Utilice npm para instalar hilo. Si no tiene npm, consulte la guía de instalación.
Introducción e instalación rápida de npm/Node.js-Blog de Linux CentOS_Entropy-Go-Blog de CSDN
npm install yarn -g
Luego use hilo para instalar paquetes dependientes.
Ingrese al directorio raíz del proyecto y ejecute el comando
yarn install
Después de una instalación exitosa, puede ver el directorio node_modules
gpt4-pdf-chatbot-langchain-main$ ls -a
. declarations .eslintrc.json node_modules .prettierrc styles utils yarn.lock
.. docs .gitignore package.json public tailwind.config.cjs venv
components .env .idea pages README.md tsconfig.json visual-guide
config .env.example next.config.js postcss.config.cjs scripts types yarn-error.log
5.Configuración del entorno
Copie .env.example en el archivo de configuración .env
OPENAI_API_KEY=sk-xxx
# Update these with your pinecone details from your dashboard.
# PINECONE_INDEX_NAME is in the indexes tab under "index name" in blue
# PINECONE_ENVIRONMENT is in indexes tab under "Environment". Example: "us-east1-gcp"
PINECONE_API_KEY=xxx
PINECONE_ENVIRONMENT=us-west1-gcp-free
PINECONE_INDEX_NAME=xxx
Modificación de config/pinecone.ts
En la carpeta de configuración, reemplace PINECONE_NAME_SPACE con el espacio de nombres en el que desea almacenar la inserción en PINECONE_NAME_SPACE cuando ejecute npm run ingest. Este espacio de nombres se utilizará más adelante para consultas y recuperación.
Modificar las palabras clave del chatbot y el modelo OpenAI
Cambie QA_PROMPT en utils/makechain.ts para su propio caso de uso.
Si tiene acceso a la API de gpt-4, cambie el nombre del modelo en el nuevo OpenAI a gpt-4. Verifique fuera de este repositorio que tiene acceso a la API de gpt-4; de lo contrario, la aplicación no funcionará.
import { OpenAI } from 'langchain/llms/openai';
import { PineconeStore } from 'langchain/vectorstores/pinecone';
import { ConversationalRetrievalQAChain } from 'langchain/chains';
const CONDENSE_PROMPT = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.
Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:`;
const QA_PROMPT = `You are a helpful AI assistant. Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say you don't know. DO NOT try to make up an answer.
If the question is not related to the context, politely respond that you are tuned to only answer questions that are related to the context.
{context}
Question: {question}
Helpful answer in markdown:`;
export const makeChain = (vectorstore: PineconeStore) => {
const model = new OpenAI({
temperature: 0, // increase temepreature to get more creative answers
modelName: 'gpt-3.5-turbo', //change this to gpt-4 if you have access
});
const chain = ConversationalRetrievalQAChain.fromLLM(
model,
vectorstore.asRetriever(),
{
qaTemplate: QA_PROMPT,
questionGeneratorTemplate: CONDENSE_PROMPT,
returnSourceDocuments: true, //The number of source documents returned is 4 by default
},
);
return chain;
};
6. Agregue documentos PDF como base de conocimientos
Debido a que habrá interacción de datos con OpenAI y Pinecone, se recomienda considerar cuidadosamente la privacidad y seguridad de los datos antes de cargar documentos.
Cargue uno o más documentos PDF en el directorio de documentos
Ejecutar comando de carga
npm run ingest
Compruebe si la carga se realizó correctamente en Pinecone
7. Ejecute el chatbot de la base de conocimientos.
Una vez que haya verificado que la inserción y el contenido se agregaron correctamente a su Pinecone, puede ejecutar la aplicación npm run dev para iniciar el entorno de desarrollo local y luego ingresar una pregunta en la interfaz de chat para iniciar una conversación.
Ejecutando una orden:
npm run dev
8. Preguntas frecuentesSolución de problemas
https://github.com/mayooear/gpt4-pdf-chatbot-langchain#troubleshooting
En general, esté atento a la sección issues
y discussions
de este repositorio para encontrar soluciones.
Errores generales
- Asegúrate de estar ejecutando la última versión de Node. Correr
node -v
- Pruebe con un PDF diferente o convierta su PDF a texto primero. Es posible que su PDF esté dañado, escaneado o requiera OCR para convertirlo a texto.
Console.log
lasenv
variables y asegúrese de que estén expuestas.- Asegúrese de utilizar las mismas versiones de LangChain y Pinecone que este repositorio.
- Verifique que haya creado un
.env
archivo que contenga sus claves API válidas (y en funcionamiento), su entorno y su nombre de índice. - Si cambia
modelName
enOpenAI
, asegúrese de tener acceso a la API para el modelo apropiado. - Asegúrese de tener suficientes créditos OpenAI y una tarjeta válida en su cuenta de facturación.
- Compruebe que no tenga varias claves OPENAPI en su entorno global. Si lo hace, la variable
env
del sistema sobrescribirá el archivo local del proyectoenv
. - Intente codificar sus claves API en las
process.env
variables si aún hay problemas.
Errores de piña
- Asegúrese de que su panel de piña
environment
coincidaindex
con el de los archivospinecone.ts
y.env
. - Compruebe que haya configurado las dimensiones del vector en
1536
. - Asegúrese de que el espacio de nombres de su piña esté en minúsculas.
- Los índices Pinecone de los usuarios del plan Starter (gratuito) se eliminan después de 7 días de inactividad. Para evitar esto, envíe una solicitud API a Pinecone para restablecer el contador antes de los 7 días.
- Vuelva a intentarlo desde cero con un nuevo proyecto, índice y repositorio clonado de Pinecone.