Spaces:
Build error
Build error
| import json | |
| import re | |
| import openai | |
| import pandas as pd | |
| import requests | |
| import spacy | |
| import spacy_transformers | |
| import streamlit_scrollable_textbox as stx | |
| import torch | |
| from InstructorEmbedding import INSTRUCTOR | |
| from sentence_transformers import SentenceTransformer | |
| from tqdm import tqdm | |
| from transformers import ( | |
| AutoModelForMaskedLM, | |
| AutoModelForSeq2SeqLM, | |
| AutoTokenizer, | |
| T5ForConditionalGeneration, | |
| T5Tokenizer, | |
| pipeline, | |
| ) | |
| import pinecone | |
| import streamlit as st | |
| def get_data(): | |
| data = pd.read_csv("earnings_calls_cleaned_metadata.csv") | |
| return data | |
| # Initialize Spacy Model | |
| def get_spacy_model(): | |
| return spacy.load("en_core_web_trf") | |
| def get_flan_alpaca_xl_model(): | |
| model = AutoModelForSeq2SeqLM.from_pretrained( | |
| "/home/user/app/models/flan-alpaca-xl/" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| "/home/user/app/models/flan-alpaca-xl/" | |
| ) | |
| return model, tokenizer | |
| # Initialize models from HuggingFace | |
| def get_t5_model(): | |
| return pipeline("summarization", model="t5-small", tokenizer="t5-small") | |
| def get_flan_t5_model(): | |
| tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large") | |
| model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-large") | |
| return model, tokenizer | |
| def get_mpnet_embedding_model(): | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| model = SentenceTransformer( | |
| "sentence-transformers/all-mpnet-base-v2", device=device | |
| ) | |
| model.max_seq_length = 512 | |
| return model | |
| def get_splade_sparse_embedding_model(): | |
| model_sparse = "naver/splade-cocondenser-ensembledistil" | |
| # check device | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| tokenizer = AutoTokenizer.from_pretrained(model_sparse) | |
| model_sparse = AutoModelForMaskedLM.from_pretrained(model_sparse) | |
| # move to gpu if available | |
| model_sparse.to(device) | |
| return model_sparse, tokenizer | |
| def get_sgpt_embedding_model(): | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| model = SentenceTransformer( | |
| "Muennighoff/SGPT-125M-weightedmean-nli-bitfit", device=device | |
| ) | |
| model.max_seq_length = 512 | |
| return model | |
| def get_instructor_embedding_model(): | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| model = INSTRUCTOR("hkunlp/instructor-xl") | |
| return model | |
| def save_key(api_key): | |
| return api_key | |
| # Text Generation | |
| def gpt_turbo_model(prompt): | |
| response = openai.ChatCompletion.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "user", "content": prompt}, | |
| ], | |
| temperature=0.01, | |
| max_tokens=1024, | |
| ) | |
| return response["choices"][0]["message"]["content"] | |
| def generate_text_flan_t5(model, tokenizer, input_text): | |
| input_ids = tokenizer(input_text, return_tensors="pt").input_ids | |
| outputs = model.generate(input_ids, temperature=0.5, max_length=512) | |
| return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| # Entity Extraction | |
| def generate_entities_flan_alpaca_inference_api(prompt): | |
| API_URL = "https://api-inference.huggingface.co/models/declare-lab/flan-alpaca-xl" | |
| API_TOKEN = st.secrets["hg_key"] | |
| headers = {"Authorization": f"Bearer {API_TOKEN}"} | |
| payload = { | |
| "inputs": prompt, | |
| "parameters": { | |
| "do_sample": True, | |
| "temperature": 0.1, | |
| "max_length": 80, | |
| }, | |
| "options": {"use_cache": False, "wait_for_model": True}, | |
| } | |
| try: | |
| data = json.dumps(payload) | |
| # Key not used as headers=headers not passed | |
| response = requests.request("POST", API_URL, data=data) | |
| output = json.loads(response.content.decode("utf-8"))[0][ | |
| "generated_text" | |
| ] | |
| except: | |
| output = "" | |
| print(output) | |
| return output | |
| def generate_entities_flan_alpaca_checkpoint(model, tokenizer, prompt): | |
| model_inputs = tokenizer(prompt, return_tensors="pt") | |
| input_ids = model_inputs["input_ids"] | |
| generation_output = model.generate( | |
| input_ids=input_ids, | |
| temperature=0.1, | |
| top_p=0.5, | |
| max_new_tokens=1024, | |
| ) | |
| output = tokenizer.decode(generation_output[0], skip_special_tokens=True) | |
| return output | |