diff --git a/.env.example b/.env.example index 0f1f9a953..f1e8cbdf9 100644 --- a/.env.example +++ b/.env.example @@ -35,4 +35,7 @@ SEC_EMAIL= # refer to ./python/third_party/TradingAgents/.env.example for details # OpenAI API Key - Required for LLM models and online data search # Get your key from: https://platform.openai.com/api-keys -# OPENAI_API_KEY= \ No newline at end of file +OPENAI_API_KEY= +# Finnhub API Key - Required for financial news and insider trading data +# Get your free key from: https://finnhub.io/register +FINNHUB_API_KEY= \ No newline at end of file diff --git a/README.md b/README.md index 0c7a8811b..16a65bd0d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Python version - + License: Apache2.0
@@ -16,7 +16,7 @@ follow on X(Twitter) - + follow on LinkedIn diff --git a/README.zh.md b/README.zh.md index 7ba5ca9de..febf277c4 100644 --- a/README.zh.md +++ b/README.zh.md @@ -6,7 +6,7 @@ Python version - + License: Apache2.0
@@ -16,7 +16,7 @@ follow on X(Twitter) - + follow on LinkedIn diff --git a/frontend/src/constants/agent.ts b/frontend/src/constants/agent.ts index af5fef3ab..104a51fdd 100644 --- a/frontend/src/constants/agent.ts +++ b/frontend/src/constants/agent.ts @@ -66,6 +66,6 @@ export const AGENT_AVATAR_MAP: Record = { SentimentAnalystAgent: EmotionalAgencyPng, // System Agents - TradingAgentsAdapter: PortfolioManagerPng, + TradingAgents: PortfolioManagerPng, SECAgent: SecAgentPng, }; diff --git a/frontend/src/mock/agent-data.tsx b/frontend/src/mock/agent-data.tsx index 829e8208b..ef66d20c1 100644 --- a/frontend/src/mock/agent-data.tsx +++ b/frontend/src/mock/agent-data.tsx @@ -4,7 +4,7 @@ import { IconGroupPng, MessageGroupPng, TrendPng } from "@/assets/png"; export const agentSuggestions: AgentSuggestion[] = [ { - id: "TradingAgentsAdapter", + id: "TradingAgents", title: "Research Report", icon: , description: "Diversified in-depth analysis reports", diff --git a/python/configs/agent_cards/trading_agents.json b/python/configs/agent_cards/trading_agents.json index 8d83ca964..a6ea33899 100644 --- a/python/configs/agent_cards/trading_agents.json +++ b/python/configs/agent_cards/trading_agents.json @@ -1,5 +1,5 @@ { - "name": "TradingAgentsAdapter", + "name": "TradingAgents", "display_name": "Trading Agents", "url": "http://localhost:10002", "description": "TradingAgents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis", @@ -7,24 +7,22 @@ "streaming": true, "push_notifications": false }, - "skills": [ - { - "id": "trading_agents", - "name": "Trading Agents", - "description": "Trading Agents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis", - "examples": [ - "Analyze APPL using all analysts", - "Analyze NVDA using market and fundamentals analysts", - "Analyze TSLA using all analysts, date 2024-01-15, enable debug mode" - ], - "tags": [ - "analysis", - "multi-agent", - "stocks", - "US market" - ] - } - ], + "skills": [{ + "id": "trading_agents", + "name": "Trading Agents", + "description": "Trading Agents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis", + "examples": [ + "Analyze APPL using all analysts", + "Analyze NVDA using market and fundamentals analysts", + "Analyze TSLA using all analysts, date 2024-01-15, enable debug mode" + ], + "tags": [ + "analysis", + "multi-agent", + "stocks", + "US market" + ] + }], "provider": { "organization": "Tauric", "url": "https://arxiv.org/abs/2412.20138" diff --git a/python/scripts/launch.py b/python/scripts/launch.py index aca043e73..556da446b 100644 --- a/python/scripts/launch.py +++ b/python/scripts/launch.py @@ -31,7 +31,7 @@ "WarrenBuffettAgent": "warren_buffett", } SEC_AGENT_NAME = "SECAgent" -TRADING_AGENTS_NAME = "TradingAgentsAdapter" +TRADING_AGENTS_NAME = "TradingAgents" AGENTS = list(MAP_NAME_ANALYST.keys()) + [SEC_AGENT_NAME, TRADING_AGENTS_NAME] PROJECT_DIR = Path(__file__).resolve().parent.parent.parent diff --git a/python/third_party/TradingAgents/adapter/__main__.py b/python/third_party/TradingAgents/adapter/__main__.py index 256993237..8292dd165 100644 --- a/python/third_party/TradingAgents/adapter/__main__.py +++ b/python/third_party/TradingAgents/adapter/__main__.py @@ -181,7 +181,7 @@ class DialogueState(MessagesState): current_step: str = "parsing" -class TradingAgentsAdapter(BaseAgent): +class TradingAgents(BaseAgent): """TradingAgents adapter for valuecell core agent system""" def __init__(self): @@ -540,5 +540,5 @@ def _stream_analysis_results(self, request: TradingRequest, final_state: Dict, p if __name__ == "__main__": - agent = create_wrapped_agent(TradingAgentsAdapter) + agent = create_wrapped_agent(TradingAgents) asyncio.run(agent.serve()) diff --git a/python/third_party/TradingAgents/interactive_client.py b/python/third_party/TradingAgents/interactive_client.py index 13258fdeb..52e0e1ea6 100755 --- a/python/third_party/TradingAgents/interactive_client.py +++ b/python/third_party/TradingAgents/interactive_client.py @@ -33,7 +33,7 @@ class TradingAgentsInteractiveClient: def __init__(self): self.connections = RemoteConnections() - self.agent_name = "TradingAgentsAdapter" + self.agent_name = "TradingAgents" self.client: Optional[object] = None # Configuration options diff --git a/python/third_party/TradingAgents/start_adapter.py b/python/third_party/TradingAgents/start_adapter.py index c41105b46..b88eb42ba 100644 --- a/python/third_party/TradingAgents/start_adapter.py +++ b/python/third_party/TradingAgents/start_adapter.py @@ -20,7 +20,7 @@ sys.path.insert(0, str(valuecell_root)) from valuecell.core.agent.decorator import create_wrapped_agent -from adapter.__main__ import TradingAgentsAdapter +from adapter.__main__ import TradingAgents # Set logging logging.basicConfig( @@ -47,10 +47,10 @@ async def main(): try: setup_environment() - logger.info("🚀 Starting TradingAgents Adapter...") + logger.info("🚀 Starting TradingAgents ...") # Create and start agent - agent = create_wrapped_agent(TradingAgentsAdapter) + agent = create_wrapped_agent(TradingAgents) await agent.serve() except KeyboardInterrupt: diff --git a/python/valuecell/server/db/README.md b/python/valuecell/server/db/README.md index f75aff3a9..526609a6a 100644 --- a/python/valuecell/server/db/README.md +++ b/python/valuecell/server/db/README.md @@ -97,7 +97,7 @@ The Asset model represents financial assets in the ValueCell system, including s 3. **Create table structure**: Create agents and assets tables based on model definitions 4. **Initialize default data**: - **Agent data**: Insert default Agent records directly from code - - Create three default agents: AIHedgeFundAgent, Sec13FundAgent, and TradingAgentsAdapter + - Create three default agents: AIHedgeFundAgent, Sec13FundAgent, and TradingAgents - Support updating existing Agent configuration information - **Asset data**: Insert default Asset records for common financial instruments - Create default assets: AAPL, GOOGL, MSFT, SPY, BTC-USD @@ -114,7 +114,7 @@ The initialization script automatically creates default records directly in the 1. **AIHedgeFundAgent**: AI-powered hedge fund analysis and trading agent 2. **Sec13FundAgent**: SEC 13F fund analysis and tracking agent -3. **TradingAgentsAdapter**: Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis +3. **TradingAgents**: Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis #### Default Assets @@ -129,7 +129,7 @@ The initialization script automatically creates default records directly in the **Agent data structure example**: ```python { - "name": "TradingAgentsAdapter", + "name": "TradingAgents", "display_name": "Trading Agents Adapter", "description": "TradingAgents - Multi-agent trading analysis system", "version": "1.0.0", @@ -196,7 +196,7 @@ try: agents = session.query(Agent).filter(Agent.enabled == True).all() # Get specific agent - trading_agent = session.query(Agent).filter(Agent.name == "TradingAgentsAdapter").first() + trading_agent = session.query(Agent).filter(Agent.name == "TradingAgents").first() # Update agent status if trading_agent: