Spaces:
Sleeping
Sleeping
| import os | |
| import pinecone | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from langchain.chains import RetrievalQA | |
| from langchain.embeddings.openai import OpenAIEmbeddings | |
| from langchain.llms import OpenAI | |
| from langchain.vectorstores import Pinecone | |
| PINECONE_API_KEY = os.getenv('PINECONE_API_KEY') | |
| PINECONE_ENV = os.getenv('PINECONE_ENV') | |
| OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') | |
| PINECONE_INDEX_NAME = os.getenv('PINECONE_INDEX_NAME') | |
| def parse_response(response): | |
| result = response['result'] | |
| result += '\n\nSources: \n' | |
| for source_name in response["source_documents"]: | |
| result += ''.join((source_name.metadata['source'], | |
| " page #:", str(source_name.metadata['page']), ' \n')) | |
| return result | |
| app = FastAPI() | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=['*'] | |
| ) | |
| def read_root(): | |
| return {"message": "Hello World"} | |
| def hello_python(): | |
| return {"message": "Hello Python"} | |
| def read_root(p: str='According to HQ H303140, what is "Country of origin" means?'): | |
| pinecone.init( | |
| api_key=PINECONE_API_KEY, | |
| environment=PINECONE_ENV | |
| ) | |
| index = pinecone.Index(PINECONE_INDEX_NAME) | |
| index.describe_index_stats() | |
| embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY) | |
| docsearch = Pinecone.from_existing_index(PINECONE_INDEX_NAME, embeddings) | |
| retriever = docsearch.as_retriever( | |
| include_metadata=True, | |
| metadata_key='source' | |
| ) | |
| llm = OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY) | |
| qa_chain = RetrievalQA.from_chain_type(llm=llm, | |
| chain_type="stuff", | |
| retriever=retriever, | |
| return_source_documents=True) | |
| response = qa_chain(p) | |
| return { | |
| "prompt": p, | |
| "response": parse_response(response) | |
| } |