30 lignes de code simples, utilisant LangChain pour créer une base de connaissances GPT exclusive

Récemment, le projet LangChain lié à ChatGPT a attiré beaucoup d'attention et est devenu une bibliothèque de code open source très populaire, et il continue de se développer rapidement !

Nous savons tous que l'ensemble de données de la base de connaissances de formation de ChatGPT est obsolète et ne peut pas être connecté à Internet, de sorte que les réponses ou les données fournies sont souvent incorrectes. ‍‍‍

Imaginez si nous utilisions des documents de connaissances locales comme invites et utilisions ChatGPT pour répondre aux questions basées sur ces matériaux. Ne serait-ce pas cool ? L'émergence de LangChain peut nous aider à réaliser cette exigence.

LangChain

LangChain est un cadre de développement de programmes puissant qui vise à aider les développeurs à créer des applications de bout en bout. Le framework fournit un ensemble d'outils, de composants et d'interfaces qui permettent aux développeurs de créer rapidement des applications qui s'appuient sur de grands modèles de langage (LLM) et des modèles de chat. Grâce à LangChain, les développeurs peuvent facilement gérer l'interaction des modèles de langage, réaliser la liaison transparente de plusieurs composants et intégrer des ressources supplémentaires (telles que des API et des bases de données) pour optimiser le processus de développement.

Ensuite, nous utiliserons un exemple simple pour comprendre comment utiliser LangChain combiné avec la capacité de ChatGPT à créer une base de connaissances privée sur l'IA.

Déploiement

L'ensemble du processus de déploiement est le suivant :

La première étape consiste à obtenir le code et à installer les bibliothèques liées à Python

git clone [email protected]:christhai/langchain-chatbot.git
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirement.txt

Le app.pycode complet est le suivant (moins de 30 lignes)

from llama_index import SimpleDirectoryReader, LangchainEmbedding, GPTListIndex,GPTSimpleVectorIndex, PromptHelper, LLMPredictor, ServiceContext

from langchain import OpenAI

import gradio as gr

import sys

import os

os.chdir(r'/home/ubuntu/langchain')  *#* 文件路径

os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxxxxxxxxxx'

def construct_index(directory_path):

    max_input_size = 4096

    num_outputs = 2000

    max_chunk_overlap = 20

    chunk_size_limit = 600

    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)

    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="gpt-3.5-turbo", max_tokens=num_outputs))

    documents = SimpleDirectoryReader(directory_path).load_data()

    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)

    index = GPTSimpleVectorIndex.from_documents(documents,service_context=service_context)

    index.save_to_disk('index.json')

    return index

def chatbot(input_text):

    index = GPTSimpleVectorIndex.load_from_disk('index.json')

    response = index.query(input_text, response_mode="compact")

    return response.response

iface = gr.Interface(fn=chatbot,

                     inputs=gr.inputs.Textbox(lines=7, label="请输入,您想从知识库中获取什么?"),

                     outputs="text",

                     title="AI 本地知识库ChatBot")

index = construct_index("docs")

iface.launch(share=True)

La deuxième étape consiste à modifier le chemin du projet et OPENAI API TOKEN sur les lignes 6 et 7 du code

os.chdir(r'你的项目路径文件夹')  
os.environ["OPENAI_API_KEY"] = '你的OpenAI API Token'

La troisième étape consiste à placer les documents nécessitant une invite dans le répertoire docs (par exemple, je passerai en revue les notes de l'examen CKA et les points d'examen officiels à titre d'exemples)

ubuntu@instance-k8s:~/langchain/docsls
cka.txt  exam.txt

Enfin, exécutez simplement le programme (n'est-ce pas très simple !!)

python3 app.py

图片

Accès du navigateur à http://127.0.0.1:7860 local ou à l'URL du serveur

图片

Démo

Ensuite, nous démontrons comment l'effet spécifique est :

图片

Par exemple, je pose des questions basées sur le contenu du document Conseils pour l'examen CKA“What You Need For Your Exam”

Langchain va trier le contenu du document et me retourner la réponse suivante

In order to take the CKA or CKAD exam, you will need a computer with Chrome or Chromium browser, reliable internet access, a webcam, and a microphone. You will also need to have a current, non-expired government ID that has your photo and full name in the Latin alphabet. Additionally, you should run the compatibility check tool provided by the Exam Proctoring Partner to verify that your hardware meets the minimum requirements.

图片

或者,我想找找之前CKA笔记中关于"how to create K8S deplyment with yaml",它也返回了笔记中相关的答案。

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: rss

spec:

  replicas: 2

  template:

    metadata:

      labels:

        app: rss

    spec:

      containers:

      - name: front-end

        image: nginx

        ports:

        - containerPort: 80

      - name: rss-reader

        image: nickchase/rss-php-nginx:v1 

        ports:

        - containerPort: 88

图片

感兴趣的小伙伴可以自己部署下试试吧!

Je suppose que tu aimes

Origine juejin.im/post/7229298797796704315
conseillé
Classement