Как включить историю контекста/чата в OpenAI ChatBot, используя ChatGPT и langchain в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как включить историю контекста/чата в OpenAI ChatBot, используя ChatGPT и langchain в Python?

Сообщение Anonymous »

Пожалуйста, будьте терпеливы, поскольку это буквально первый крупный код, который я когда-либо писал, и он предназначен для API OpenAI ChatGPT.
Что я собираюсь сделать с этим кодом, так это загрузить документ в формате PDF. или группу PDF-документов. Затем разделите их, чтобы не расходовать мои жетоны. Затем пользователь задавал вопросы, связанные с указанными документами, и бот отвечал. У меня возникли проблемы с тем, что я хочу, чтобы бот понимал контекст, когда я задаю новые вопросы. Например:
В1: Что такое божья коровка?
А1: Божья коровка — это разновидность жука, бла-бла-бла....
В2: Какого они цвета?
A2: Они могут быть самых разных цветов, бла-бла-бла...
Q3: Где их можно найти?
A3: Божьих коровок можно найти по всему миру....
Но мне не удается запустить свой код.
Вместо этого я получаю следующий результат:
Что я получаю, когда задаю дополнительный вопрос, для которого требуется бот чтобы узнать контекст
**Вот код:
**

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

import os
import platform

import openai
import gradio as gr
import chromadb
import langchain

from langchain.chat_models import ChatOpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import TokenTextSplitter

from langchain.document_loaders import PyPDFLoader
from langchain.prompts.prompt import PromptTemplate
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory

#OpenAI API Key goes here
os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxx'

#load the data here.
def get_document():
loader = PyPDFLoader('docs/ladybug.pdf')
data = loader.load()
return data

my_data = get_document()

#converting the Documents to Embedding using Chroma
text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=50)
my_doc = text_splitter.split_documents(my_data)

embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(my_doc, embeddings)
retriever=vectordb.as_retriever(search_type="similarity")
#Use System Messages for Chat Completions - this is the prompt template

template = """{question}"""

QA_PROMPT = PromptTemplate(template=template, input_variables=["question"])
#QA_PROMPT = PromptTemplate(template=template, input_variables=["question"])

# Call OpenAI API via LangChain
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
#input_key="question",
def generate_response(query,chat_history):
if query:
llm = ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo")
my_qa = ConversationalRetrievalChain.from_llm(llm, retriever, QA_PROMPT, verbose=True, memory=memory)
result = my_qa({"question": query, "chat_history": chat_history})

return result["answer"]

# Create a user interface
def my_chatbot(input, history):
history = history or []
my_history = list(sum(history, ()))
my_history.append(input)
my_input = ' '.join(my_history)
output = generate_response(input,history)
history.append((input, output))
return history, history

with gr.Blocks() as demo:
gr.Markdown("""GPT - ABC Project (LSTK)""")
chatbot = gr.Chatbot()
state = gr.State()
text = gr.Textbox(placeholder="Ask me a question about the contract.")
submit = gr.Button("SEND")
submit.click(my_chatbot, inputs=[text, state], outputs=[chatbot, state])

demo.launch(share = True)
Я понятия не имею, что можно попробовать, и каждый раз, когда я что-то пробую, мне удается сделать это только хуже. поэтому я оставил все как есть в надежде, что кто-нибудь здесь сможет помочь.
Заранее большое спасибо.

Подробнее здесь: https://stackoverflow.com/questions/763 ... t-and-lang
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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