from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder import time import json from tradingagents.default_config import DEFAULT_CONFIG from tradingagents.i18n import get_prompts def create_fundamentals_analyst(llm, toolkit): def fundamentals_analyst_node(state): current_date = state["trade_date"] ticker = state["asset_of_interest"] asset_name = state["asset_of_interest"] tools = [ toolkit.get_binance_ohlcv, toolkit.get_fundamentals_openai ] system_message = ( get_prompts("analysts", "fundamentals_analyst", "system_message") .replace("{max_tokens}", str(DEFAULT_CONFIG["max_tokens"])) ) prompt = ChatPromptTemplate.from_messages( [ ( "system", get_prompts("analysts", "template") ), MessagesPlaceholder(variable_name="messages"), ] ) prompt = prompt.partial(system_message=system_message) prompt = prompt.partial(tool_names=", ".join([tool.name for tool in tools])) prompt = prompt.partial(current_date=current_date) prompt = prompt.partial(ticker=ticker) chain = prompt | llm.bind_tools(tools) result = chain.invoke(state["messages"]) report = "" if len(result.tool_calls) == 0: report = result.content return { "messages": [result], "fundamentals_report": report, } return fundamentals_analyst_node