Spaces:
Sleeping
Sleeping
# import streamlit as st | |
# import pickle | |
import openai | |
# file_path = 'concat_list.pkl' | |
# with open(file_path, 'rb') as file: | |
# concat_list = pickle.load(file) | |
# # Print the length of the concat_list | |
# st.write(len(concat_list)) | |
org = 'org-JUm8VrpZZhXblDWHMVmxnLTF' | |
openai.api_key = "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" | |
import operations as op | |
import textwrap | |
import numpy as np | |
# from dotenv import load_dotenv | |
import streamlit as st | |
import os | |
import nltk | |
from nltk.tokenize import sent_tokenize | |
import pickle | |
nltk.download('punkt') | |
st.title("BIOMIMICRY") | |
cl_file_path = 'concat_list.pkl' | |
with open(cl_file_path, 'rb') as file: | |
concat_list = pickle.load(file) | |
file_path = 'content_embeddings.npy' | |
content_embeddings = np.load(file_path) | |
# st.write(content_embeddings.shape) | |
############################################################################################### | |
# GPT CALL | |
def final_ask(query, prompt_content): | |
# Set up OpenAI API credentials | |
# openai.api_key = "YOUR_API_KEY" | |
# Define the prompt with an improved structure and context | |
prompt = f'''You are an expert in biomimicry, and you are asked to answer the following question: | |
Question: {query} | |
Context: {prompt_content} | |
Please respond to the question as if you were having a natural language conversation, using the given context. If the answer is not contained within the provided text, kindly state "I don't have that information."''' | |
# Generate the response using the Davinci model | |
response = openai.Completion.create( | |
engine="text-davinci-003", | |
prompt=prompt, | |
max_tokens=100, | |
temperature=0.7, | |
n=1, | |
stop=None | |
) | |
# Retrieve the generated answer | |
answer = response.choices[0].text.strip() | |
return answer | |
################################################################################################## | |
query = st.text_input('Ask me anything!', placeholder='Type.....') | |
try: | |
if st.button("Confirm!"): | |
que_embedd = op.create_query_embeddings(query) | |
cosine_lis= op.calculate_cosine(que_embedd, content_embeddings, concat_list) | |
indexes_final = op.fetch_top_rank_ans(cosine_lis, 16) | |
# for i in indexes_final: | |
# st.write(concat_list[i]) | |
sentences = [concat_list[i] for i in indexes_final] | |
# Create a prompt or content using the retrieved sentences | |
prompt_content = "\n".join(sentences) | |
answer = final_ask(query, prompt_content) | |
st.write(answer) | |
except Exception as e: | |
st.write(e) | |
st.warning("Something went wrong. Please try again.") | |