1 line
88 KiB
JSON
1 line
88 KiB
JSON
{"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许可证发布。它们不应被视为财务建议或实时交易的建议。在进行任何交易或投资行动之前,务必谨慎行事并咨询合格的金融专业人士。 "}}}} |