Spaces:
Sleeping
Sleeping
| 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 | |