Cree una base de conocimientos de PDF personalizada basada en la nube, un chatbot de IA basado en GPT-4 y LangChain

referencia:

GitHub - mayooear/gpt4-pdf-chatbot-langchain: GPT4 y LangChain Chatbot para documentos PDF de gran tamaño

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 las  env 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 en  OpenAI, 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 proyecto  env .
  • 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 coincida  index con el de los  archivos pinecone.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.

Supongo que te gusta

Origin blog.csdn.net/holyvslin/article/details/132403863
Recomendado
Clasificación