ChatBot -使用自定义gpt_index和langchain库创建基于GPT-3的搜索索引时出现问题

h7wcgrx3  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(566)

仅供参考:我正在尝试根据Dan Shipper https://www.lennysnewsletter.com/p/i-built-a-lenny-chatbot-using-gpt给出的说明构建一个聊天机器人。我正在尝试使用名为gpt_index和langchain的自定义库来使用OpenAI API创建基于GPT-3的搜索索引。我已经成功安装了这些库,并拥有以下代码。顺便说一句,我正在使用Google Colab作为环境。

from gpt_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import sys
import os
from IPython.display import Markdown, display

def construct_index(directory_path):
    ...
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003", max_tokens=num_outputs))
    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
 
    documents = SimpleDirectoryReader(directory_path).load_data()
    
    index = GPTSimpleVectorIndex(
        documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper
    )

    index.save_to_disk('index.json')
    return index

def ask_lenny():
    index = GPTSimpleVectorIndex.load_from_disk('index.json')
    while True: 
        query = input("What do you want to ask Lenny? ")
        response = index.query(query, response_mode="compact")
        display(Markdown(f"Lenny Bot says: <b>{response.response}</b>"))

当我用我的文档的路径调用construct_index函数时,我得到以下错误:TypeError: __init__() got an unexpected keyword argument 'llm_predictor'
似乎GPTSimpleVectorIndex类的预期参数和代码中提供的参数之间不匹配。不幸的是,我找不到这些自定义库的任何文档或示例。
谁能帮助我了解如何正确初始化GPTSimpleVectorIndex类并解决此错误?任何关于使用这些库的指导都将不胜感激。
谢谢大家!
我在Google Colab中运行这个,看到了错误。

pxiryf3j

pxiryf3j1#

我能够使用来自这个论坛的关于UseServiceContext的提示,并且在GPT4的帮助下
我们使用ServiceContext类解决了这个问题,而不是直接将LLMPredictor和PromptHelper作为参数传递给GPTSimpleVectorIndex构造函数:代码

def construct_index(directory_path):
max_input_size = 4096
num_outputs = 256
max_chunk_overlap = 20
chunk_size_limit = 600

llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003",
max_tokens=num_outputs))
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap,
chunk_size_limit=chunk_size_limit)

service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor,
prompt_helper=prompt_helper)

documents = SimpleDirectoryReader(directory_path).load_data()

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

index.save_to_disk('index.json')
return index
enter code here

enter code here代码

yx2lnoni

yx2lnoni2#

我尝试使用ServiceContext,但收到导入错误:无法从“gpt_index”导入名称“ServiceContext”,不确定我做错了什么。

相关问题