Spaces:
Runtime error
Runtime error
import os | |
import gradio as gr | |
import openai | |
from pathlib import Path | |
from langchain import PromptTemplate, LLMChain | |
import qdrant_client | |
from dotenv import load_dotenv | |
# from langchain.chains.qa_with_sources import load_qa_with_sources_chain | |
from langchain.chains import RetrievalQA | |
from langchain.chat_models import ChatOpenAI | |
from langchain.chains.question_answering import load_qa_chain | |
from langchain.embeddings.openai import OpenAIEmbeddings | |
from langchain.llms import AzureOpenAI, OpenAI | |
from langchain.text_splitter import CharacterTextSplitter | |
from langchain.vectorstores import Qdrant | |
from qdrant_client import QdrantClient | |
# Constants | |
collection_name="10ks" | |
# collection_name="collectiveagreements" | |
# Load the environment variables with the Azure OpenAI API key | |
load_dotenv() | |
# Initialize Azure OpenAI | |
# openai.api_type = os.getenv("OPENAI_API_TYPE") | |
# openai.api_base = os.getenv("OPENAI_API_BASE") | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
# openai.api_version = os.getenv("OPENAI_API_VERSION") | |
# The data was vectorized with ADA, so we'll use that to convert our | |
# query into a vector | |
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002") #, chunk_size=1) | |
dbclient = QdrantClient("localhost", port=6333, grpc_port=6334, prefer_grpc=True) | |
index=Qdrant(client=dbclient, collection_name=collection_name, embeddings=embeddings, vector_name="fragmentvector") | |
# # Load the FAISS index | |
# index = dbclient.retrieve. .load_local( | |
# "collectiveagreements.db", | |
# OpenAIEmbeddings(chunk_size=1, model="text-embedding-ada-002"), | |
# ) | |
# Open a connection to render the search results into test- this uses davinci-002. | |
llm = OpenAI(deployment_name="davinci", temperature=0) | |
# Open op a connection to do the querying | |
# Chain type can be stuff, map_reduce or refine | |
# chain = load_qa_with_sources_chain(llm, chain_type="map_reduce") | |
def docquery(question): | |
docs = index.similarity_search(question) | |
print("Length of answer: ", len(docs)) | |
# Process the query and return the results | |
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) | |
qa_chain = RetrievalQA.from_chain_type(llm,retriever=index.as_retriever(), return_source_documents=True) | |
output=qa_chain({"query": question}) | |
# output = chain.run(input_documents=docs, question=question) | |
print("Is the error here?", output ) | |
# myanswer = "##" + output.split("SOURCES")[0] | |
references = "" | |
# print("Docs:", docs) | |
for i in docs: | |
print("item: ", i.page_content) | |
references = ( | |
references | |
+ "**" | |
+ "** \n" | |
+ i.page_content.replace("\n", "") | |
+ "\n\n" | |
) | |
return output['result'], references | |
with gr.Blocks(title="Collective Agreement Search") as blocks: | |
appname = gr.Markdown(value="# 10K filings search") | |
appdesc = gr.Markdown( | |
value="## The tabs below demonstration different ways to query the data." | |
) | |
with gr.Tab("Ask a question"): | |
appdesc = gr.Markdown( | |
value="### This is a demo of an OpenAI-based question answering system. Type in a question and the system will return the answer and the source document." | |
) | |
question = gr.Textbox( | |
lines=1, | |
label="Question: press enter to submit", | |
value="Where is Babcock's head office?", | |
) | |
answer = gr.Markdown(label="Answer") | |
references = gr.Markdown(label="References") | |
question.submit(docquery, question, outputs=[answer, references]) | |
blocks.launch(share=True, server_name="0.0.0.0", server_port=8080) | |