### Install FinRobot from Source Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md Install FinRobot directly from the repository. This is useful for developers who want to work with the latest code or contribute to the project. ```bash pip install -e . ``` -------------------------------- ### Install Project Dependencies Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Use this command to install all necessary packages listed in the requirements.txt file. Ensure you have pip installed and are in the correct directory. If running in Google Colab, restart the runtime after installation. ```bash !pip install -r requirements.txt ``` -------------------------------- ### Install PyMuPDF Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_annual_report.ipynb Installs the PyMuPDF library, which is used for working with PDF files. This is a prerequisite for the subsequent code examples. ```python !pip install PyMuPDF ``` -------------------------------- ### Install FinRobot from PyPI Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md Install the latest release of FinRobot directly from the Python Package Index (PyPI). This is the recommended method for general users. ```bash pip install -U finrobot ``` -------------------------------- ### Manage Finrobot Application Lifecycle Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/README.md Use the `deploy.sh` script to manage the Finrobot application. Commands include starting, stopping, restarting, checking status, and installing dependencies. ```bash ./deploy.sh start ``` ```bash ./deploy.sh stop ``` ```bash ./deploy.sh restart ``` ```bash ./deploy.sh status ``` ```bash ./deploy.sh install ``` -------------------------------- ### Initialization and Event Binding Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/web_app/templates/login.html Sets up the initial state of the application, including event listeners for mouse movement and window resizing. It also starts the animation loop. ```javascript function init(e) { document.removeEventListener('mousemove', init); document.addEventListener('mousemove', onMove); document.addEventListener('touchmove', onMove); onMove(e); createLines(); requestAnimationFrame(render); } resize(); document.addEventListener('mousemove', init); window.addEventListener('resize', resize); ``` -------------------------------- ### Configure API Keys for FinRobot Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md Copy the example configuration file and edit it with your API keys for financial data providers and LLMs. Ensure you obtain keys from the specified sources. ```bash cp finrobot_equity/core/config/config.ini.example finrobot_equity/core/config/config.ini ``` ```ini [API_KEYS] fmp_api_key = YOUR_FMP_API_KEY # https://financialmodelingprep.com/developer openai_api_key = YOUR_OPENAI_API_KEY # https://platform.openai.com/account/api-keys adanos_api_key = YOUR_ADANOS_API_KEY # Optional: enables Retail Sentiment Insights ``` -------------------------------- ### Install wkhtmltopdf using apt-get Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Installs the wkhtmltopdf package using apt-get, which is required for converting HTML content to PDF. This command requires sudo privileges. ```bash %%capture !sudo apt-get install wkhtmltopdf ``` -------------------------------- ### Install Langchain and Sentence Transformers Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_qa_up.ipynb Installs necessary Python packages for Langchain Chroma and sentence transformers. Use '-U' to upgrade if already installed and '-q' for quiet installation. ```python !pip install langchain-chroma -U -q !pip install sentence-transformers -q ``` -------------------------------- ### Deploy Finrobot Application Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/README.md Make the deploy script executable and then run it to start the Finrobot application. The web interface will be accessible at http://127.0.0.1:8001. ```bash chmod +x deploy.sh ./deploy.sh start ``` -------------------------------- ### Deploy FinRobot Web Interface Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md This command deploys the FinRobot web interface. It can automatically install dependencies. Alternatively, you can set up a virtual environment, install requirements, and run the app manually. ```bash chmod +x deploy.sh ./deploy.sh start ``` ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements-equity.txt python run_web_app.py ``` -------------------------------- ### Define Report Directories and Print Message Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/core/src/Run.ipynb Sets up the output directories for the analysis and final report, and prints a message indicating the start of the equity report creation process. ```python analysis_dir = f"{OUTPUT_BASE_DIR}/{COMPANY_TICKER}/analysis" report_dir = f"{OUTPUT_BASE_DIR}/{COMPANY_TICKER}/report" print("\nšŸ“„ Step 2: Creating Equity Research Report...") print("-" * 80) ``` -------------------------------- ### Print Initialization Message Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/core/src/Run.ipynb Displays a starting message indicating the initiation of the FMP API-based equity research report generation process. ```python print(f"šŸš€ Starting FMP API-based equity research report generation for {COMPANY_NAME} ({COMPANY_TICKER})") print("=" * 80) ``` -------------------------------- ### Import Finrobot and Autogen Libraries Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/ollama function call.ipynb Imports necessary modules from Finrobot for data handling and Autogen for agent-based conversations. Ensure these libraries are installed. ```python import autogen from autogen.cache import Cache from finrobot.utils import get_current_date, register_keys_from_json from finrobot.data_source import FinnHubUtils, YFinanceUtils from autogen import AssistantAgent, UserProxyAgent from typing import Annotated ``` -------------------------------- ### Get Consensus Estimates (FMP) Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Fetch consensus price target and recommendation data using the FMP provider. Ensure the 'fmp' provider is configured. ```python from openbb import obb df=obb.equity.estimates.consensus(symbol='MSFT',provider='fmp') print(df.tail(100).to_markdown(index=False)) ``` -------------------------------- ### Configure OpenAI and Register Finnhub API Keys Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_fingpt_forecaster.ipynb Reads OpenAI API keys from a JSON file and registers Finnhub API keys. This setup is crucial for enabling communication with OpenAI models and Finnhub's financial data services. ```python # Read OpenAI API keys from a JSON file config_list = autogen.config_list_from_json( "../OAI_CONFIG_LIST", filter_dict={"model": ["gpt-4-0125-preview"]}, ) llm_config = {"config_list": config_list, "timeout": 120, "temperature": 0} # Register FINNHUB API keys register_keys_from_json("../config_api_keys") ``` -------------------------------- ### Query SEC Database with Tool Proxy Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Suggests a tool call to query the SEC database for specific financial information. This example demonstrates how to format a question and specify the SEC form name for data retrieval. Note the function name variations ('query_put_database_sec' vs 'query_database_sec') which may indicate API changes or different tool implementations. ```python query_put_database_sec({"question":"What are the forward estimates of Google for the year 2023?","sec_form_name":"10-K"}) ``` ```python query_database_sec({"question":"What are the forward estimates of Google for the year 2023?","sec_form_name":"10-K"}) ``` -------------------------------- ### Get Google Stock Consensus Estimates Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Retrieves and displays the last 100 rows of consensus estimates for GOOGL using the yfinance provider. Requires the 'openbb' library to be installed. ```python from openbb import obb df=obb.equity.estimates.consensus(symbol='GOOGL',provider='yfinance') print(df.tail(100).to_markdown(index=False)) ``` -------------------------------- ### Configure and Initialize Assistant Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_annual_report.ipynb Sets up the assistant for interacting with the LLM. Configure `llm_config`, `max_consecutive_auto_reply`, and `human_input_mode` as needed for your workflow. ```python assistant = SingleAssistantShadow( "Expert_Investor", llm_config, max_consecutive_auto_reply=None, human_input_mode="TERMINATE", ) ``` -------------------------------- ### Fetch Futures Curve Data Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Use this function to get the futures curve for a given symbol. Ensure the symbol and provider are valid. This example demonstrates a common error where no results are found. ```python from openbb import obb df=obb.derivatives.futures.curve(symbol='GC=F',provider='yfinance') print(df.tail(100).to_markdown(index=False)) ``` -------------------------------- ### Get Historical Crypto Prices (yfinance) Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Fetch historical price data for a cryptocurrency pair using the yfinance provider. Specify the symbol, start and end dates, and the desired interval. The default interval is '1d'. ```python from openbb import obb df=obb.crypto.price.historical(symbol='BTC-USD',provider='fmp',interval='1d') print(df.tail(100).to_markdown(index=False)) ``` -------------------------------- ### Configure API Keys for Data Sources Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md Rename the sample API keys configuration file and add your keys for Finnhub, Financial Modeling Prep, and SEC API. This is necessary for data retrieval and report generation. ```shell 1) rename config_api_keys_sample to config_api_keys 2) remove the comment within the config_api_keys file 3) add your own finnhub-api "YOUR_FINNHUB_API_KEY" 4) add your own financialmodelingprep and sec-api keys "YOUR_FMP_API_KEY" and "YOUR_SEC_API_KEY" (for financial report generation) ``` -------------------------------- ### Define Configuration Variables Source: https://github.com/ai4finance-foundation/finrobot/blob/master/finrobot_equity/core/src/Run.ipynb Sets up key configuration variables including company identifiers, peer tickers, date ranges for news, and file paths for output and configuration. ```python COMPANY_TICKER = "NVDA" COMPANY_NAME = "NVIDIA Corporation" PEER_TICKERS = ["AMD", "INTC"] NEWS_DAYS_BACK = 5 OUTPUT_BASE_DIR = "../output" CONFIG_FILE = "../config/config.ini" ``` -------------------------------- ### Install PyAutogen Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Installs the pyautogen library. This is a prerequisite for using Autogen functionalities. ```python !pip install -U -q pyautogen ``` -------------------------------- ### Load and Initialize OpenBB Agent with ChromaDB Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Load the OpenBB database collection from ChromaDB and initialize the OpenBB agent with the Chroma collection for data retrieval. ```python openbb_collection = load_database(os.environ['OPENAI_API_KEY']) obb_chroma = OpenBBAgentChroma(openbb_collection) dspy_obb = DSPYOpenBBAgent(obb_chroma) ``` -------------------------------- ### Initialize DSPy OpenBB Agent and Load Environment Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Import necessary modules for the DSPy OpenBB agent, load environment variables, and set up autoreload for development. ```python from agent.dspy_obb_agent import DSPYOpenBBAgent from dotenv import load_dotenv,find_dotenv from agent.database import load_database, build_database, build_docs_metadata from agent.dspy_agent import OpenBBAgentChroma import os %load_ext autoreload %autoreload 2 load_dotenv(find_dotenv(),override=True) ``` -------------------------------- ### Configure LLM and API Keys Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_annual_report.ipynb Sets up the language model configuration, including the OpenAI API key and other necessary API keys for financial data retrieval. Ensure configuration files are correctly named and populated. ```python llm_config = { "config_list": autogen.config_list_from_json( "../OAI_CONFIG_LIST", filter_dict={ "model": ["gpt-4-0125-preview"], }, ), "timeout": 120, "temperature": 0.5, } register_keys_from_json("../config_api_keys") ``` -------------------------------- ### Load Persistent ChromaDB Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Load a previously persisted ChromaDB. Uncomment and modify the 'persist_directory' and 'embedding_function' as needed for your setup. ```python # You can load the persistent database again # embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") # dsec_filings_md_dbb3 = Chroma(persist_directory="./sec-filings-md-db", embedding_function=embedding_function) ``` -------------------------------- ### Clone FinRobot Repository Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md Download the FinRobot project files from the GitHub repository. Navigate into the cloned directory to proceed with the installation. ```shell git clone https://github.com/AI4Finance-Foundation/FinRobot.git cd FinRobot ``` -------------------------------- ### Initialize and Chat with Market Analyst Assistant Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_fingpt_forecaster.ipynb Sets up a SingleAssistant for market analysis, specifying the LLM configuration and human input mode. The assistant is then used to query and analyze stock information for a given company. ```python company = "APPLE" assitant = SingleAssistant( "Market_Analyst", llm_config, # set to "ALWAYS" if you want to chat instead of simply receiving the prediciton human_input_mode="NEVER", ) assitant.chat( f"Use all the tools provided to retrieve information available for {company} upon {get_current_date()}. Analyze the positive developments and potential concerns of {company} " "with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. " f"Then make a rough prediction (e.g. up/down by 2-3%) of the {company} stock price movement for next week. Provide a summary analysis to support your prediction." ) ``` -------------------------------- ### Get Historical Cryptocurrency Price Data (Tiingo) Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Retrieve historical price data for cryptocurrency pairs using the Tiingo provider. ```APIDOC ## POST /api/crypto/price/historical/tiingo ### Description Fetches historical price data for specified cryptocurrency pairs from the Tiingo provider. ### Method POST ### Endpoint /api/crypto/price/historical/tiingo ### Parameters #### Request Body - **symbol** (string) - Required - Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple items allowed. - **start_date** (string) - Optional - Start date of the data, in YYYY-MM-DD format. - **end_date** (string) - Optional - End date of the data, in YYYY-MM-DD format. - **interval** (string) - Optional - Time interval of the data to return. Defaults to '1d'. Allowed values: '1m', '5m', '15m', '30m', '1h', '4h', '1d'. - **exchanges** (string) - Optional - To limit the query to a subset of exchanges (e.g., ['POLONIEX', 'GDAX']). ### Request Example { "symbol": "BTC-USD", "start_date": "2023-01-01", "end_date": "2023-01-31", "interval": "1d", "exchanges": "POLONIEX" } ### Response #### Success Response (200) - **data** (array) - Array of historical price data objects. - **date** (string) - The date of the data point. - **open** (number) - The opening price. - **high** (number) - The highest price. - **low** (number) - The lowest price. - **close** (number) - The closing price. - **volume** (number) - The trading volume. #### Response Example { "data": [ { "date": "2023-01-01T00:00:00.000Z", "open": 16500.00, "high": 16600.00, "low": 16400.00, "close": 16550.00, "volume": 100000 } ] } ``` -------------------------------- ### Get Historical Cryptocurrency Price Data (Polygon) Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Retrieve historical price data for cryptocurrency pairs using the Polygon provider. ```APIDOC ## POST /api/crypto/price/historical/polygon ### Description Fetches historical price data for specified cryptocurrency pairs from the Polygon provider. ### Method POST ### Endpoint /api/crypto/price/historical/polygon ### Parameters #### Request Body - **symbol** (string) - Required - Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple items allowed. - **start_date** (string) - Optional - Start date of the data, in YYYY-MM-DD format. - **end_date** (string) - Optional - End date of the data, in YYYY-MM-DD format. - **interval** (string) - Optional - Time interval of the data to return. Defaults to '1d'. The numeric portion of the interval can be any positive integer. The letter portion can be one of the following: s, m, h, d, W, M, Q, Y. - **sort** (string) - Optional - Sort order of the data. Defaults to 'asc'. Allowed values: 'asc', 'desc'. - **limit** (integer) - Optional - The number of data entries to return. Defaults to 49999. ### Request Example { "symbol": "BTC-USD", "start_date": "2023-01-01", "end_date": "2023-01-31", "interval": "1d", "sort": "desc", "limit": 100 } ### Response #### Success Response (200) - **data** (array) - Array of historical price data objects. - **date** (string) - The date of the data point. - **open** (number) - The opening price. - **high** (number) - The highest price. - **low** (number) - The lowest price. - **close** (number) - The closing price. - **volume** (number) - The trading volume. #### Response Example { "data": [ { "date": "2023-01-31T00:00:00.000Z", "open": 23000.00, "high": 23500.00, "low": 22800.00, "close": 23200.00, "volume": 150000 } ] } ``` -------------------------------- ### Login to OpenBB and Set Output Preferences Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Log in to the OpenBB platform using a PAT and configure the user preferences to output results as dataframes for easier manipulation. ```python from openbb import obb # Login to OpenBB and prefer dataframe outputs obb.account.login(pat=os.environ['OBB_PAT']) obb.user.preferences.output_type = "dataframe" ``` -------------------------------- ### Get Historical Cryptocurrency Price Data (FMP) Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Retrieve historical price data for cryptocurrency pairs using the FMP provider. ```APIDOC ## POST /api/crypto/price/historical/fmp ### Description Fetches historical price data for specified cryptocurrency pairs from the FMP provider. ### Method POST ### Endpoint /api/crypto/price/historical/fmp ### Parameters #### Request Body - **symbol** (string) - Required - Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple items allowed. - **start_date** (string) - Optional - Start date of the data, in YYYY-MM-DD format. - **end_date** (string) - Optional - End date of the data, in YYYY-MM-DD format. - **interval** (string) - Optional - Time interval of the data to return. Defaults to '1d'. Allowed values: '1m', '5m', '15m', '30m', '1h', '4h', '1d'. ### Request Example { "symbol": "BTC-USD", "start_date": "2023-01-01", "end_date": "2023-01-31", "interval": "1d" } ### Response #### Success Response (200) - **data** (array) - Array of historical price data objects. - **date** (string) - The date of the data point. - **open** (number) - The opening price. - **high** (number) - The highest price. - **low** (number) - The lowest price. - **close** (number) - The closing price. - **volume** (number) - The trading volume. #### Response Example { "data": [ { "date": "2023-01-01T00:00:00.000Z", "open": 16500.00, "high": 16600.00, "low": 16400.00, "close": 16550.00, "volume": 100000 } ] } ``` -------------------------------- ### Configure Environment Variables Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_openbb.ipynb Create a .env file to store sensitive API keys, including OpenAI API Key and OpenBB Personal Access Token (PAT). Ensure these are kept secure. ```python %%writefile .env OPENAI_API_KEY="" OBB_PAT="" ``` -------------------------------- ### Initiate Chat Conversation Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_earnings_call_sec_filings.ipynb Starts a chat conversation between the 'user_proxy' and 'tool_proxy' agents with a specific input message and a maximum of 10 turns. ```python input_text = "What is the strategy of Google for artificial intelligence?" chat_result = user_proxy.initiate_chat( recipient=tool_proxy, message=input_text, max_turns=10 ) ``` -------------------------------- ### Initialize AutoGen Agents for Financial Analysis Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/lmm_agent_mplfinance.ipynb Sets up a multimodal market analyst agent, a data provider agent, and a user proxy agent with specific configurations and system messages. ```python market_analyst = MultimodalConversableAgent( name="Market_Analyst", max_consecutive_auto_reply=10, llm_config={"config_list": config_list_4v, "temperature": 0}, system_message=dedent(""" Your are a Market Analyst. Your task is to analyze the financial data and market news. Reply "TERMINATE" in the end when everything is done. """) ) data_provider = AssistantAgent( name="Data_Provider", llm_config={"config_list": config_list_gpt4, "temperature": 0}, system_message=dedent(""" You are a Data Provider. Your task is to provide charts and necessary market information. Use the functions you have been provided with. Reply "TERMINATE" in the end when everything is done. ") ) user_proxy = UserProxyAgent( name="User_proxy", human_input_mode="NEVER", max_consecutive_auto_reply=10, is_termination_msg=lambda x: x.get("content", "") and x.get( "content", "").endswith("TERMINATE"), code_execution_config={ "work_dir": working_dir, "use_docker": False }, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly. ) ``` -------------------------------- ### Manage FinRobot Web Application Source: https://github.com/ai4finance-foundation/finrobot/blob/master/README.md These commands manage the FinRobot web application, allowing you to start, stop, restart, or check the status of the service. ```bash ./deploy.sh start ./deploy.sh stop ./deploy.sh restart ./deploy.sh status ``` -------------------------------- ### Initialize Trade Strategist and User Proxy Agents Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_advanced/agent_trade_strategist.ipynb Sets up the Trade Strategist and User Proxy agents for automated trading strategy development and execution. The Trade Strategist uses Backtrader for strategy creation, while the User Proxy handles execution and interaction. Necessary tools like backtesting and image display are registered. ```python strategist = autogen.AssistantAgent( name="Trade_Strategist", system_message=dedent(f""" You are a trading strategist known for your expertise in developing sophisticated trading algorithms. Your task is to leverage your coding skills to create a customized trading strategy using the BackTrader Python library, and save it as a Python module. Remember to log necessary information in the strategy so that further analysis could be done. You can also write custom sizer / indicator and save them as modules, which would allow you to generate more sophisticated strategies. After creating the strategy, you may backtest it with the tool you're provided to evaluate its performance and make any necessary adjustments. All files you created during coding will automatically be in `{work_dir}`, no need to specify the prefix. But when calling the backtest function, module path should be like `{work_dir.strip('/')}.` and savefig path should consider `{work_dir}` as well. Reply TERMINATE to executer when the strategy is ready to be tested. """), llm_config=llm_config, ) user_proxy = autogen.UserProxyAgent( name="User_Proxy", is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").endswith("TERMINATE"), human_input_mode="NEVER", # change this to "ALWAYS" if you want to manually interact with the strategist # max_consecutive_auto_reply=10, code_execution_config={ "last_n_messages": 1, "work_dir": work_dir, "use_docker": False, } ) register_code_writing(strategist, user_proxy) register_toolkits([BackTraderUtils.back_test, IPythonUtils.display_image], strategist, user_proxy) ``` -------------------------------- ### Configure OpenAI API Keys Source: https://github.com/ai4finance-foundation/finrobot/blob/master/tutorials_beginner/agent_rag_qa.ipynb Instructions for configuring OpenAI API keys by renaming the sample configuration file and updating API keys. ```bash # for openai configuration, rename OAI_CONFIG_LIST_sample to OAI_CONFIG_LIST and replace the api keys ```