ConversationalRetrivalChain против LLMChainPython

Программы на Python
Ответить
Anonymous
 ConversationalRetrivalChain против LLMChain

Сообщение Anonymous »

Я разработал сценарий, который работал отлично, он выглядел следующим образом:

Код: Выделить всё

def get_response_from_query(db, query, k=4):

docs = db.similarity_search(query, k=k)
docs_page_content = " ".join([d.page_content for d in docs])

chat = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.2)

# Template to use for the system message prompt
template = """
this is a custom prompt template
"""

system_message_prompt = SystemMessagePromptTemplate.from_template(template)

# Human question prompt
human_template = "Answer the following question: {question}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages(
[system_message_prompt, human_message_prompt]
)

chain = LLMChain(llm=chat, prompt=chat_prompt)

response = chain.run(question=query, docs=docs_page_content)
response = response.replace("\n", "")
return response, docs
Это работало очень хорошо, пока я не попытался использовать его в новом приложении с Streamlit.
Во-первых, две первые строки кода, которые выполняют поиск по подобию нарушает код из-за этой ошибки:

[*]InvalidRequestError: '$.input' недействителен. Пожалуйста, проверьте ссылку на API: https://platform.openai.com/docs/api-reference -- docs = Vectorstore.similarity_search(user_question, k=4)

Если удалить эти строки, остальная часть кода просто ничего не вернет интерфейсу.
Я попробовал использовать другой метод, а именно:

Код: Выделить всё

def get_conversation_chain(vectorstore):
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.2)

memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True)
conversation_chain = ConversationalRetrievalChain.from_llm(llm=llm,retriever=vectorstore.as_retriever(),memory=memory)
return conversation_chain
Это работает хорошо, пока я не попытаюсь добавить в ConversationalRetrievalChain четвертый параметр, то есть join_docs_chain_kwargs={"prompt": Prompt}. Используем код здесь.
Здесь я создаю подсказку так же, как и в своем первом коде, но продолжаю получать ошибки, связанные с тем, что в заполнителе {docs} или {user_question} отсутствует контекст:
ValidationError: 1 ошибка проверки для корневого контекста StuffDocumentsChain имя_переменной_документа не найдена в llm_chain input_variables: [] (type=value_error)
Поскольку поиск по сходству не удался , я не могу ничего передать в {docs}, даже удаление не помогает. Откуда берется {context}?
Что мне здесь не хватает? Какой метод мне следует использовать: ConversationalRetrivalChain или LLMChain? Почему поиск по сходству не работает?
Мне нужно только сказать LLM, чтобы он не отвечал, если он не уверен, и для этого мне нужно отправить собственный шаблон/подсказку с приглашением пользователя. .
Я новичок в искусственном интеллекте, пожалуйста, помогите.
Как указано выше, я попробовал два метода

Подробнее здесь: https://stackoverflow.com/questions/765 ... s-llmchain
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»