Spaces:
Sleeping
Sleeping
File size: 1,953 Bytes
fce23bc 80c35b6 fce23bc a3d6903 80c35b6 fce23bc 9bcc55a 80c35b6 fce23bc 80c35b6 fce23bc 80c35b6 a3d6903 fce23bc 80c35b6 a3d6903 fce23bc 80c35b6 9bcc55a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | from prompts import Prompts
from config import Config
from common_functionality import send_openai_request
import openai
import os
import yfinance as yf
def get_basic_info(sector: str, n_companies: int, required_fields: list, filter_tickers=False) -> list:
max_num_companies = Config.OPENAI_MAX_NUM_COMPANIES
data = []
if n_companies > max_num_companies:
print(f"Getting {n_companies} companies")
ignore_companies = []
for _ in range(n_companies // max_num_companies):
prompt = Prompts.BASIC_INFORMATION_PROMPT.format(num_companies=max_num_companies,
sector=sector,
ignore_companies=ignore_companies,
required_fields=required_fields)
resp = send_openai_request(prompt, max_tokens=7100, temperature=0.1, model="gpt-4")
print(f"Ignore companies: {ignore_companies}")
ignore_companies.extend([company['name'] for company in resp])
if type(resp) == dict:
data.append(resp)
else:
data.extend(resp)
else:
prompt = Prompts.BASIC_INFORMATION_PROMPT_SINGLE_USE.format(num_companies=n_companies, sector=sector,
required_fields=required_fields)
data.extend(send_openai_request(prompt, max_tokens=7100, temperature=0.1, model="gpt-4"))
if filter_tickers:
filtered_tickers = []
for company in data:
try:
ticker = yf.Ticker(company['ticker'])
if ticker.info.get("currentPrice"):
filtered_tickers.append(company["ticker"])
except:
continue
data = [company for company in data if company['ticker'] in filtered_tickers]
return data
|