Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/chaosju_deepseek-finrobot.json
T

1 line
88 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "chaosju/deepseek-finrobot", "files": {"deepseek_finrobot/agents/agent_example.py": {"870daa29eb47a51cb7fd6593cca02c5da74e7d4c": {"t": 1785745433.9545302, "n": 8459, "h": "f1181b975ea2cdf3", "c": "\"\"\"\n代理示例模块 - 展示如何使用代理库中的代理\n\"\"\"\n\nimport os\nimport json\nfrom typing import Dict, Any, List\nfrom .agent_library import MarketForecasterAgent, FinancialReportAgent, NewsAnalysisAgent, IndustryAnalysisAgent, PortfolioManagerAgent, TechnicalAnalysisAgent\nfrom ..utils import get_current_date, format_financial_number\n\ndef load_llm_config(config_path: str = None) -> Dict[str, Any]:\n \"\"\"\n 加载LLM配置\n \n Args:\n config_path: 配置文件路径,如果为None则使用默认配置\n \n Returns:\n LLM配置字典\n \"\"\"\n if config_path and os.path.exists(config_path):\n with open(config_path, 'r', encoding='utf-8') as f:\n config = json.load(f)\n else:\n # 默认配置\n config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": os.environ.get(\"DEEPSEEK_API_KEY\", \"\"),\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n \"request_timeout\": 120,\n \"seed\": 42,\n \"config_list_timeout\": 60,\n }\n \n return config\n\ndef market_forecaster_example(symbol: str = \"000001\", days: int = 7):\n \"\"\"\n 市场预测代理示例\n \n Args:\n symbol: 股票代码\n days: 分析过去几天的数据和新闻\n \"\"\"\n print(f\"===== 市场预测代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建市场预测代理\n forecaster = MarketForecasterAgent(llm_config)\n \n # 预测股票走势\n prediction = forecaster.predict(symbol, days)\n \n print(\"预测结果:\")\n print(prediction)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef financial_report_example(symbol: str = \"000001\"):\n \"\"\"\n 财务报告代理示例\n \n Args:\n symbol: 股票代码\n \"\"\"\n print(f\"===== 财务报告代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建财务报告代理\n reporter = FinancialReportAgent(llm_config)\n \n # 生成财务分析报告\n report = reporter.generate_report(symbol)\n \n print(\"财务分析报告:\")\n print(report)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef news_analysis_example(keywords: str = \"人工智能\", days: int = 3, limit: int = 5):\n \"\"\"\n 新闻分析代理示例\n \n Args:\n keywords: 搜索关键词\n days: 分析过去几天的新闻\n limit: 分析的新闻数量\n \"\"\"\n print(f\"===== 新闻分析代理示例 - {get_current_date()} =====\")\n print(f\"关键词: {keywords}, 时间范围: 过去{days}天, 数量: {limit}\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建新闻分析代理\n analyzer = NewsAnalysisAgent(llm_config)\n \n # 分析财经新闻\n analysis = analyzer.analyze_news(keywords, days, limit)\n \n print(\"新闻分析结果:\")\n print(analysis)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef industry_analysis_example(industry: str = \"银行\", days: int = 30):\n \"\"\"\n 行业分析代理示例\n \n Args:\n industry: 行业名称\n days: 分析过去几天的数据和新闻\n \"\"\"\n print(f\"===== 行业分析代理示例 - {get_current_date()} =====\")\n print(f\"分析行业: {industry}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建行业分析代理\n analyzer = IndustryAnalysisAgent(llm_config)\n \n # 分析行业趋势\n analysis = analyzer.analyze_industry(industry, days)\n \n print(\"行业分析结果:\")\n print(analysis)\n \n # 导出分析结果\n output_file = f\"industry_analysis_{industry}_{get_current_date()}.md\"\n analyzer.export_analysis(analysis, format=\"markdown\", output_file=output_file)\n print(f\"\\n分析结果已导出到: {output_file}\")\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef portfolio_manager_example(stocks: List[str] = [\"000001\", \"600519\", \"000858\"], \n risk_preference: str = \"中等\", \n investment_horizon: str = \"长期\",\n investment_amount: float = 100000):\n \"\"\"\n 投资组合代理示例\n \n Args:\n stocks: 股票代码列表\n risk_preference: 风险偏好\n investment_horizon: 投资期限\n investment_amount: 投资金额\n \"\"\"\n print(f\"===== 投资组合代理示例 - {get_current_date()} =====\")\n print(f\"股票列表: {', '.join(stocks)}\")\n print(f\"风险偏好: {risk_preference}, 投资期限: {investment_horizon}, 投资金额: {format_financial_number(investment_amount)}元\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建投资组合代理\n portfolio_manager = PortfolioManagerAgent(llm_config)\n \n # 构建投资组合\n recommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=risk_preference,\n investment_horizon=investment_horizon,\n investment_amount=investment_amount\n )\n \n print(\"投资组合建议:\")\n print(recommendation)\n \n # 导出建议\n output_file = f\"portfolio_recommendation_{get_current_date()}.md\"\n portfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=output_file)\n print(f\"\\n建议已导出到: {output_file}\")\n \n # 优化投资组合示例\n print(\"\\n===== 投资组合优化示例 =====\\n\")\n \n # 假设的当前投资组合\n current_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n }\n \n print(\"当前投资组合:\")\n for symbol, weight in current_portfolio.items():\n print(f\" {symbol}: {weight*100:.2f}%\")\n \n # 优化投资组合\n optimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=risk_preference,\n investment_horizon=investment_horizon\n )\n \n print(\"\\n优化建议:\")\n print(optimization)\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef technical_analysis_example(symbol: str = \"000001\", period: str = \"daily\", days: int = 120):\n \"\"\"\n 技术分析代理示例\n \n Args:\n symbol: 股票代码\n period: 时间周期\n days: 分析过去几天的数据\n \"\"\"\n print(f\"===== 技术分析代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}, 时间周期: {period}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建技术分析代理\n analyst = TechnicalAnalysisAgent(llm_config)\n \n # 进行技术分析\n analysis = analyst.analyze(symbol, period, days)\n \n print(\"技术分析结果:\")\n print(analysis)\n \n # 导出分析结果\n output_file = f\"technical_analysis_{symbol}_{get_current_date()}.md\"\n analyst.export_analysis(analysis, format=\"markdown\", output_file=output_file)\n print(f\"\\n分析结果已导出到: {output_file}\")\n \n # 批量分析示例\n print(\"\\n===== 批量技术分析示例 =====\\n\")\n \n symbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\n print(f\"批量分析股票: {', '.join(symbols)}\\n\")\n \n # 批量进行技术分析\n analyses = analyst.batch_analyze(symbols, period, days, max_workers=3)\n \n for symbol, analysis in analyses.items():\n print(f\"股票 {symbol} 技术分析结果:\")\n print(analysis[:200] + \"...\\n\") # 只显示前200个字符\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef batch_analysis_example():\n \"\"\"\n 批量分析示例\n \"\"\"\n print(f\"===== 批量分析示例 - {get_current_date()} =====\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建市场预测代理\n forecaster = MarketForecasterAgent(llm_config)\n \n # 批量预测股票走势\n symbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\n print(f\"批量预测股票: {', '.join(symbols)}\\n\")\n \n predictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\n \n for symbol, prediction in predictions.items():\n print(f\"股票 {symbol} 预测结果:\")\n print(prediction[:200] + \"...\\n\") # 只显示前200个字符\n \n # 创建行业分析代理\n industry_analyzer = IndustryAnalysisAgent(llm_config)\n \n # 批量分析行业\n industries = [\"银行\", \"医药\", \"计算机\"]\n print(f\"批量分析行业: {', '.join(industries)}\\n\")\n \n analyses = industry_analyzer.batch_analyze(industries, days=30, max_workers=3)\n \n for industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果:\")\n print(analysis[:200] + \"...\\n\") # 只显示前200个字符\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef run_all_examples():\n \"\"\"\n 运行所有示例\n \"\"\"\n # 市场预测示例\n market_forecaster_example()\n \n # 财务报告示例\n financial_report_example()\n \n # 新闻分析示例\n news_analysis_example()\n \n # 行业分析示例\n industry_analysis_example()\n \n # 投资组合示例\n portfolio_manager_example()\n \n # 技术分析示例\n technical_analysis_example()\n \n # 批量分析示例\n batch_analysis_example()\n\nif __name__ == \"__main__\":\n # 运行单个示例\n # market_forecaster_example(\"000001\") # 平安银行\n \n # 或者运行行业分析示例\n # industry_analysis_example(\"银行\")\n \n # 或者运行投资组合示例\n portfolio_manager_example()\n \n # 或者运行技术分析示例\n # technical_analysis_example(\"000001\")\n \n # 或者运行批量分析示例\n # batch_analysis_example()\n \n # 或者运行所有示例\n # run_all_examples() "}, "118a816ad1eff07006be00c7352d955aa40b357c": {"t": 1785753172.8472288, "n": 8459, "h": "f1181b975ea2cdf3", "c": "\"\"\"\n代理示例模块 - 展示如何使用代理库中的代理\n\"\"\"\n\nimport os\nimport json\nfrom typing import Dict, Any, List\nfrom .agent_library import MarketForecasterAgent, FinancialReportAgent, NewsAnalysisAgent, IndustryAnalysisAgent, PortfolioManagerAgent, TechnicalAnalysisAgent\nfrom ..utils import get_current_date, format_financial_number\n\ndef load_llm_config(config_path: str = None) -> Dict[str, Any]:\n \"\"\"\n 加载LLM配置\n \n Args:\n config_path: 配置文件路径,如果为None则使用默认配置\n \n Returns:\n LLM配置字典\n \"\"\"\n if config_path and os.path.exists(config_path):\n with open(config_path, 'r', encoding='utf-8') as f:\n config = json.load(f)\n else:\n # 默认配置\n config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": os.environ.get(\"DEEPSEEK_API_KEY\", \"\"),\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n \"request_timeout\": 120,\n \"seed\": 42,\n \"config_list_timeout\": 60,\n }\n \n return config\n\ndef market_forecaster_example(symbol: str = \"000001\", days: int = 7):\n \"\"\"\n 市场预测代理示例\n \n Args:\n symbol: 股票代码\n days: 分析过去几天的数据和新闻\n \"\"\"\n print(f\"===== 市场预测代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建市场预测代理\n forecaster = MarketForecasterAgent(llm_config)\n \n # 预测股票走势\n prediction = forecaster.predict(symbol, days)\n \n print(\"预测结果:\")\n print(prediction)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef financial_report_example(symbol: str = \"000001\"):\n \"\"\"\n 财务报告代理示例\n \n Args:\n symbol: 股票代码\n \"\"\"\n print(f\"===== 财务报告代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建财务报告代理\n reporter = FinancialReportAgent(llm_config)\n \n # 生成财务分析报告\n report = reporter.generate_report(symbol)\n \n print(\"财务分析报告:\")\n print(report)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef news_analysis_example(keywords: str = \"人工智能\", days: int = 3, limit: int = 5):\n \"\"\"\n 新闻分析代理示例\n \n Args:\n keywords: 搜索关键词\n days: 分析过去几天的新闻\n limit: 分析的新闻数量\n \"\"\"\n print(f\"===== 新闻分析代理示例 - {get_current_date()} =====\")\n print(f\"关键词: {keywords}, 时间范围: 过去{days}天, 数量: {limit}\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建新闻分析代理\n analyzer = NewsAnalysisAgent(llm_config)\n \n # 分析财经新闻\n analysis = analyzer.analyze_news(keywords, days, limit)\n \n print(\"新闻分析结果:\")\n print(analysis)\n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef industry_analysis_example(industry: str = \"银行\", days: int = 30):\n \"\"\"\n 行业分析代理示例\n \n Args:\n industry: 行业名称\n days: 分析过去几天的数据和新闻\n \"\"\"\n print(f\"===== 行业分析代理示例 - {get_current_date()} =====\")\n print(f\"分析行业: {industry}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建行业分析代理\n analyzer = IndustryAnalysisAgent(llm_config)\n \n # 分析行业趋势\n analysis = analyzer.analyze_industry(industry, days)\n \n print(\"行业分析结果:\")\n print(analysis)\n \n # 导出分析结果\n output_file = f\"industry_analysis_{industry}_{get_current_date()}.md\"\n analyzer.export_analysis(analysis, format=\"markdown\", output_file=output_file)\n print(f\"\\n分析结果已导出到: {output_file}\")\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef portfolio_manager_example(stocks: List[str] = [\"000001\", \"600519\", \"000858\"], \n risk_preference: str = \"中等\", \n investment_horizon: str = \"长期\",\n investment_amount: float = 100000):\n \"\"\"\n 投资组合代理示例\n \n Args:\n stocks: 股票代码列表\n risk_preference: 风险偏好\n investment_horizon: 投资期限\n investment_amount: 投资金额\n \"\"\"\n print(f\"===== 投资组合代理示例 - {get_current_date()} =====\")\n print(f\"股票列表: {', '.join(stocks)}\")\n print(f\"风险偏好: {risk_preference}, 投资期限: {investment_horizon}, 投资金额: {format_financial_number(investment_amount)}元\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建投资组合代理\n portfolio_manager = PortfolioManagerAgent(llm_config)\n \n # 构建投资组合\n recommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=risk_preference,\n investment_horizon=investment_horizon,\n investment_amount=investment_amount\n )\n \n print(\"投资组合建议:\")\n print(recommendation)\n \n # 导出建议\n output_file = f\"portfolio_recommendation_{get_current_date()}.md\"\n portfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=output_file)\n print(f\"\\n建议已导出到: {output_file}\")\n \n # 优化投资组合示例\n print(\"\\n===== 投资组合优化示例 =====\\n\")\n \n # 假设的当前投资组合\n current_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n }\n \n print(\"当前投资组合:\")\n for symbol, weight in current_portfolio.items():\n print(f\" {symbol}: {weight*100:.2f}%\")\n \n # 优化投资组合\n optimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=risk_preference,\n investment_horizon=investment_horizon\n )\n \n print(\"\\n优化建议:\")\n print(optimization)\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef technical_analysis_example(symbol: str = \"000001\", period: str = \"daily\", days: int = 120):\n \"\"\"\n 技术分析代理示例\n \n Args:\n symbol: 股票代码\n period: 时间周期\n days: 分析过去几天的数据\n \"\"\"\n print(f\"===== 技术分析代理示例 - {get_current_date()} =====\")\n print(f\"分析股票: {symbol}, 时间周期: {period}, 时间范围: 过去{days}天\\n\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建技术分析代理\n analyst = TechnicalAnalysisAgent(llm_config)\n \n # 进行技术分析\n analysis = analyst.analyze(symbol, period, days)\n \n print(\"技术分析结果:\")\n print(analysis)\n \n # 导出分析结果\n output_file = f\"technical_analysis_{symbol}_{get_current_date()}.md\"\n analyst.export_analysis(analysis, format=\"markdown\", output_file=output_file)\n print(f\"\\n分析结果已导出到: {output_file}\")\n \n # 批量分析示例\n print(\"\\n===== 批量技术分析示例 =====\\n\")\n \n symbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\n print(f\"批量分析股票: {', '.join(symbols)}\\n\")\n \n # 批量进行技术分析\n analyses = analyst.batch_analyze(symbols, period, days, max_workers=3)\n \n for symbol, analysis in analyses.items():\n print(f\"股票 {symbol} 技术分析结果:\")\n print(analysis[:200] + \"...\\n\") # 只显示前200个字符\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef batch_analysis_example():\n \"\"\"\n 批量分析示例\n \"\"\"\n print(f\"===== 批量分析示例 - {get_current_date()} =====\")\n \n # 加载LLM配置\n llm_config = load_llm_config()\n \n # 创建市场预测代理\n forecaster = MarketForecasterAgent(llm_config)\n \n # 批量预测股票走势\n symbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\n print(f\"批量预测股票: {', '.join(symbols)}\\n\")\n \n predictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\n \n for symbol, prediction in predictions.items():\n print(f\"股票 {symbol} 预测结果:\")\n print(prediction[:200] + \"...\\n\") # 只显示前200个字符\n \n # 创建行业分析代理\n industry_analyzer = IndustryAnalysisAgent(llm_config)\n \n # 批量分析行业\n industries = [\"银行\", \"医药\", \"计算机\"]\n print(f\"批量分析行业: {', '.join(industries)}\\n\")\n \n analyses = industry_analyzer.batch_analyze(industries, days=30, max_workers=3)\n \n for industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果:\")\n print(analysis[:200] + \"...\\n\") # 只显示前200个字符\n \n print(\"\\n\" + \"=\"*50 + \"\\n\")\n\ndef run_all_examples():\n \"\"\"\n 运行所有示例\n \"\"\"\n # 市场预测示例\n market_forecaster_example()\n \n # 财务报告示例\n financial_report_example()\n \n # 新闻分析示例\n news_analysis_example()\n \n # 行业分析示例\n industry_analysis_example()\n \n # 投资组合示例\n portfolio_manager_example()\n \n # 技术分析示例\n technical_analysis_example()\n \n # 批量分析示例\n batch_analysis_example()\n\nif __name__ == \"__main__\":\n # 运行单个示例\n # market_forecaster_example(\"000001\") # 平安银行\n \n # 或者运行行业分析示例\n # industry_analysis_example(\"银行\")\n \n # 或者运行投资组合示例\n portfolio_manager_example()\n \n # 或者运行技术分析示例\n # technical_analysis_example(\"000001\")\n \n # 或者运行批量分析示例\n # batch_analysis_example()\n \n # 或者运行所有示例\n # run_all_examples() "}}, "README.md": {"870daa29eb47a51cb7fd6593cca02c5da74e7d4c": {"t": 1785746365.9518588, "n": 7956, "h": "4674dee2fcae527a", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 项目结构\n\nDeepSeek FinRobot 项目由以下主要组件构成:\n\n- **agents/** - 多种金融AI代理的实现,包括市场预测、财务报告、新闻分析等专业代理\n- **data_source/** - 数据源接口,用于获取金融市场数据、新闻和公司信息\n- **utils.py** - 工具函数模块,提供各种辅助功能\n- **cli.py** - 命令行接口,便于用户快速使用各种代理功能\n- **openai_adapter.py** - DeepSeek API适配器,提供与DeepSeek大语言模型交互的标准接口\n- **tests/** - 测试目录,包含所有测试用例和测试数据\n\n### openai_adapter.py\n\n`openai_adapter.py` 模块是整个项目的核心组件之一,它提供了与DeepSeek API进行交互的标准接口。主要功能包括:\n\n- **get_completion()** - 单轮问答接口,向DeepSeek模型发送单个提示并获取回复\n- **get_chat_completion()** - 多轮对话接口,支持发送消息列表实现连续对话\n- **get_llm_config_for_autogen()** - 生成适用于AutoGen框架的配置,是连接DeepSeek API和AutoGen框架的桥梁\n\n这个适配器的设计类似于OpenAI API的接口格式,使得项目可以方便地使用DeepSeek的大语言模型服务,同时保持与其他LLM提供商的兼容性。\n\n### utils.py中的关键函数\n\n`utils.py` 文件包含多个重要的工具函数,其中包括:\n\n- **get_deepseek_config()** - 获取DeepSeek API配置列表,用于设置与DeepSeek API的连接\n- **get_deepseek_config_from_api_keys()** - 从config_api_keys.json文件生成DeepSeek API配置列表\n- **cache_data()**, **get_cached_data()** - 提供数据缓存功能,提高性能\n- **format_financial_number()** - 格式化金融数字,便于阅读和展示\n\n## 快速开始\n\n### 下载仓库\n\n首先,下载项目代码:\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek-finrobot\n```\n\n### 配置API密钥\n\n在安装依赖之前,需要配置DeepSeek API密钥。创建或编辑`config_api_keys.json`文件,添加您的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"OPENAI_API_KEY\": \"placeholder\" // 可选,用于AutoGen框架兼容性\n}\n```\n\n### 安装\n\n完成API密钥配置后,您可以使用以下命令快速安装:\n\n```bash\n# 使用安装脚本(自动创建虚拟环境并安装所有依赖)\nbash install.sh\n```\n\n您也可以手动安装:\n\n```bash\n# 创建虚拟环境(推荐)\npython -m venv finrobot_env\nsource finrobot_env/bin/activate # Linux/Mac\n# 或 finrobot_env\\Scripts\\activate # Windows\n\n# 安装所有依赖\npip install -r requirements.txt # 安装所有必要的依赖\npip install -e . # 以开发模式安装项目本身\n```\n\n#### 关键依赖\n\n项目依赖以下主要包:\n\n- **openai>=1.72.0** - OpenAI API客户端,用于与DeepSeek API交互\n- **pyautogen>=0.8.5** - AutoGen框架,用于构建AI代理\n- **pandas & numpy** - 数据处理核心组件\n- **matplotlib>=3.10.0** - 用于数据可视化\n- **akshare>=1.16.0** - 中国金融数据接口\n- **requests>=2.31.0** - 处理HTTP请求\n\n### 验证安装\n\n安装完成后,您可以运行以下测试脚本来验证安装是否正确:\n\n```bash\n# 测试基本功能\npython test_minimal.py\n\n# 测试API密钥(需要先配置API密钥)\npython test_api_key.py\n\n# 测试市场预测代理(需要先配置API密钥)\npython test_market_agent.py\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 其他代理\n\n项目还支持以下代理:\n- **技术分析代理** (`TechnicalAnalysisAgent`)\n- **财务报告代理** (`FinancialReportAgent`)\n- **新闻分析代理** (`NewsAnalysisAgent`)\n\n### 使用命令行工具\n\n```bash\n# 预测股票走势\npython -m deepseek_finrobot.cli predict 000001 --days 7 --export --format markdown (已经测试)\n\n# 构建投资组合\npython -m deepseek_finrobot.cli portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export (已经测试)\n\n# 分析行业趋势\n# 行业名称按照股票行业分类\npython -m deepseek_finrobot.cli industry 银行 --days 30 --export(已经测试)\n\n# 分析财经新闻\npython -m deepseek_finrobot.cli news 人工智能 --days 3 --limit 10 (未测试)\n```\n\n## 直接使用DeepSeek API适配器\n\n除了使用预构建的代理,您还可以直接使用`openai_adapter.py`模块中的函数来与DeepSeek API交互:\n\n```python\nimport os\nfrom deepseek_finrobot.openai_adapter import get_completion, get_chat_completion\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 单轮问答示例\nresponse = get_completion(\n prompt=\"分析贵州茅台(600519)的投资价值\",\n model=\"deepseek-chat\",\n temperature=0.7,\n max_tokens=1500\n)\nprint(response)\n\n# 多轮对话示例\nmessages = [\n {\"role\": \"user\", \"content\": \"你是一个专业的金融分析师\"},\n {\"role\": \"assistant\", \"content\": \"您好,我是一名专业的金融分析师,擅长股票分析、行业研究和投资组合管理。请问有什么可以帮助您的?\"},\n {\"role\": \"user\", \"content\": \"分析一下最近A股市场的整体走势\"}\n]\nresponse = get_chat_completion(\n messages=messages,\n model=\"deepseek-chat\",\n temperature=0.5,\n max_tokens=2000\n)\nprint(response)\n```\n\n### 与AutoGen框架集成\n\n您也可以使用`get_llm_config_for_autogen`函数生成与AutoGen框架兼容的配置:\n\n```python\nimport os\nimport autogen\nfrom deepseek_finrobot.openai_adapter import get_llm_config_for_autogen\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 获取AutoGen兼容的配置\nconfig = get_llm_config_for_autogen(\n model=\"deepseek-chat\",\n temperature=0.7,\n base_url=\"https://api.deepseek.com/v1\"\n)\n\n# 创建AutoGen代理\nassistant = autogen.AssistantAgent(\n name=\"金融助手\",\n llm_config=config,\n system_message=\"您是一位专业的金融分析师,擅长分析市场趋势和投资机会。\"\n)\n\nuser_proxy = autogen.UserProxyAgent(\n name=\"用户\",\n human_input_mode=\"TERMINATE\",\n max_consecutive_auto_reply=10,\n is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n)\n\n# 启动对话\nuser_proxy.initiate_chat(\n assistant,\n message=\"分析一下当前A股市场的投资机会,重点关注科技和消费板块。\"\n)\n```\n\n## 测试工具\n\n项目提供了多个测试脚本,帮助验证安装和功能:\n\n- **test_minimal.py** - 测试基本工具函数和环境设置\n- **test_api_key.py** - 测试DeepSeek API密钥有效性\n- **test_agent.py** - 测试市场预测代理的基本功能\n- **test_market_agent.py** - 使用真实API密钥测试市场预测功能\n- **test_all.py** - 全面测试项目的所有主要组件\n\n使用这些测试脚本可以帮助您验证安装是否正确,以及API密钥是否有效。\n\n## 运行测试\n\n项目包含一套完整的测试套件,用于验证各个组件的功能。测试文件位于`tests/`目录中。\n\n### 运行所有测试\n\n使用提供的测试运行脚本:\n\n```bash\npython run_tests.py\n```\n\n这将运行所有测试并生成覆盖率报告。\n\n### 运行特定测试\n\n您也可以使用pytest直接运行特定测试:\n\n```bash\n# 运行特定测试文件\npytest tests/test_minimal.py\n\n# 运行特定测试函数\npytest tests/test_minimal.py::test_basic_functionality\n\n# 运行包含特定关键字的测试\npytest -k \"basic\"\n```\n\n### 测试覆盖率\n\n测试运行后,覆盖率报告将生成在`coverage_report/`目录中。您可以在浏览器中打开`coverage_report/index.html`查看详细的覆盖率报告。\n\n## 贡献指南\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}, "26a49fc047cdc4e6b18d9aba297f5745bc7722ec": {"t": 1785753172.8831477, "n": 7956, "h": "4674dee2fcae527a", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 项目结构\n\nDeepSeek FinRobot 项目由以下主要组件构成:\n\n- **agents/** - 多种金融AI代理的实现,包括市场预测、财务报告、新闻分析等专业代理\n- **data_source/** - 数据源接口,用于获取金融市场数据、新闻和公司信息\n- **utils.py** - 工具函数模块,提供各种辅助功能\n- **cli.py** - 命令行接口,便于用户快速使用各种代理功能\n- **openai_adapter.py** - DeepSeek API适配器,提供与DeepSeek大语言模型交互的标准接口\n- **tests/** - 测试目录,包含所有测试用例和测试数据\n\n### openai_adapter.py\n\n`openai_adapter.py` 模块是整个项目的核心组件之一,它提供了与DeepSeek API进行交互的标准接口。主要功能包括:\n\n- **get_completion()** - 单轮问答接口,向DeepSeek模型发送单个提示并获取回复\n- **get_chat_completion()** - 多轮对话接口,支持发送消息列表实现连续对话\n- **get_llm_config_for_autogen()** - 生成适用于AutoGen框架的配置,是连接DeepSeek API和AutoGen框架的桥梁\n\n这个适配器的设计类似于OpenAI API的接口格式,使得项目可以方便地使用DeepSeek的大语言模型服务,同时保持与其他LLM提供商的兼容性。\n\n### utils.py中的关键函数\n\n`utils.py` 文件包含多个重要的工具函数,其中包括:\n\n- **get_deepseek_config()** - 获取DeepSeek API配置列表,用于设置与DeepSeek API的连接\n- **get_deepseek_config_from_api_keys()** - 从config_api_keys.json文件生成DeepSeek API配置列表\n- **cache_data()**, **get_cached_data()** - 提供数据缓存功能,提高性能\n- **format_financial_number()** - 格式化金融数字,便于阅读和展示\n\n## 快速开始\n\n### 下载仓库\n\n首先,下载项目代码:\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek-finrobot\n```\n\n### 配置API密钥\n\n在安装依赖之前,需要配置DeepSeek API密钥。创建或编辑`config_api_keys.json`文件,添加您的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"OPENAI_API_KEY\": \"placeholder\" // 可选,用于AutoGen框架兼容性\n}\n```\n\n### 安装\n\n完成API密钥配置后,您可以使用以下命令快速安装:\n\n```bash\n# 使用安装脚本(自动创建虚拟环境并安装所有依赖)\nbash install.sh\n```\n\n您也可以手动安装:\n\n```bash\n# 创建虚拟环境(推荐)\npython -m venv finrobot_env\nsource finrobot_env/bin/activate # Linux/Mac\n# 或 finrobot_env\\Scripts\\activate # Windows\n\n# 安装所有依赖\npip install -r requirements.txt # 安装所有必要的依赖\npip install -e . # 以开发模式安装项目本身\n```\n\n#### 关键依赖\n\n项目依赖以下主要包:\n\n- **openai>=1.72.0** - OpenAI API客户端,用于与DeepSeek API交互\n- **pyautogen>=0.8.5** - AutoGen框架,用于构建AI代理\n- **pandas & numpy** - 数据处理核心组件\n- **matplotlib>=3.10.0** - 用于数据可视化\n- **akshare>=1.16.0** - 中国金融数据接口\n- **requests>=2.31.0** - 处理HTTP请求\n\n### 验证安装\n\n安装完成后,您可以运行以下测试脚本来验证安装是否正确:\n\n```bash\n# 测试基本功能\npython test_minimal.py\n\n# 测试API密钥(需要先配置API密钥)\npython test_api_key.py\n\n# 测试市场预测代理(需要先配置API密钥)\npython test_market_agent.py\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 其他代理\n\n项目还支持以下代理:\n- **技术分析代理** (`TechnicalAnalysisAgent`)\n- **财务报告代理** (`FinancialReportAgent`)\n- **新闻分析代理** (`NewsAnalysisAgent`)\n\n### 使用命令行工具\n\n```bash\n# 预测股票走势\npython -m deepseek_finrobot.cli predict 000001 --days 7 --export --format markdown (已经测试)\n\n# 构建投资组合\npython -m deepseek_finrobot.cli portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export (已经测试)\n\n# 分析行业趋势\n# 行业名称按照股票行业分类\npython -m deepseek_finrobot.cli industry 银行 --days 30 --export(已经测试)\n\n# 分析财经新闻\npython -m deepseek_finrobot.cli news 人工智能 --days 3 --limit 10 (未测试)\n```\n\n## 直接使用DeepSeek API适配器\n\n除了使用预构建的代理,您还可以直接使用`openai_adapter.py`模块中的函数来与DeepSeek API交互:\n\n```python\nimport os\nfrom deepseek_finrobot.openai_adapter import get_completion, get_chat_completion\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 单轮问答示例\nresponse = get_completion(\n prompt=\"分析贵州茅台(600519)的投资价值\",\n model=\"deepseek-chat\",\n temperature=0.7,\n max_tokens=1500\n)\nprint(response)\n\n# 多轮对话示例\nmessages = [\n {\"role\": \"user\", \"content\": \"你是一个专业的金融分析师\"},\n {\"role\": \"assistant\", \"content\": \"您好,我是一名专业的金融分析师,擅长股票分析、行业研究和投资组合管理。请问有什么可以帮助您的?\"},\n {\"role\": \"user\", \"content\": \"分析一下最近A股市场的整体走势\"}\n]\nresponse = get_chat_completion(\n messages=messages,\n model=\"deepseek-chat\",\n temperature=0.5,\n max_tokens=2000\n)\nprint(response)\n```\n\n### 与AutoGen框架集成\n\n您也可以使用`get_llm_config_for_autogen`函数生成与AutoGen框架兼容的配置:\n\n```python\nimport os\nimport autogen\nfrom deepseek_finrobot.openai_adapter import get_llm_config_for_autogen\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 获取AutoGen兼容的配置\nconfig = get_llm_config_for_autogen(\n model=\"deepseek-chat\",\n temperature=0.7,\n base_url=\"https://api.deepseek.com/v1\"\n)\n\n# 创建AutoGen代理\nassistant = autogen.AssistantAgent(\n name=\"金融助手\",\n llm_config=config,\n system_message=\"您是一位专业的金融分析师,擅长分析市场趋势和投资机会。\"\n)\n\nuser_proxy = autogen.UserProxyAgent(\n name=\"用户\",\n human_input_mode=\"TERMINATE\",\n max_consecutive_auto_reply=10,\n is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n)\n\n# 启动对话\nuser_proxy.initiate_chat(\n assistant,\n message=\"分析一下当前A股市场的投资机会,重点关注科技和消费板块。\"\n)\n```\n\n## 测试工具\n\n项目提供了多个测试脚本,帮助验证安装和功能:\n\n- **test_minimal.py** - 测试基本工具函数和环境设置\n- **test_api_key.py** - 测试DeepSeek API密钥有效性\n- **test_agent.py** - 测试市场预测代理的基本功能\n- **test_market_agent.py** - 使用真实API密钥测试市场预测功能\n- **test_all.py** - 全面测试项目的所有主要组件\n\n使用这些测试脚本可以帮助您验证安装是否正确,以及API密钥是否有效。\n\n## 运行测试\n\n项目包含一套完整的测试套件,用于验证各个组件的功能。测试文件位于`tests/`目录中。\n\n### 运行所有测试\n\n使用提供的测试运行脚本:\n\n```bash\npython run_tests.py\n```\n\n这将运行所有测试并生成覆盖率报告。\n\n### 运行特定测试\n\n您也可以使用pytest直接运行特定测试:\n\n```bash\n# 运行特定测试文件\npytest tests/test_minimal.py\n\n# 运行特定测试函数\npytest tests/test_minimal.py::test_basic_functionality\n\n# 运行包含特定关键字的测试\npytest -k \"basic\"\n```\n\n### 测试覆盖率\n\n测试运行后,覆盖率报告将生成在`coverage_report/`目录中。您可以在浏览器中打开`coverage_report/index.html`查看详细的覆盖率报告。\n\n## 贡献指南\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}, "9f1c7f9685876dd9c25eddf6ba1cfe8277dfb5f6": {"t": 1785753175.461903, "n": 7501, "h": "20b42c8f57a33844", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 项目结构\n\nDeepSeek FinRobot 项目由以下主要组件构成:\n\n- **agents/** - 多种金融AI代理的实现,包括市场预测、财务报告、新闻分析等专业代理\n- **data_source/** - 数据源接口,用于获取金融市场数据、新闻和公司信息\n- **utils.py** - 工具函数模块,提供各种辅助功能\n- **cli.py** - 命令行接口,便于用户快速使用各种代理功能\n- **openai_adapter.py** - DeepSeek API适配器,提供与DeepSeek大语言模型交互的标准接口\n\n### openai_adapter.py\n\n`openai_adapter.py` 模块是整个项目的核心组件之一,它提供了与DeepSeek API进行交互的标准接口。主要功能包括:\n\n- **get_completion()** - 单轮问答接口,向DeepSeek模型发送单个提示并获取回复\n- **get_chat_completion()** - 多轮对话接口,支持发送消息列表实现连续对话\n- **get_llm_config_for_autogen()** - 生成适用于AutoGen框架的配置,是连接DeepSeek API和AutoGen框架的桥梁\n\n这个适配器的设计类似于OpenAI API的接口格式,使得项目可以方便地使用DeepSeek的大语言模型服务,同时保持与其他LLM提供商的兼容性。\n\n### utils.py中的关键函数\n\n`utils.py` 文件包含多个重要的工具函数,其中包括:\n\n- **get_deepseek_config()** - 获取DeepSeek API配置列表,用于设置与DeepSeek API的连接\n- **get_deepseek_config_from_api_keys()** - 从config_api_keys.json文件生成DeepSeek API配置列表\n- **cache_data()**, **get_cached_data()** - 提供数据缓存功能,提高性能\n- **format_financial_number()** - 格式化金融数字,便于阅读和展示\n\n## 快速开始\n\n### 下载仓库\n\n首先,下载项目代码:\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek-finrobot\n```\n\n### 配置API密钥\n\n在安装依赖之前,需要配置DeepSeek API密钥。创建或编辑`config_api_keys.json`文件,添加您的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"OPENAI_API_KEY\": \"placeholder\" // 可选,用于AutoGen框架兼容性\n}\n```\n\n### 安装\n\n完成API密钥配置后,您可以使用以下命令快速安装:\n\n```bash\n# 使用安装脚本(自动创建虚拟环境并安装所有依赖)\nbash install.sh\n```\n\n您也可以手动安装:\n\n```bash\n# 创建虚拟环境(推荐)\npython -m venv finrobot_env\nsource finrobot_env/bin/activate # Linux/Mac\n# 或 finrobot_env\\Scripts\\activate # Windows\n\n# 安装所有依赖\npip install -r requirements.txt # 安装所有必要的依赖\npip install -e . # 以开发模式安装项目本身\n```\n\n#### 关键依赖\n\n项目依赖以下主要包:\n\n- **openai>=1.72.0** - OpenAI API客户端,用于与DeepSeek API交互\n- **pyautogen>=0.8.5** - AutoGen框架,用于构建AI代理\n- **pandas & numpy** - 数据处理核心组件\n- **matplotlib>=3.10.0** - 用于数据可视化\n- **akshare>=1.16.0** - 中国金融数据接口\n- **requests>=2.31.0** - 处理HTTP请求\n\n### 验证安装\n\n安装完成后,您可以运行以下测试脚本来验证安装是否正确:\n\n```bash\n# 测试基本功能\npython test_minimal.py\n\n# 测试API密钥(需要先配置API密钥)\npython test_api_key.py\n\n# 测试市场预测代理(需要先配置API密钥)\npython test_market_agent.py\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 其他代理\n\n项目还支持以下代理:\n- **技术分析代理** (`TechnicalAnalysisAgent`)\n- **财务报告代理** (`FinancialReportAgent`)\n- **新闻分析代理** (`NewsAnalysisAgent`)\n\n### 使用命令行工具\n\n```bash\n# 预测股票走势\npython -m deepseek_finrobot.cli predict 000001 --days 7 --export --format markdown (已经测试)\n\n# 构建投资组合\npython -m deepseek_finrobot.cli portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export (已经测试)\n\n# 分析行业趋势\n# 行业名称按照股票行业分类\npython -m deepseek_finrobot.cli industry 银行 --days 30 --export(已经测试)\n\n# 分析财经新闻\npython -m deepseek_finrobot.cli news 人工智能 --days 3 --limit 10 (未测试)\n```\n\n## 直接使用DeepSeek API适配器\n\n除了使用预构建的代理,您还可以直接使用`openai_adapter.py`模块中的函数来与DeepSeek API交互:\n\n```python\nimport os\nfrom deepseek_finrobot.openai_adapter import get_completion, get_chat_completion\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 单轮问答示例\nresponse = get_completion(\n prompt=\"分析贵州茅台(600519)的投资价值\",\n model=\"deepseek-chat\",\n temperature=0.7,\n max_tokens=1500\n)\nprint(response)\n\n# 多轮对话示例\nmessages = [\n {\"role\": \"user\", \"content\": \"你是一个专业的金融分析师\"},\n {\"role\": \"assistant\", \"content\": \"您好,我是一名专业的金融分析师,擅长股票分析、行业研究和投资组合管理。请问有什么可以帮助您的?\"},\n {\"role\": \"user\", \"content\": \"分析一下最近A股市场的整体走势\"}\n]\nresponse = get_chat_completion(\n messages=messages,\n model=\"deepseek-chat\",\n temperature=0.5,\n max_tokens=2000\n)\nprint(response)\n```\n\n### 与AutoGen框架集成\n\n您也可以使用`get_llm_config_for_autogen`函数生成与AutoGen框架兼容的配置:\n\n```python\nimport os\nimport autogen\nfrom deepseek_finrobot.openai_adapter import get_llm_config_for_autogen\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 获取AutoGen兼容的配置\nconfig = get_llm_config_for_autogen(\n model=\"deepseek-chat\",\n temperature=0.7,\n base_url=\"https://api.deepseek.com/v1\"\n)\n\n# 创建AutoGen代理\nassistant = autogen.AssistantAgent(\n name=\"金融助手\",\n llm_config=config,\n system_message=\"您是一位专业的金融分析师,擅长分析市场趋势和投资机会。\"\n)\n\nuser_proxy = autogen.UserProxyAgent(\n name=\"用户\",\n human_input_mode=\"TERMINATE\",\n max_consecutive_auto_reply=10,\n is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n)\n\n# 启动对话\nuser_proxy.initiate_chat(\n assistant,\n message=\"分析一下当前A股市场的投资机会,重点关注科技和消费板块。\"\n)\n```\n\n## 测试工具\n\n项目提供了多个测试脚本,帮助验证安装和功能:\n\n- **test_minimal.py** - 测试基本工具函数和环境设置\n- **test_api_key.py** - 测试DeepSeek API密钥有效性\n- **test_agent.py** - 测试市场预测代理的基本功能\n- **test_market_agent.py** - 使用真实API密钥测试市场预测功能\n- **test_all.py** - 全面测试项目的所有主要组件\n\n使用这些测试脚本可以帮助您验证安装是否正确,以及API密钥是否有效。\n\n## 免责声明\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}, "24adb124afa798c60747c2cd2135faba8a859ce0": {"t": 1785753176.8919365, "n": 7474, "h": "55248b9a8f597940", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 项目结构\n\nDeepSeek FinRobot 项目由以下主要组件构成:\n\n- **agents/** - 多种金融AI代理的实现,包括市场预测、财务报告、新闻分析等专业代理\n- **data_source/** - 数据源接口,用于获取金融市场数据、新闻和公司信息\n- **utils.py** - 工具函数模块,提供各种辅助功能\n- **cli.py** - 命令行接口,便于用户快速使用各种代理功能\n- **openai_adapter.py** - DeepSeek API适配器,提供与DeepSeek大语言模型交互的标准接口\n\n### openai_adapter.py\n\n`openai_adapter.py` 模块是整个项目的核心组件之一,它提供了与DeepSeek API进行交互的标准接口。主要功能包括:\n\n- **get_completion()** - 单轮问答接口,向DeepSeek模型发送单个提示并获取回复\n- **get_chat_completion()** - 多轮对话接口,支持发送消息列表实现连续对话\n- **get_llm_config_for_autogen()** - 生成适用于AutoGen框架的配置,是连接DeepSeek API和AutoGen框架的桥梁\n\n这个适配器的设计类似于OpenAI API的接口格式,使得项目可以方便地使用DeepSeek的大语言模型服务,同时保持与其他LLM提供商的兼容性。\n\n### utils.py中的关键函数\n\n`utils.py` 文件包含多个重要的工具函数,其中包括:\n\n- **get_deepseek_config()** - 获取DeepSeek API配置列表,用于设置与DeepSeek API的连接\n- **get_deepseek_config_from_api_keys()** - 从config_api_keys.json文件生成DeepSeek API配置列表\n- **cache_data()**, **get_cached_data()** - 提供数据缓存功能,提高性能\n- **format_financial_number()** - 格式化金融数字,便于阅读和展示\n\n## 快速开始\n\n### 下载仓库\n\n首先,下载项目代码:\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek-finrobot\n```\n\n### 配置API密钥\n\n在安装依赖之前,需要配置DeepSeek API密钥。创建或编辑`config_api_keys.json`文件,添加您的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"OPENAI_API_KEY\": \"placeholder\" // 可选,用于AutoGen框架兼容性\n}\n```\n\n### 安装\n\n完成API密钥配置后,您可以使用以下命令快速安装:\n\n```bash\n# 使用安装脚本(自动创建虚拟环境并安装所有依赖)\nbash install.sh\n```\n\n您也可以手动安装:\n\n```bash\n# 创建虚拟环境(推荐)\npython -m venv finrobot_env\nsource finrobot_env/bin/activate # Linux/Mac\n# 或 finrobot_env\\Scripts\\activate # Windows\n\n# 安装所有依赖\npip install -r requirements.txt # 安装所有必要的依赖\npip install -e . # 以开发模式安装项目本身\n```\n\n#### 关键依赖\n\n项目依赖以下主要包:\n\n- **openai>=1.72.0** - OpenAI API客户端,用于与DeepSeek API交互\n- **pyautogen>=0.8.5** - AutoGen框架,用于构建AI代理\n- **pandas & numpy** - 数据处理核心组件\n- **matplotlib>=3.10.0** - 用于数据可视化\n- **akshare>=1.16.0** - 中国金融数据接口\n- **requests>=2.31.0** - 处理HTTP请求\n\n### 验证安装\n\n安装完成后,您可以运行以下测试脚本来验证安装是否正确:\n\n```bash\n# 测试基本功能\npython test_minimal.py\n\n# 测试API密钥(需要先配置API密钥)\npython test_api_key.py\n\n# 测试市场预测代理(需要先配置API密钥)\npython test_market_agent.py\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 其他代理\n\n项目还支持以下代理:\n- **技术分析代理** (`TechnicalAnalysisAgent`)\n- **财务报告代理** (`FinancialReportAgent`)\n- **新闻分析代理** (`NewsAnalysisAgent`)\n\n### 使用命令行工具\n\n```bash\n# 预测股票走势\npython -m deepseek_finrobot.cli predict 000001 --days 7 --export --format markdown (已经测试)\n\n# 分析行业趋势\npython -m deepseek_finrobot.cli industry 银行 --days 30 --export\n\n# 分析财经新闻\npython -m deepseek_finrobot.cli news 人工智能 --days 3 --limit 10\n\n# 构建投资组合\npython -m deepseek_finrobot.cli portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export (已经测试)\n```\n\n## 直接使用DeepSeek API适配器\n\n除了使用预构建的代理,您还可以直接使用`openai_adapter.py`模块中的函数来与DeepSeek API交互:\n\n```python\nimport os\nfrom deepseek_finrobot.openai_adapter import get_completion, get_chat_completion\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 单轮问答示例\nresponse = get_completion(\n prompt=\"分析贵州茅台(600519)的投资价值\",\n model=\"deepseek-chat\",\n temperature=0.7,\n max_tokens=1500\n)\nprint(response)\n\n# 多轮对话示例\nmessages = [\n {\"role\": \"user\", \"content\": \"你是一个专业的金融分析师\"},\n {\"role\": \"assistant\", \"content\": \"您好,我是一名专业的金融分析师,擅长股票分析、行业研究和投资组合管理。请问有什么可以帮助您的?\"},\n {\"role\": \"user\", \"content\": \"分析一下最近A股市场的整体走势\"}\n]\nresponse = get_chat_completion(\n messages=messages,\n model=\"deepseek-chat\",\n temperature=0.5,\n max_tokens=2000\n)\nprint(response)\n```\n\n### 与AutoGen框架集成\n\n您也可以使用`get_llm_config_for_autogen`函数生成与AutoGen框架兼容的配置:\n\n```python\nimport os\nimport autogen\nfrom deepseek_finrobot.openai_adapter import get_llm_config_for_autogen\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 获取AutoGen兼容的配置\nconfig = get_llm_config_for_autogen(\n model=\"deepseek-chat\",\n temperature=0.7,\n base_url=\"https://api.deepseek.com/v1\"\n)\n\n# 创建AutoGen代理\nassistant = autogen.AssistantAgent(\n name=\"金融助手\",\n llm_config=config,\n system_message=\"您是一位专业的金融分析师,擅长分析市场趋势和投资机会。\"\n)\n\nuser_proxy = autogen.UserProxyAgent(\n name=\"用户\",\n human_input_mode=\"TERMINATE\",\n max_consecutive_auto_reply=10,\n is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n)\n\n# 启动对话\nuser_proxy.initiate_chat(\n assistant,\n message=\"分析一下当前A股市场的投资机会,重点关注科技和消费板块。\"\n)\n```\n\n## 测试工具\n\n项目提供了多个测试脚本,帮助验证安装和功能:\n\n- **test_minimal.py** - 测试基本工具函数和环境设置\n- **test_api_key.py** - 测试DeepSeek API密钥有效性\n- **test_agent.py** - 测试市场预测代理的基本功能\n- **test_market_agent.py** - 使用真实API密钥测试市场预测功能\n- **test_all.py** - 全面测试项目的所有主要组件\n\n使用这些测试脚本可以帮助您验证安装是否正确,以及API密钥是否有效。\n\n## 免责声明\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}, "a5d4135f7bec309800bd704a5b717a4281820abb": {"t": 1785753178.148248, "n": 7460, "h": "90c2bbae645de0aa", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 项目结构\n\nDeepSeek FinRobot 项目由以下主要组件构成:\n\n- **agents/** - 多种金融AI代理的实现,包括市场预测、财务报告、新闻分析等专业代理\n- **data_source/** - 数据源接口,用于获取金融市场数据、新闻和公司信息\n- **utils.py** - 工具函数模块,提供各种辅助功能\n- **cli.py** - 命令行接口,便于用户快速使用各种代理功能\n- **openai_adapter.py** - DeepSeek API适配器,提供与DeepSeek大语言模型交互的标准接口\n\n### openai_adapter.py\n\n`openai_adapter.py` 模块是整个项目的核心组件之一,它提供了与DeepSeek API进行交互的标准接口。主要功能包括:\n\n- **get_completion()** - 单轮问答接口,向DeepSeek模型发送单个提示并获取回复\n- **get_chat_completion()** - 多轮对话接口,支持发送消息列表实现连续对话\n- **get_llm_config_for_autogen()** - 生成适用于AutoGen框架的配置,是连接DeepSeek API和AutoGen框架的桥梁\n\n这个适配器的设计类似于OpenAI API的接口格式,使得项目可以方便地使用DeepSeek的大语言模型服务,同时保持与其他LLM提供商的兼容性。\n\n### utils.py中的关键函数\n\n`utils.py` 文件包含多个重要的工具函数,其中包括:\n\n- **get_deepseek_config()** - 获取DeepSeek API配置列表,用于设置与DeepSeek API的连接\n- **get_deepseek_config_from_api_keys()** - 从config_api_keys.json文件生成DeepSeek API配置列表\n- **cache_data()**, **get_cached_data()** - 提供数据缓存功能,提高性能\n- **format_financial_number()** - 格式化金融数字,便于阅读和展示\n\n## 快速开始\n\n### 下载仓库\n\n首先,下载项目代码:\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek-finrobot\n```\n\n### 配置API密钥\n\n在安装依赖之前,需要配置DeepSeek API密钥。创建或编辑`config_api_keys.json`文件,添加您的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"OPENAI_API_KEY\": \"placeholder\" // 可选,用于AutoGen框架兼容性\n}\n```\n\n### 安装\n\n完成API密钥配置后,您可以使用以下命令快速安装:\n\n```bash\n# 使用安装脚本(自动创建虚拟环境并安装所有依赖)\nbash install.sh\n```\n\n您也可以手动安装:\n\n```bash\n# 创建虚拟环境(推荐)\npython -m venv finrobot_env\nsource finrobot_env/bin/activate # Linux/Mac\n# 或 finrobot_env\\Scripts\\activate # Windows\n\n# 安装所有依赖\npip install -r requirements.txt # 安装所有必要的依赖\npip install -e . # 以开发模式安装项目本身\n```\n\n#### 关键依赖\n\n项目依赖以下主要包:\n\n- **openai>=1.72.0** - OpenAI API客户端,用于与DeepSeek API交互\n- **pyautogen>=0.8.5** - AutoGen框架,用于构建AI代理\n- **pandas & numpy** - 数据处理核心组件\n- **matplotlib>=3.10.0** - 用于数据可视化\n- **akshare>=1.16.0** - 中国金融数据接口\n- **requests>=2.31.0** - 处理HTTP请求\n\n### 验证安装\n\n安装完成后,您可以运行以下测试脚本来验证安装是否正确:\n\n```bash\n# 测试基本功能\npython test_minimal.py\n\n# 测试API密钥(需要先配置API密钥)\npython test_api_key.py\n\n# 测试市场预测代理(需要先配置API密钥)\npython test_market_agent.py\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 其他代理\n\n项目还支持以下代理:\n- **技术分析代理** (`TechnicalAnalysisAgent`)\n- **财务报告代理** (`FinancialReportAgent`)\n- **新闻分析代理** (`NewsAnalysisAgent`)\n\n### 使用命令行工具\n\n```bash\n# 预测股票走势\npython -m deepseek_finrobot.cli predict 000001 --days 7 --export --format markdown\n\n# 分析行业趋势\npython -m deepseek_finrobot.cli industry 银行 --days 30 --export\n\n# 分析财经新闻\npython -m deepseek_finrobot.cli news 人工智能 --days 3 --limit 10\n\n# 构建投资组合\npython -m deepseek_finrobot.cli portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export\n```\n\n## 直接使用DeepSeek API适配器\n\n除了使用预构建的代理,您还可以直接使用`openai_adapter.py`模块中的函数来与DeepSeek API交互:\n\n```python\nimport os\nfrom deepseek_finrobot.openai_adapter import get_completion, get_chat_completion\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 单轮问答示例\nresponse = get_completion(\n prompt=\"分析贵州茅台(600519)的投资价值\",\n model=\"deepseek-chat\",\n temperature=0.7,\n max_tokens=1500\n)\nprint(response)\n\n# 多轮对话示例\nmessages = [\n {\"role\": \"user\", \"content\": \"你是一个专业的金融分析师\"},\n {\"role\": \"assistant\", \"content\": \"您好,我是一名专业的金融分析师,擅长股票分析、行业研究和投资组合管理。请问有什么可以帮助您的?\"},\n {\"role\": \"user\", \"content\": \"分析一下最近A股市场的整体走势\"}\n]\nresponse = get_chat_completion(\n messages=messages,\n model=\"deepseek-chat\",\n temperature=0.5,\n max_tokens=2000\n)\nprint(response)\n```\n\n### 与AutoGen框架集成\n\n您也可以使用`get_llm_config_for_autogen`函数生成与AutoGen框架兼容的配置:\n\n```python\nimport os\nimport autogen\nfrom deepseek_finrobot.openai_adapter import get_llm_config_for_autogen\n\n# 设置API密钥环境变量\nos.environ[\"DEEPSEEK_API_KEY\"] = \"your-deepseek-api-key\"\n\n# 获取AutoGen兼容的配置\nconfig = get_llm_config_for_autogen(\n model=\"deepseek-chat\",\n temperature=0.7,\n base_url=\"https://api.deepseek.com/v1\"\n)\n\n# 创建AutoGen代理\nassistant = autogen.AssistantAgent(\n name=\"金融助手\",\n llm_config=config,\n system_message=\"您是一位专业的金融分析师,擅长分析市场趋势和投资机会。\"\n)\n\nuser_proxy = autogen.UserProxyAgent(\n name=\"用户\",\n human_input_mode=\"TERMINATE\",\n max_consecutive_auto_reply=10,\n is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n)\n\n# 启动对话\nuser_proxy.initiate_chat(\n assistant,\n message=\"分析一下当前A股市场的投资机会,重点关注科技和消费板块。\"\n)\n```\n\n## 测试工具\n\n项目提供了多个测试脚本,帮助验证安装和功能:\n\n- **test_minimal.py** - 测试基本工具函数和环境设置\n- **test_api_key.py** - 测试DeepSeek API密钥有效性\n- **test_agent.py** - 测试市场预测代理的基本功能\n- **test_market_agent.py** - 使用真实API密钥测试市场预测功能\n- **test_all.py** - 全面测试项目的所有主要组件\n\n使用这些测试脚本可以帮助您验证安装是否正确,以及API密钥是否有效。\n\n## 免责声明\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}, "118a816ad1eff07006be00c7352d955aa40b357c": {"t": 1785753179.5003972, "n": 7328, "h": "b6404656f63a0e6d", "c": "# DeepSeek FinRobot: 基于DeepSeek API的开源金融AI代理平台\n\n**DeepSeek FinRobot** 是一个基于DeepSeek API的开源金融AI代理平台,专为金融应用设计。它集成了多种AI技术,不仅限于语言模型,还包括数据处理、可视化和分析工具,以满足金融行业的多样化需求。\n\n**AI代理概念**:AI代理是一个智能实体,使用大型语言模型作为其\"大脑\"来感知环境、做出决策并执行操作。与传统人工智能不同,AI代理具有独立思考和利用工具逐步实现给定目标的能力。\n\n## 安装\n\n**1. (推荐) 创建新的虚拟环境**\n\n```bash\nconda create --name deepseek_finrobot python=3.10\nconda activate deepseek_finrobot\n```\n\n**2. 下载DeepSeek FinRobot仓库**\n\n```bash\ngit clone https://github.com/yourusername/deepseek_finrobot.git\ncd deepseek_finrobot\n```\n\n**3. 安装deepseek_finrobot及其依赖**\n\n```bash\npip install -e .\n```\n\n**4. 配置DEEPSEEK_CONFIG文件**\n\n1) 重命名DEEPSEEK_CONFIG_sample为DEEPSEEK_CONFIG\n2) 添加您的DeepSeek API密钥\n\n**5. 配置config_api_keys文件**\n\n1) 重命名config_api_keys_sample为config_api_keys\n2) 添加您的各种API密钥(如有需要)\n\n**6. 开始使用教程**\n\n```\n# 在tutorials目录中查找这些笔记本\n1) agent_market_forecaster.ipynb\n2) agent_annual_report.ipynb\n3) agent_trade_strategist.ipynb\n```\n\n## DeepSeek FinRobot生态系统\n\n### DeepSeek FinRobot的整体框架分为四个不同的层,每个层都旨在解决金融AI处理和应用的特定方面:\n\n1. **金融AI代理层**:金融AI代理层包括金融思维链(CoT)提示,增强复杂分析和决策能力。市场预测代理、文档分析代理和交易策略代理利用CoT将金融挑战分解为逻辑步骤,将其先进算法和领域专业知识与金融市场的不断变化动态相结合,以获得精确、可操作的见解。\n2. **金融LLM算法层**:金融LLM算法层配置并使用专门针对特定领域和全球市场分析调整的模型。\n3. **LLMOps和DataOps层**:LLMOps层实施多源集成策略,为特定金融任务选择最合适的LLM,利用一系列最先进的模型。\n4. **多源LLM基础模型层**:这一基础层支持各种通用和专业LLM的即插即用功能。\n\n## 功能特性\n\n- 中国金融数据源支持:\n - **AKShare**:提供丰富的中国市场数据,包括股票、债券、基金等\n - **TuShare**:提供中国金融市场数据,包括股票、指数、基金等\n- 中国财经新闻数据源支持:\n - **东方财富**:获取财经新闻、股票公告等\n - **新浪财经**:获取股票新闻、行情等\n - **金十数据**:获取重大财经新闻\n - **央视财经**:获取央视财经新闻\n - **百度财经**:获取市场新闻\n- 专业金融代理:\n - **市场预测代理**:分析A股数据和新闻,预测股票走势\n - **财务报告代理**:生成A股公司财务分析报告\n - **新闻分析代理**:分析中国财经新闻对市场和个股的影响\n - **行业分析代理**:分析行业趋势和投资机会\n - **投资组合代理**:构建和优化投资组合,提供资产配置建议\n - **技术分析代理**:使用技术指标分析股票走势,提供交易信号\n- 高级功能:\n - **数据缓存**:自动缓存数据,提高性能\n - **批量处理**:支持批量分析多个股票或行业\n - **结果导出**:支持导出分析结果为Markdown、HTML或文本格式\n - **命令行工具**:提供简单易用的命令行接口\n\n## 快速开始\n\n### 安装\n\n```bash\npip install -e .\n```\n\n### 配置API密钥\n\n1. 复制配置文件模板:\n\n```bash\ncp config_api_keys_sample.json config_api_keys.json\n```\n\n2. 编辑`config_api_keys.json`,填入你的API密钥:\n\n```json\n{\n \"DEEPSEEK_API_KEY\": \"your-deepseek-api-key\",\n \"AKSHARE_TOKEN\": \"your-akshare-token\",\n \"TUSHARE_TOKEN\": \"your-tushare-token\"\n}\n```\n\n### 使用示例\n\n#### 市场预测代理\n\n```python\nfrom deepseek_finrobot.agents import MarketForecasterAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建市场预测代理\nforecaster = MarketForecasterAgent(llm_config)\n\n# 预测股票走势\nprediction = forecaster.predict(\"000001\", days=7)\nprint(prediction)\n\n# 批量预测多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\npredictions = forecaster.batch_predict(symbols, days=7, max_workers=3)\nfor symbol, pred in predictions.items():\n print(f\"股票 {symbol} 预测结果: {pred[:100]}...\")\n\n# 导出预测结果\nforecaster.export_prediction(prediction, format=\"markdown\", output_file=\"prediction.md\")\n```\n\n#### 行业分析代理\n\n```python\nfrom deepseek_finrobot.agents import IndustryAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建行业分析代理\nanalyzer = IndustryAnalysisAgent(llm_config)\n\n# 分析行业趋势\nanalysis = analyzer.analyze_industry(\"银行\", days=30)\nprint(analysis)\n\n# 批量分析多个行业\nindustries = [\"银行\", \"医药\", \"计算机\"]\nanalyses = analyzer.batch_analyze(industries, days=30, max_workers=3)\nfor industry, analysis in analyses.items():\n print(f\"行业 {industry} 分析结果: {analysis[:100]}...\")\n\n# 导出分析结果\nanalyzer.export_analysis(analysis, format=\"html\", output_file=\"industry_analysis.html\")\n```\n\n#### 投资组合代理\n\n```python\nfrom deepseek_finrobot.agents import PortfolioManagerAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建投资组合代理\nportfolio_manager = PortfolioManagerAgent(llm_config)\n\n# 构建投资组合\nstocks = [\"000001\", \"600519\", \"000858\"] # 平安银行、贵州茅台、五粮液\nrecommendation = portfolio_manager.construct_portfolio(\n stocks=stocks,\n risk_preference=\"中等\",\n investment_horizon=\"长期\",\n investment_amount=100000\n)\nprint(recommendation)\n\n# 优化现有投资组合\ncurrent_portfolio = {\n \"000001\": 0.3, # 平安银行 30%\n \"600519\": 0.5, # 贵州茅台 50%\n \"000858\": 0.2 # 五粮液 20%\n}\noptimization = portfolio_manager.optimize_portfolio(\n current_portfolio=current_portfolio,\n risk_preference=\"中等\",\n investment_horizon=\"长期\"\n)\nprint(optimization)\n\n# 导出建议\nportfolio_manager.export_recommendation(recommendation, format=\"markdown\", output_file=\"portfolio.md\")\n```\n\n#### 技术分析代理\n\n```python\nfrom deepseek_finrobot.agents import TechnicalAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建技术分析代理\nanalyst = TechnicalAnalysisAgent(llm_config)\n\n# 进行技术分析\nanalysis = analyst.analyze(\"000001\", period=\"daily\", days=120)\nprint(analysis)\n\n# 批量分析多个股票\nsymbols = [\"000001\", \"600519\", \"000858\"]\nanalyses = analyst.batch_analyze(symbols, period=\"daily\", days=120, max_workers=3)\nfor symbol, result in analyses.items():\n print(f\"股票 {symbol} 分析结果: {result[:100]}...\")\n\n# 导出分析结果\nanalyst.export_analysis(analysis, format=\"html\", output_file=\"technical_analysis.html\")\n```\n\n#### 财务报告代理\n\n```python\nfrom deepseek_finrobot.agents import FinancialReportAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建财务报告代理\nreporter = FinancialReportAgent(llm_config)\n\n# 生成财务分析报告\nreport = reporter.generate_report(\"000001\")\nprint(report)\n```\n\n#### 新闻分析代理\n\n```python\nfrom deepseek_finrobot.agents import NewsAnalysisAgent\n\n# 加载LLM配置\nllm_config = {\n \"config_list\": [\n {\n \"model\": \"deepseek-chat\",\n \"api_key\": \"your-deepseek-api-key\",\n \"base_url\": \"https://api.deepseek.com/v1\",\n }\n ],\n \"temperature\": 0.7,\n}\n\n# 创建新闻分析代理\nanalyzer = NewsAnalysisAgent(llm_config)\n\n# 分析财经新闻\nanalysis = analyzer.analyze_news(\"人工智能\", days=3, limit=5)\nprint(analysis)\n```\n\n### 命令行工具\n\n安装后,可以使用`finrobot`命令行工具:\n\n```bash\n# 预测股票走势\nfinrobot predict 000001 --days 7 --export --format markdown\n\n# 批量预测多个股票\nfinrobot predict 000001,600519,000858 --batch --workers 3 --export\n\n# 分析行业趋势\nfinrobot industry 银行 --days 30 --export\n\n# 批量分析多个行业\nfinrobot industry 银行,医药,计算机 --batch --workers 3\n\n# 分析财经新闻\nfinrobot news 人工智能 --days 3 --limit 10\n\n# 生成财务分析报告\nfinrobot report 000001\n\n# 构建投资组合\nfinrobot portfolio 000001,600519,000858 --risk 中等 --horizon 长期 --amount 100000 --export\n\n# 优化投资组合\nfinrobot optimize 000001:30,600519:50,000858:20 --risk 中等 --horizon 长期 --export\n\n# 进行技术分析\nfinrobot technical 000001 --period daily --days 120 --export\n\n# 批量进行技术分析\nfinrobot technical 000001,600519,000858 --batch --workers 3 --export\n```\n\n## 免责声明\n\n本代码和文档根据Apache-2.0许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}}}}