Непредвиденная ошибка аргумента ключевого слова Llama_index в модели ChatGPT Python
Я тестирую пару широко опубликованных моделей GPT, просто пытаясь намочить ноги, и сталкиваюсь с ошибкой, которую не могу устранить.
Я запускаю этот код:
from llama_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os
os.environ["OPENAI_API_KEY"] = 'MYKEY'
def construct_index(directory_path):
max_input_size = 4096
num_outputs = 512
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_gpt = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs))
documents = SimpleDirectoryReader(directory_path).load_data()
index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor_gpt, prompt_helper=prompt_helper)
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="Enter your text"),
outputs="text",
title="Custom-trained AI Chatbot")
index = construct_index("salesdocs")
iface.launch(share=False)
И я продолжаю получать эту ошибку
File "C:\Users\Anonymous\anaconda3\lib\site-packages\llama_index\indices\vector_store\base.py", line 58, in __init__
super().__init__(
TypeError: __init__() got an unexpected keyword argument 'llm_predictor'
Мне было трудно найти много документации по ошибкам индекса Ламмы, надеясь, что кто-нибудь укажет мне правильное направление.
2 ответа
Вам необходимо изменить код согласно этому примеру: Шаблон использования LlamaIndex
По сути, вам нужно отправить эту информацию как ServiceContext:
from llama_index import ServiceContext
service_context = ServiceContext.from_defaults(
llm_predictor=llm_predictor,
prompt_helper=prompt_helper,
embed_model=embedding_llm,
)
index = GPTSimpleVectorIndex(nodes, service_context=service_context)
Но большинство онлайн-руководств являются более старыми версиями. Значит, вы заблуждались, и я тоже.
Чтобы получить еще больше ответа, если вам позже понадобится загрузить созданный индекс, вы также должны отправить service_context:
index = GPTSimpleVectorIndex.load_from_disk(
filename, service_context=service_context
)
В противном случае код сломается при загрузке индексного файла.
Я получил ту же ошибку, когда попробовал этот пример. Самое простое решение — использоватьfrom_document
используя настройки по умолчанию:
index = GPTSimpleVectorIndex.from_documents(documents)
Но если вы хотите установить свой собственный контекст подсказки и llm_predictor, создайте контекст и передайте егоGPTSimpleVectorIndex.from_document()
вызов:
def construct_index(directory_path):
max_input_size = 4096
num_outputs = 512
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_gpt = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs))
documents = SimpleDirectoryReader(directory_path).load_data()
# index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor_gpt, prompt_helper=prompt_helper)
service_context = ServiceContext.from_defaults(
llm_predictor=llm_predictor, prompt_helper=prompt_helper
)
index = GPTSimpleVectorIndex.from_documents(documents,service_context=service_context)
index.save_to_disk('index.json')
return index
Рассмотрите возможность использованияmodel_name="gpt-3.5-turbo"
это быстрее и стоит дешевле.
llm_predictor_gpt = LLMPredictor(llm=ChatOpenAI(temperature=0.7,
model_name="gpt-3.5-turbo", max_tokens=num_outputs))