FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录

  • 前言
  • 一、生态系统
    • 1. 金融AI代理(Financial AI Agents)
    • 2. 金融大型语言模型(Financial LLMs)
    • 3. LLMOps
    • 4. 数据操作(DataOps)
    • 5. 多源LLM基础模型(Multi-Source LLM Foundation Models)
    • 6. Agent工作流
      • 1. 感知模块(Perception)
      • 2.大脑模块(Brain)
      • 3.行动模块(Action)
  • 二、示例代码解释
    • 1. demo
    • 2. 小弟各司其职
  • 三. 测试
    • 1. Market Forecaster Agent (Predict Stock Movements Direction)
    • 2.Financial Analyst Agent for Report Writing (Equity Research Report)
    • 3. 补充10-K干嘛的
  • 四. 总结

前言

FinRobot 是一个超越 FinGPT 范围的人工智能代理平台,代表为金融应用精心设计的全面解决方案。它整合了多种人工智能技术,远远不止是简单的语言模型。这种宏大的愿景突出了平台的多功能性和适应性,能够满足金融行业的多样化需求。
AI 代理的概念:
AI 代理是一种智能实体,它以大型语言模型作为“大脑”,感知环境、做出决策并执行行动。与传统人工智能不同,AI 代理具备独立思考的能力,并能够利用工具逐步实现既定目标。
本文主要讲明白,这东西有啥用,怎么构成的以及怎么用。

一、生态系统

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
这张图展示了 FinRobot 生态系统,这是一个使用大型语言模型(LLMs)进行金融应用的开源AI代理平台。图中分为几个主要部分,每个部分都有特定的功能和作用。以下是对图中每个部分的详细分析:

1. 金融AI代理(Financial AI Agents)

这部分展示了FinRobot平台支持的不同类型的AI代理,这些代理用于执行特定的金融任务:
市场预测代理(Market Forecasting Agents):包括交易策略代理(Trading Strategist Agent)、多模态代理(Multimodal Agent)、全球股票市场代理(Global Stock Market Agent)。
文档分析与生成代理(Document Analysis & Generation Agents):包括收益报告分析代理(Earnings Report Analysis Agent)、财务报告生成代理(Financial Report Generation Agent)、风险评估代理(Risk Assessment)、报告分析代理(Report Analysis Agent)、股票研究报告生成代理(Equity Research Report Generation Agent)。

2. 金融大型语言模型(Financial LLMs)

这部分展示了支持FinRobot平台的不同类型的金融大型语言模型(LLMs):
金融多模态LLMs(Financial Multimodal LLMs)
金融强化学习(FinRL)
金融机器学习(FinML)
金融大型语言模型(FinGPT)

3. LLMOps

这部分展示了用于管理和优化大型语言模型的操作工具:
提示工程(Prompt Engineering)
持续集成/持续部署(CI/CD)
模型部署(Model Deployment)
模型评估(Model Evaluation)
指令调整(Instruction Tuning)
RLHF(Reinforcement Learning from Human Feedback)
智能调度器(Smart Scheduler)

4. 数据操作(DataOps)

这部分展示了用于处理和分析金融数据的工具和技术:
金融数据与金融自然语言处理(Financial Data & FinNLP)
市场新闻(Market News)
社交媒体(Social Media)
市场情绪(Market Sentiment)
金融比率(Financial Ratios)
FinRL-Meta
表格数据(Tabular Data)
Gym环境(Gym Env)
非结构化数据(Unstructured Data)
第三方API(Third Party API)
向量数据库(Vector Database)
RAG(Retrieval-Augmented Generation)
知识图谱(Knowledge Graph)

5. 多源LLM基础模型(Multi-Source LLM Foundation Models)

这部分展示了FinRobot平台支持的多种基础模型,这些模型提供了底层的语言处理能力:
Llama3
ChatGLM3
Qwen
Falcon
ChatGPT
Gemma
Baichuan
InternLM
Mistral

6. Agent工作流

在这里插入图片描述

1. 感知模块(Perception)

该模块通过复杂的手段捕捉并解释来自市场数据流、新闻和经济指标的多模态金融数据,将数据结构化以便进行深入分析。

2.大脑模块(Brain)

作为核心处理单元,该模块利用大型语言模型(LLMs)感知来自感知模块的数据,并通过金融思维链(Chain-of-Thought, CoT)流程生成结构化的指令。

3.行动模块(Action)

该模块执行来自大脑模块的指令,运用工具将分析洞察转化为可执行的结果。行动包括交易、调整投资组合、生成报告或发送警报,从而积极影响金融环境。

二、示例代码解释

1. demo

在这里插入图片描述
其中每一份报告都对应一个初级版本和一个高级版本,初级的主要是针对普通用户,也就是绝大部分散户。高级主要专家级别,主要服务对象是从事金融行业。
应用场景也可以根据需要在demo代码的基础上修改。
年度报告分析代理.ipynb
财务预测代理.ipynb
交易策略代理.ipynb
基于Matplotlib Finance的LLM代理.ipynb
基于简单移动平均交叉的LLM优化代理.ipynb

2. 小弟各司其职

每一个agent就代表一个打工者,每个具体的岗位就是name,system_message,就是该岗位需要负责哪些任务,也可以说是给agent的指令。description小弟的个人简介。model,根据需要可以设置不用大模型

agent_configs": [{"name": "financial_data_analyst","model": "gpt-4","system_message": "You are now in a group chat. As a financial_data_analyst, you are tasked with particular responsibilities that will need your analytical and Python programming skills. Be ready to:\n\n    1. Make use of Python to gather relevant data. This could be information on specific companies, such as the company profile, recent stock price fluctuations, market news, and financial basics. The Python code should be able to output this necessary information. For instance, it may need to browse or search the web, download/read a file or print the content of a webpage or a file.\n\n    2. Use the gathered data to provide a well-informed analysis of the company. This may involve understanding current positive developments and potential concerns. You may also need to make a rough prediction of the next week's stock price (e.g., up by 2-3%) and provide an elaborative summary of the reasons. This task may necessitate the use of both your data analysis skills and your language proficiency to effectively convey the outcomes of your analysis.\n\n    3. Ensure clarity when using Python to solve a task, specifically by explaining your plan beforehand. Indicate when you will use code and when you will use your language skills. For example, the code may be used to extract financial data so that you can utilize your language skills for the analysis part.\n\n    4. Eliminate the necessity for the user to make changes to your code. Make sure your Python code is complete and doesn't call for modifications by the user. Also, ensure the code can run independently and avoid including anything that could prompt the user to copy and paste the result.\n\n    5. Be diligent in checking the execution results returned by the user. If there is an error, fix it, and if the error can't be fixed or the task isn't solved, think of a different approach. You can then output the full corrected code once again. \n\n    6. At the end of your tasks, remember to verify your answers with evidence where possible. When you are confident that your work is complete and correct, reply with \"TERMINATE.\"\n\nRemember, when puzzled, it's ok to communicate the issue to your group chat manager who will help guide you through or assign someone else to tackle the task.","description": "A financial data analyst is a specialized professional who collects, monitors, and creates reports from complex data sets to help a business in decision-making processes. This position should be filled by someone with strong analytical skills, a solid understanding of financial market trends, and proficiency in data analysis tools like Microsoft Excel or SQL. They should also have a keen attention to detail and the ability to communicate complicated data in understandable ways."},{"name": "market_news_researcher","model": "gpt-4","system_message": "You are now in a group chat. Your task is to complete a market research study with other participants. As a market_news_researcher, you are expected to have strong skills in Python programming, financial analysis, market research, and the ability to analyze and interpret complex data.\n\n    1. Information Collection: Use your programming skills to gather relevant data. This may involve accessing financial data and market news from online sources, reading and downloading files, or retrieving the latest stock prices. Ascertain that the output of the data you need (for instance, company profile, stock price fluctuations, and market news about the specified company) is printed on your Python console. All required data should be gathered before attempting to solve the task based on your insights.\n        \n    2. Task Execution: Use your programming skills to conduct necessary financial analyses, interpret complex financial data, and predict stock price movements. Make sure your Python code outputs the results of your analyses and provides a clear explanation of your findings. You should also specify your predictions for next week's stock price and provide a summary of the reasoning behind your predictions.\n        \n    3. Planning: Clearly outline your plan before starting to perform your task. Communicate how you intend to collect and analyze the collected data, how you will program your Python code to predict future prices, and how you plan to execute your task step by step.\n        \n    4. Error Handling: If you encounter an error when executing your Python code, rectify the error and provide the corrected Python code. Ensure that the modified Python code is complete and doesn't require the user to make adjustments. If the error persists, rethink your approach, gather additional data if necessary, and devise an alternative strategy.\n        \n    5. Verification: After obtaining results, carefully verify your findings. If possible, provide supporting evidence in your response.\n        \nThe conversation concludes when your research is successfully completed and the task has been fully accomplished. At this point, reply \"TERMINATE\". Before ending the conversation, you must ensure that the user is fully satisfied with your analysis and predictions. If you are unsure or confused, you are encouraged to ask the group chat manager for assistance and let them choose another participant.","description": "A market news researcher is a professional who stays updated with all the latest developments and trends in the market. They should possess strong analytical and research skills, along with a good understanding of business and finance. They should also have excellent communication skills to convincingly explain and debate about their findings and analysis in a group chat."},{"name": "python_programmer","model": "gpt-4","system_message": "You are now in a group chat. You have been assigned a task along with other participants. As a Python programmer, your primary role is to program solutions for data collection, analysis, and estimation tasks related to a specified company's stock.\n\nWhen there is a need to gather information, such as a company's profile, stock price history, market news, and basic financials, utilize your coding skills to achieve this. Use python code to browse or search the web, download or read relevant files, or pull the desired data from financial websites. Instead of relying on others in the group to provide this information, your code should independently fetch it. Always use a single piece of robust, comprehensive code that the users can run without needing to modify anything.\n\nWith the collected data, analyze the current positive developments and potential concerns of the specified company. Use python programs to automate your data analysis where possible and compile your observations and inferences into a clear and concise summary.\n\nBased on the data and your analysis, develop a predictive model using Python to estimate the stock's price change for the next week. Explain your model's rationale and output a numerical estimate, e.g., \"up by 2-3%\". All code should be designed to execute as standalone programs and should avoid the use of charts or visualizations.\n\nOnce your code has achieved the task at hand, carefully verify its output against reliable sources. Include any evidence or references that support your findings.\n\nWhen encountering problems or uncertainties, engage with the group chat and ask for assistance from the group chat manager. Similarly, if a code execution returns errors or does not solve the task satisfactorily, diagnose the issue, correct your assumptions, gather additional necessary information and generate a new approach with python programs.\n\nUpon completion of your tasks, ensuring the satisfaction of user's needs and the correctness of your solutions, respond with \"TERMINATE\".","description": "A Python programmer is a highly skilled individual with expertise in Python, who can write, test, debug and improve Python code. They possess the ability to detect critical programming and logic errors, thereby contributing effectively to group discussions by providing accurate answers or code corrections. They require strong problem-solving skills, a firm understanding of data structures, algorithms, and software development principles in the Python language."},{"name": "stock_price_estimator","model": "gpt-4","system_message": "You are a diligent member of a team focused on stock price estimation. Using your knowledge on data sourcing and analytical skills, you will aid in gathering essential company information through programming in Python. Conduct thorough research on specific company profiles (e.g., AAPL), monitoring recent stock price fluctuations, keeping up-to-date with market news, and understanding financial fundamentals. \n\nBased on your analysis, you will aim to predict the next week's stock price with a rough estimate (e.g., up 2-3%). Notably, your role involves creating and executing standalone python programs, generating summary explanations of stock trend reasons without resorting to graphical chart representations.\n\nCarefully, step-by-step:\n\n1. Employ your Python coding skills to gather necessary information. You can accomplish this by scripting to search the web, download/read and print the content of files, pages, current time/date, and check the operating system specifics. Execute your scripts and share the output.\n\n2. Utilize your analytical language skills to prepare comprehensive reports detailing positive developments and potential concerns based on the data available.\n\n3. Use your attention to detail to meticulously check the execution results given by other team members. If there is an error, identify and correct it, then output the comprehensive and correct Python program. In case the analysis is not complete or an error is unfixable with the current data or approach, notify the team, gather additional information as needed, and propose a different method.\n\n4. After successfully analysing and estimating a stock\u2019s price movement, ensure to verify your estimations carefully. If possible, include convincing evidence in your report.\n\n5. Instigate the termination of a task phase once you're confident the task is complete, knowing that the final decision rests with the group chat manager. \n\n6. If stumped or uncertain, refrain from hesitation. Seek guidance from the group chat manager who will direct another participant to aid you.\n\nBear in mind; coding skills are limited to Python. You are encouraged to doubt previous messages or codes in the group chat and provide corrected code if there is no output after execution. Engage in healthy team communication, negotiate doubts and difficulties, and seek assistance when needed.","description": "A stock price estimator is a financial expert who specializes in financial modeling, data analysis and has a profound understanding of financial markets. The incumbent should have strong skills in Python for analyzing data and building prediction models, with the ability to scrutinize previous messages or code in a group chat and provide revisions if uncertainties appear. Familiarity with statistical modeling tools and concepts, such as regression, time-series analysis, as well as machine learning techniques, are substantial for this role."},{"name": "financial_report_writer","model": "gpt-4","system_message": "You are now in a group chat. Your role is to complete a task with other participants. As a financial report writer specialized in analyzing company stock performances, you will use your Python programming skills to collect, analyze, and summarize relevant data pertaining to a specified company's market position and stock price trends. \n\nYou are expected to perform the following functions:\n\n    1. Gather necessary information such as a company's profile, recent stock price fluctuations, market news, and financial basics about the company. You will leverage your Python programming skills to develop codes that download, read, and print the desired content from the web.\n\n    2. After collecting the relevant information, use your financial analytical skills to evaluate the company's current positive developments and potential concerns. Your evaluation should be based on the data you have gathered.\n\n    3. When your analysis is complete, give a rough estimate (e.g., up by 2-3%) for the next week's stock price. You should also provide a summary of the reasons for your prediction.\n\n    4. Make sure every Python program you create will execute on its own. Avoid designing programs that require the user to modify your code. Each Python program you suggest should not involve chart plotting.\n\n    5. If an error occurs while running the code, you should correct the error and output the corrected code again. If the error can't be fixed or if the task isn't solved even after the code runs successfully, use your analytical skills to identify the problem and come up with an alternative approach.\n\n    6. Verify your answer carefully before presenting it. Include evidence to validate your findings, where possible.\n\n    7. If you face any confusion during the task, seek assistance from the group chat manager. If you think your task is complete and satisfactory, please reply \"TERMINATE\".","description": "A financial report writer is a professional with strong analytical skills, expertise in financial data analysis and capable of creating concise, accurate reports. This position requires proficiency in financial software, a keen understanding of financial concepts and excellent writing skills to effectively compile and present financial data. They should also possess effective communication skills and the ability to question and clarify any doubtful financial data or information shared in the group chat."}

三. 测试

地址:
https://github.com/AI4Finance-Foundation/FinRobot
环境配置,更多介绍可以git上查看,运行代码前需要有三个key去配置,一个openai,2个和财经相关。
add your own finnhub-api “YOUR_FINNHUB_API_KEY”
add your own financialmodelingprep and sec-api keys “YOUR_FMP_API_KEY” and “YOUR_SEC_API_KEY” (for financial report generation)
这个都是私有,需要自己申请。

1. Market Forecaster Agent (Predict Stock Movements Direction)

市场预测代理(Market Forecaster Agent)是FinRobot平台中的一个功能,它能够分析公司的股票代码、最新财务数据和市场新闻,预测其股票走势。这一功能对于投资者和分析师来说非常有价值,因为它提供了对公司股票未来表现的洞察。

import autogen
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.agents.workflow import SingleAssistant# Read OpenAI API keys from a JSON file
llm_config = {"config_list": autogen.config_list_from_json("../OAI_CONFIG_LIST",filter_dict={"model": ["gpt-4-0125-preview"]},),"timeout": 120,"temperature": 0,
}# Register FINNHUB API keys
register_keys_from_json("../config_api_keys")company = "NVDA"assitant = SingleAssistant("Market_Analyst",llm_config,# set to "ALWAYS" if you want to chat instead of simply receiving the predicitonhuman_input_mode="NEVER",
)
assitant.chat(f"Use all the tools provided to retrieve information available for {company} upon {get_current_date()}. Analyze the positive developments and potential concerns of {company} ""with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. "f"Then make a rough prediction (e.g. up/down by 2-3%) of the {company} stock price movement for next week. Provide a summary analysis to support your prediction."
)

运行代码以后,会先自动去下载一个NLTK 的 punkt 数据包(用于分词),然后它会自动解压,解压后的目录包含预训练的分词模型和相关元数据。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.py
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data]   Unzipping tokenizers/punkt.zip.
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...

在这里插入图片描述
如果配置文件里没有api-key,打印出提示信息。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.py
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data]   Unzipping tokenizers/punkt.zip.
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[autogen.oai.client: 03-01 02:40:35] {307} WARNING - The API key specified is not a valid OpenAI format; it won't work with the OpenAI-hosted model.
[autogen.oai.client: 03-01 02:40:35] {307} WARNING - The API key specified is not a valid OpenAI format; it won't work with the OpenAI-hosted model.
User_Proxy (to Market_Analyst):
Use all the tools provided to retrieve information available for NVDA upon 2025-03-01. Analyze the positive developments and potential concerns of NVDA with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. Then make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. Provide a summary analysis to support your prediction.
utogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1033, in _requestreturn self._retry_request(File "/root/miniconda3/envs/autogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1111, in _retry_requestreturn self._request(File "/root/miniconda3/envs/autogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1043, in _requestraise APIConnectionError(request=request) from err
openai.APIConnectionError: Connection error.

分别在config_list和api_key里加入相应的值。
在这里插入图片描述
在这里插入图片描述
再次运行,可以看到已经出现Market_Analyst给出的信息,后面又给了一个错误信息,Error: FinnhubAPIException(status_code: 401): Invalid API key。官方介绍的文档里,提到3个key必须填,看来还漏了一个key,对于这份代码,Finnhub也是必须的。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.pyUser_Proxy (to Market_Analyst):Use all the tools provided to retrieve information available for NVDA upon 2025-03-01. Analyze the positive developments and potential concerns of NVDA with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. Then make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. Provide a summary analysis to support your prediction.--------------------------------------------------------------------------------
Market_Analyst (to User_Proxy):***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_company_profile *****
Arguments: 
{"symbol": "NVDA"}
*********************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_company_news *****
Arguments: 
{"end_date": "2025-03-01", "start_date": "2025-02-01", "symbol": "NVDA"}
******************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_basic_financials *****
Arguments: 
{"symbol": "NVDA"}
**********************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_stock_data *****
Arguments: 
{"end_date": "2025-03-01", "start_date": "2025-02-01", "symbol": "NVDA"}
****************************************************************************************-------------------------------------------------------------------------------->>>>>>>> EXECUTING FUNCTION get_company_news...
Call ID: chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx
Input arguments: {'end_date': '2025-03-01', 'start_date': '2025-02-01', 'symbol': 'NVDA'}
Finnhub client initialized>>>>>>>> EXECUTING FUNCTION get_stock_data...
Call ID: chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx
Input arguments: {'end_date': '2025-03-01', 'start_date': '2025-02-01', 'symbol': 'NVDA'}
User_Proxy (to Market_Analyst):***** Response from calling tool (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx) *****
Error: FinnhubAPIException(status_code: 401): Invalid API key
*******************************************************************************

可以看到每次调完以后,都会根据token消耗费用。
在这里插入图片描述

2.Financial Analyst Agent for Report Writing (Equity Research Report)

金融分析师代理用于撰写报告(Equity Research Report)是一个专门用于分析公司年度报告的代理,它能够提取关键信息并生成摘要。该代理能够处理公司的10-K报告、财务数据和市场数据,输出股票研究报告。通过结合先进的LLMs,这个代理深入分析财务文件,如年报、SEC文件和收益电话会议记录,提取关键信息,识别主要的财务指标,突出显示需要进一步审查的趋势和差异

import os
import autogen
from textwrap import dedent
from finrobot.utils import register_keys_from_json
from finrobot.agents.workflow import SingleAssistantShadowllm_config = {"config_list": autogen.config_list_from_json("../OAI_CONFIG_LIST",filter_dict={"model": ["gpt-4-0125-preview"],},),"timeout": 120,"temperature": 0.5,
}
register_keys_from_json("../config_api_keys")# Intermediate strategy modules will be saved in this directory
work_dir = "../report"
os.makedirs(work_dir, exist_ok=True)assistant = SingleAssistantShadow("Expert_Investor",llm_config,max_consecutive_auto_reply=None,human_input_mode="TERMINATE",
)company = "Microsoft"
fyear = "2023"message = dedent(f"""With the tools you've been provided, write an annual report based on {company}'s {fyear} 10-k report, format it into a pdf.Pay attention to the followings:- Explicitly explain your working plan before you kick off.- Use tools one by one for clarity, especially when asking for instructions. - All your file operations should be done in "{work_dir}". - Display any image in the chat once generated.- All the paragraphs should combine between 400 and 450 words, don't generate the pdf until this is explicitly fulfilled.
"""
)assistant.chat(message, use_cache=True, max_turns=50,summary_method="last_msg")

运行代码,可以看到生成文相应的财务文档保存在report下面。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test2.py 
User_Proxy (to Expert_Investor):With the tools you've been provided, write an annual report based on Microsoft's 2023 10-k report, format it into a pdf.
Pay attention to the followings:
- Explicitly explain your working plan before you kick off.
- Use tools one by one for clarity, especially when asking for instructions. 
- All your file operations should be done in "../report". 
- Display any image in the chat once generated.
- All the paragraphs should combine between 400 and 450 words, don't generate the pdf until this is explicitly fulfilled.--------------------------------------------------------------------------------
Expert_Investor (to User_Proxy):To create an annual report based on Microsoft's 2023 10-K report and format it into a PDF, I will follow the steps outlined below:1. **Retrieve Key Sections from the 10-K Report**: I'll use specific tools to extract and analyze the following sections from Microsoft's 2023 10-K report:- Company Description- Business Highlights- Income Statement- Segment Analysis- Cash Flow Statement- Risk Assessment- Balance Sheet2. **Generate Visuals**: I'll create visuals for the following:- PE ratio and EPS performance over the past 4 years.- Share performance compared to the S&P 500 over the past year.3. **Combine Analysis into a Coherent Narrative**: I will synthesize the analyses from the income statement and segment analysis into a single coherent paragraph to provide a comprehensive overview of Microsoft's financial health and operational performance.4. **Check Text Length**: I will ensure all paragraphs combine between 400 and 450 words as required.5. **Compile the Report**: Once all the components are ready and meet the requirements, I will compile them into a PDF report, ensuring it includes all the necessary sections and visuals.6. **Display Visuals**: Any visuals generated will be displayed in the chat for review.7. **Review and Finalize**: Before finalizing the PDF, I will review all components to ensure accuracy and completeness.Let's start with the first step. I will begin by retrieving and analyzing the company description for Microsoft's 2023 fiscal year. This will give us an insight into Microsoft's industry, strengths, trends, and strategic initiatives.
***** Suggested tool call (chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI): analyze_company_description *****
Arguments: 
{"fyear":"2023","save_path":"../report/msft_company_description.txt","ticker_symbol":"MSFT"}
*****************************************************************************************************-------------------------------------------------------------------------------->>>>>>>> USING AUTO REPLY...>>>>>>>> EXECUTING FUNCTION analyze_company_description...
Call ID: chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI
Input arguments: {'fyear': '2023', 'save_path': '../report/msft_company_description.txt', 'ticker_symbol': 'MSFT'}
User_Proxy (to Expert_Investor):***** Response from calling tool (chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI) *****
Error: Too Many Requests. Rate limited. Try after a while.
*******************************************************************************--------------------------------------------------------------------------------
Expert_Investor (to User_Proxy):It seems there's a temporary issue with accessing the data due to rate limits. I'll wait a moment and then attempt to retrieve the company description for Microsoft's 2023 fiscal year again. Let's try once more.
***** Suggested tool call (chatcmpl-K1W8qPcmAhg2uLJHdJ3opX22HCt5x): analyze_company_description *****
Arguments: 
{"fyear":"2023","save_path":"../report/msft_company_description.txt","ticker_symbol":"MSFT"}
*****************************************************************************************************

3. 补充10-K干嘛的

10-K报告是美国上市公司根据美国证券交易委员会(SEC)的规定,每年必须提交的一份全面报告。这份报告详细披露了公司的财务状况、运营情况、管理层讨论与分析(MD&A)、公司治理结构、潜在风险因素以及审计过的财务报表等信息。
10-K报告的名称来源于美国证券交易委员会的表格10-K,它是上市公司年度报告的标准格式。这份报告对于投资者、分析师和其他利益相关者来说非常重要,因为它提供了对公司过去一年的全面了解,以及公司未来可能面临的机遇和挑战。
简而言之,10-K报告是一份详尽的年度报告,旨在为投资者提供评估公司价值和做出投资决策所需的关键信息。

四. 总结

FinRobot生态系统通过整合多种AI技术和大型语言模型,提供了一个全面的平台,用于开发和部署各种金融AI代理。这些代理能够执行从市场预测、文档分析到风险评估等多种金融任务,从而满足金融行业的多样化需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28235.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Windows11的RAGFlow安装方法简介

基于Windows11的RAGFlow安装方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是否成功&#…

uniapp 常用 UI 组件库

1. uView UI 特点: 组件丰富:提供覆盖按钮、表单、图标、表格、导航、图表等场景的内置组件。跨平台支持:兼容 App、H5、小程序等多端。高度可定制:支持主题定制,组件样式灵活。实用工具类:提供时间、数组操…

【四.RAG技术与应用】【12.阿里云百炼应用(下):RAG的云端优化与扩展】

在上一篇文章中,我们聊了如何通过阿里云百炼平台快速搭建一个RAG(检索增强生成)应用,实现文档智能问答、知识库管理等基础能力。今天咱们继续深入,聚焦两个核心问题:如何通过云端技术优化RAG的效果,以及如何扩展RAG的应用边界。文章会穿插实战案例,手把手带你踩坑避雷。…

LabVIEW虚拟频谱分析仪

在电子技术快速发展的今天,频谱分析已成为信号优化与故障诊断的核心手段。传统频谱分析仪虽功能强大,但价格高昂且体积笨重,难以满足现场调试或移动场景的需求。 基于LabVIEW开发的虚拟频谱分析仪通过软件替代硬件功能,显著降低成…

解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充

项目场景: 在各大浏览器中http地址调用电脑麦克风摄像头会没有权限,http协议无法使用多媒体设备 原因分析: 为了用户的隐私安全,http协议无法使用多媒体设备。因为像摄像头和麦克风属于可能涉及重大隐私问题的API,ge…

知识图谱科研文献推荐系统vue+django+Neo4j的知识图谱

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 📑 编号:D030 📑 vuedjangoneo4jmysql 前后端分离架构、图数据库 📑 文献知识图谱&#…

NModbus 连接到Modbus服务器(Modbus TCP)

1、在项目中通过NuGet添加NModbus,在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…

Ubuntu问题 - 在ubuntu上使用 telnet 测试远程的IP:端口是否连通

使用 telnet 测试端口连接 安装 telnet(如果尚未安装): sudo apt update sudo apt install telnet使用 telnet 测试端口: 假设你要测试 example.com 的 80 端口(HTTP),可以运行以下命令&#xf…

全网最全!解决VirtualBox或VMware启动虚拟机时报错问题“不能为虚拟电脑打开一个新任务”和“Error In suplibOslnit”解决方案超全超详细

我自己下载并配置完VritualBox和OpenEuler之后帮助了几个朋友和我的室友在她们的电脑上下载安装时出现了不同的问题,下面我将简单解释一下如何解决配置时出现的两个无法启动虚拟器的问题。 目录 问题:“不能为虚拟电脑XX打开一个新任务”和“Error In …

SpringMVC(2)传递JSON、 从url中获取参数、上传文件、cookie 、session

Spring 事务传播机制包含以下 7 种: Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。Propagation.SUPPORTS:如果当前存…

软考中级-数据库-3.4 数据结构-图

图的定义 一个图G(Graph)是由两个集合:V和E所组成的,V是有限的非空顶点(Vertex)集合,E是用顶点表示的边(Edge)集合,图G的顶点集和边集分别记为V(G)和E(G),而将图G记作G(V,E)。可以看出,一个顶点集合与连接这…

开源表单、投票、测评平台部署教程

填鸭表单联合宝塔面板深度定制,自宝塔面板 9.2 版本开始,在宝塔面板-软件商店中可以一键部署填鸭表单系统。 简单操作即可拥有属于自己的表单问卷系统,快速赋能业务。即使小白用户也能轻松上手。 社区版体验地址:https://demo.tduckapp.com/home 前端项目地址: tduck-fro…

IDEA 接入 Deepseek

在本篇文章中,我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek,让你的 AI 编程助手更智能,提高开发效率。 一、前置准备 在开始之前,请确保你已经具备以下条件: 安装了 JetBrains IDEA&…

Metal学习笔记七:片元函数

知道如何通过将顶点数据发送到 vertex 函数来渲染三角形、线条和点是一项非常巧妙的技能 — 尤其是因为您能够使用简单的单行片段函数为形状着色。但是,片段着色器能够执行更多操作。 ➤ 打开网站 https://shadertoy.com,在那里您会发现大量令人眼花缭乱…

深入浅出 Go 语言:协程(Goroutine)详解

深入浅出 Go 语言:协程(Goroutine)详解 引言 Go 语言的协程(goroutine)是其并发模型的核心特性之一。协程允许你轻松地编写并发代码,而不需要复杂的线程管理和锁机制。通过协程,你可以同时执行多个任务,并…

Python测试框架Pytest的参数化

上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…

基于微信小程序的停车场管理系统的设计与实现

第1章 绪论 1.1 课题背景 随着移动互联形式的不断发展,各行各业都在摸索移动互联对本行业的改变,不断的尝试开发出适合于本行业或者本公司的APP。但是这样一来用户的手机上就需要安装各种软件,但是APP作为一个只为某个公司服务的一个软件&a…

C++ Primer 动态内存与智能指针

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

QT——文件IO

QFile 类 构造函数 QFile() 无参构造 仅仅构建一个QFile 对象,不设定文件名 QFile(文件名) 构建一个QFile对象的同时,设定文件名 但是注意,仅仅设定文件名,并不会打开该文件 设定文件名 QFile file file.setFileName…

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…