当前位置: 首页 > news >正文

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代理。这些代理能够执行从市场预测、文档分析到风险评估等多种金融任务,从而满足金融行业的多样化需求。

相关文章:

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

文章目录 前言一、生态系统1. 金融AI代理(Financial AI Agents)2. 金融大型语言模型(Financial LLMs)3. LLMOps4. 数据操作(DataOps)5. 多源LLM基础模型(Multi-Source LLM Foundation Models&am…...

【windows driver】 开发环境简明安装教程

一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…...

强制完整性级别(MIL)和用户账户控制(UAC)的联系与区别

强制完整性级别(MIL) 和 用户账户控制(UAC) 都是 Windows 操作系统中的安全机制,旨在增强系统的安全性并防止恶意软件和攻击者在系统中获得更高的权限。尽管它们有共同的目标,但它们的工作原理、应用范围和…...

性能附录:如何计算并发用户数(摘自高楼老师《性能30讲》)

高楼老师《性能30讲》: 性能测试实战30讲-极客时间 感兴趣的同学可以去读一下,个人感觉写的非常好 目录 什么是并发? 在线用户数、并发用户数怎么计算 总结 什么是并发? 我们假设上图中的这些小人是严格按照这个逻辑到达系统的,那显然,…...

视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决

EasyDSS视频直播点播平台是一个功能全面的系统,提供视频转码、点播、直播、视频推拉流以及H.265视频播放等一站式服务。该平台与RTMP高清摄像头配合使用,能够接收无人机设备的实时视频流,实现无人机视频推流直播和巡检等多种应用。 最近&…...

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

辛格迪客户案例 | 甫康(上海)健康科技有限责任公司药物警戒管理系统(PVS)项目

01 案例企业 甫康(上海)健康科技有限责任公司(简称“甫康”)该公司成立于2015年11月3日。公司的核心团队由来自中国和国外顶级制药公司的专业人士组成,与中国科学院上海药物研究所等知名研究机构保持紧密合作。此外,甫康药业还与…...

重新审视 ChatGPT 和 Elasticsearch:第 2 部分 - UI 保持不变

作者:来自 Elastic Jeff Vestal 本博客在第 1 部分的基础上进行了扩展,介绍了基于 RAG 的搜索系统的功能齐全的 Web UI。最后,你将拥有一个将检索、搜索和生成过程结合在一起的工作界面,同时使事情易于调整和探索。 不想读完整个内…...

坐标变换及视图变换和透视变换(相机透视模型)

文章目录 2D transformationScaleReflectionShear(切变)Rotation around originTranslationReverse变换顺序复杂变换的分解 齐次坐标(Homogenous Coordinates)3D transformationScale&TranslationRotation Viewing / Camera t…...

基于反激电路的电池充放电均衡控制

基于反激电路的电池充放电均衡控制是一种高效的能量转移型主动均衡方法,适用于锂离子电池组等串联电池组的管理。以下从原理、拓扑结构、控制策略和设计要点进行详细分析: 一、基本原理 反激电路(Flyback Converter)是一种隔离型…...

Windows版FFmpeg使用及B站视频下载示例python源码

Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具,无论是在专业领域还是日常使用中,都能满足各种多媒体处理需求。FFmpeg 是一个开源项目,遵循 LGPL 或 GPL 许可。…...

leetcode_动态规划/递归 509. 斐波那契数

509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1F(n) F(n - 1) F(n - 2),其中 n …...

对泰坦尼克号沉没事件幸存者数据分析和预测

一、分析目的 探究决定泰坦尼克号沉没事件中什么因素决定着船上人的生死,并对实例进行判别和预测。 二、数据介绍 Titanic.csv数据中包含了891个样本,记录了泰坦尼克号遇难时的891个乘客的基本信息,其中包括以下信息: Passenger…...

算法之排序算法

排序算法 ♥常见排序算法知识体系详解♥ | Java 全栈知识体系 算法 - 排序 | CS-Notes 面试笔记 十大经典排序算法总结 | JavaGuide...

DMA发送全部历史记录数据到串口

背景 博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。最后商量得出以下实现方案: 定义两个发送缓冲区DMATxbuf1和DMATxbuf2&…...

蓝桥杯好题推荐-----高精度减法

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 记录详情 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/record/205122671 思路讲解 这个题目的解题思路,其实是和高精度加法是非常像的。怎么说…...

SpringMVC (3)

目录 1. 传递对象 2. 后端参数重命名(后端参数映射) 3. 传递数组 4. 传递集合 5. 传递JSON数据 5.1 JSON概念 5.2 JSON语法 5.3 JSON字符串和Java对象互转 5.4 JSON优点 5.5 传递JSON对象 6. 获取URL中参数PathVariable 7. 上传文件RequestP…...

vscode使用豆包MARSCode----集成doubao1.5 DeepSeekR1 DeepseekV3模型的ai编程插件

引入扩展 打开VSCode扩展窗口,在搜索窗口搜索MarsCode,找到MarsCode 插件单击「install」,完成安装,登录即可使用MarsCode 编程助手。 主要功能 主要快捷键 / explain 解释项目代码,AI 返回的内容有结构分类&#…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_buf_t

ngx_buf_t 定义在 src/core/ngx_buf.h typedef struct ngx_buf_s ngx_buf_t;struct ngx_buf_s {u_char *pos;u_char *last;off_t file_pos;off_t file_last;u_char *start; /* start of buffer */u_char …...

分布式开源协调服务之zookeeper

Zookeeper简介 Zookeeper是什么? Zookeeper官网中对Zookeeper的定义还是比较明确的: ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...