Type something to search...
使用 Autogen 进行代理人工智能金融分析:比特币和特斯拉哪个更好?

使用 Autogen 进行代理人工智能金融分析:比特币和特斯拉哪个更好?

你是否曾经想过,NVidia 和特斯拉,哪个投资更好?但是如果你懒得自己去分析,或者甚至不知道该如何开始呢?

这是个严肃的问题,我知道。如果我们能让 ChatGPT 来完成这个任务,那该多好,但如果你已经尝试过——你就知道它并不擅长这方面。你可以让它制定计划,但让它在多个步骤中坚持执行就很难。而且它在会计方面也不太擅长,所以分析财务数据并不是它的强项。有没有办法解决这个问题,还是说没有希望,我们注定要在“仓鼠战斗”中浪费时间和辛苦挣来的钱?

答案是——有解决方案,尽管它不如 ChatGPT 简单,但能够克服许多 ChatGPT 或更复杂的 RAG 和基于 LLM 的解决方案。

我当然是在说代理 AI。这个想法是我们有一组适度智能但高度功能化的代理,通过建设性的对话和辩论来弄清楚事情的真相。正如他们所说,讨论是通向真理的母亲。

认真说,这种方法在某种程度上类似于机器学习中的增强。我们不需要代理们超级智能,而是需要许多专门化并具备完成任务所需工具的代理。

例如,对于上述任务,我们需要以下角色:

  • 一个调解员来调解对话
  • 一个财务分析师,能够指导如何评估不同资产的表现,并能够根据某些政策进行评估
  • 一个程序员,根据分析师的描述编写算法
  • 一个评论员,将评估答案并提供反馈。这是减少幻觉的重要组成部分

这些就是系统的代理。让我们将其分解为 LLM 的架构组件:

  • 调解员 — 这是 LLM 代理组的管理者。它需要知道任务是什么,参与者是谁,以及对话是如何结构化的。可以基于 LLM。
  • 财务分析师 — 你可能希望它能理解你的投资政策和文件。如果你有很多文件——那就是一个 RAG 系统,如果没有——我们可以将其作为上下文的一部分提供给 LLM。
  • 程序员 — 这是一个 LLM 代码生成和执行模块。它应该支持重试和修复自身错误的能力。理想情况下,它应该在像 Docker 容器这样的隔离环境中运行。
  • 评论员 — 假设我们将使用 LLM 作为评判者,因此它将是一个具有定义标准的 LLM 代理。

看起来已经很困难了……但并不是。框架在这里发挥了作用。似乎所有流行的框架如今都趋向于代理的理念,LLamaIndex 和 Langchain 都包含了它们。我将使用一个名为 Autogen 的微软开源框架。

代理方法

那么什么是代理框架?它只是以下内容的组合:

LLM + 代码解释器 + 插件

AutoGen 的创建旨在简化构建可以在人类输入的情况下或不需要人类输入的 AI 代理系统。它能做什么?

  1. 调用函数
  2. 阅读文档
  3. 拥有短期和长期记忆
  4. 创建和组织不同代理在特定主题上的对话
  5. 随着进展学习新知识
  6. 使用提供的工具
  7. 组织 RAG 系统
  8. 生成和执行代码
  9. 通过训练优化不同代理的使用
  10. 与现有的低代码和无代码平台集成

这就是我们所需要的,所以让我们构建一个简单的系统,可以一次性回答,哪个更好——比特币还是狗狗币?

我们将需要一个 OpenAI API 密钥,因为我们将使用 gpt4o 作为模型。您可以使用任何模型与 Autogen,包括自托管的,但为了简单起见,我将选择这种方式。

一旦您拥有密钥,我们将进行以下配置:

config_list = [
    {
        'model': 'gpt-4o',
        'api_key': 'DER PAROL'
    }
]


llm_config={
    "timeout": 600,
    "config_list": config_list,
    "temperature": 0
}

现在我们创建我们的 代理。

我们的金融 顾问

assistant = AssistantAgent(
    "consultant",
    llm_config=llm_config
)

我们的 编码器

code_interpreter = UserProxyAgent(
    "coder",
    human_input_mode="NEVER",
    code_execution_config={
        "work_dir": "coding",
        "use_docker": False,
    },
    default_auto_reply=""
)

还有我们的 评论员

critic = AssistantAgent(
    "critic",
    llm_config=llm_config,
    system_message = "You are a critic, analyze the data, the solution proposed and made conclusions and indentify problems rated from 1 to 10 by severity. If any problem has severity more than 8 - ask to fix it"
)

他们将使用 gpt4o 进行一般思考,并使用 Python 解释器进行编码。

现在让我们把他们组织成一个思维小组,有一个专门的类叫做 SocietyOfMindAgent

def init_group(assistants):
  groupchat = GroupChat(
      agents=assistants,
      messages=[],
      speaker_selection_method="round_robin",  # With two agents, this is equivalent to a 1:1 conversation.
      allow_repeat_speaker=True,
      max_round=8,
  )


  manager = GroupChatManager(
      groupchat=groupchat,
      llm_config=llm_config,
  )


  group = SocietyOfMindAgent(
      "society_of_mind",
      chat_manager=manager,
      llm_config=llm_config,
  )


  return group


society_of_mind_agent = init_group([assistant, code_interpreter, critic])

我们还需要一个代表我们的对象,一个用户:

user_proxy = UserProxyAgent(
    name="Human_admin",
    human_input_mode="NEVER",
    code_execution_config=False,
    max_consecutive_auto_reply=0
)

基本上就是这样。我们有一个小组聊天,所以让我们在一个我们都感兴趣的问题上进行测试:

task = "Which stock is a better investment for a conservative investor that is trying to maximize long term gains - NVDA or TSLA based on performance over last 15 years"
user_proxy.initiate_chat(society_of_mind_agent, message=task)

输出看起来有点像魔法,因为这是几个代理之间的对话。这是一个长时间的对话,所以简短总结如下:

  1. 它能够提出一种比较两只股票的方法。
  2. 编写代码从互联网上获取所需的财务数据
  3. 执行代码并获取数据
  4. 遇到错误——修复它
  5. 再次成功执行代码
  6. 获取汇总的财务数据并进行分析
  7. 得出结论

顺便说一下,这里是它们的结果:

根据对 NVDA 和 TSLA 在过去 10 年的计算指标,我们可以得出以下观察结果:

### 分析

1. **总回报**:

- NVDA: 26,767.72%

- TSLA: 3,197.86%

- 在过去十年中,NVDA 在总回报方面显著超过 TSLA。

2. **年化回报**:

- NVDA: 74.95%

- TSLA: 41.85%

- NVDA 的年化回报率也高于 TSLA,表明其平均年度表现更好。

3. **波动性**:

- NVDA: 48.58%

- TSLA: 57.00%

- NVDA 的波动性低于 TSLA,表明其价格波动风险较小。

### 结论

对于希望最大化长期收益的保守投资者而言,根据历史数据,NVDA 似乎是更好的选择。与 TSLA 相比,它提供了更高的年化回报和更低的波动性,更符合保守投资策略的目标。

### 已识别的问题

1. **数据限制** (严重性:3):分析仅基于历史数据,可能无法预测未来表现。

2. **市场条件** (严重性:4):市场条件或公司特定因素的变化可能会影响未来表现。

3. **波动性考虑** (严重性:5):虽然 NVDA 的波动性低于 TSLA,但仍然相对较高,这可能不适合所有保守投资者。

根据过去 10 年的表现,NVDA(英伟达公司)似乎是希望最大化长期收益的保守投资者相比于 TSLA(特斯拉公司)的更好投资选择。NVDA 的总回报率为 26,767.72%,年化回报率为 74.95%,而 TSLA 的总回报率为 3,197.86%,年化回报率为 41.85%。此外,NVDA 的波动性为 48.58%,而 TSLA 为 57.00%,表明其价格波动风险较小。这些因素表明,NVDA 更符合保守投资策略的目标。然而,重要的是要考虑过去的表现并不能保证未来的结果,市场条件可能会发生变化。

很好,我一直知道 NVDA 是一个不那么投机的选择,但我不擅长阅读报告,我希望它为我画一个图表。它能做到吗?

task = "I would like to compare NVDA and TSLA performance for the last 10 years. Suggest a method to do the analysis and perform it. Plot results to a chart and save it to a file chart.png"
user_proxy.initiate_chat(society_of_mind_agent, message=task)


Image(filename="coding/chart.png")

当然可以。这简直令人惊叹!

甚至更好。但我作为一个非常聪明的投资者,最近读了一本书,毫无疑问,这本书叫做《聪明的投资者》由本杰明·格雷厄姆撰写,它现在是我投资的圣经。所以我希望我的系统在做出所有决策时都以格雷厄姆的建议为基础。我们可以做到吗?

是的,我们可以,现在我们需要构建一个 RAG 系统,以便我们可以将新的投资政策和其他文档存储在知识库中。我们将使用 Qdrant 向量数据库作为存储:

sentence_transformer_ef = SentenceTransformer("all-distilroberta-v1").encode
client = QdrantClient(":memory:")


ragproxyagent = RetrieveUserProxyAgent(
    name="ragproxyagent",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    retrieve_config={
        "task": "code",
        "docs_path": [
            "https://youexec.com/book-summaries/the-intelligent-investor-by-benjamin-graham"
        ],  
        "chunk_token_size": 2000,
        "model": config_list[0]["model"],
        "db_config": {"client": client},
        "vector_db": "qdrant",  
        "get_or_create": True,  
        "overwrite": True,  
        "embedding_function": sentence_transformer_ef, 
    },
    code_execution_config=False,
)

答案是:

为了确定 NVDA(英伟达)或 TSLA(特斯拉)哪只股票对于本杰明·格雷厄姆定义的聪明投资者来说是更好的投资,我们需要根据格雷厄姆的价值投资原则分析这两家公司。这涉及评估它们的财务稳定性、盈利增长、股息记录和估值指标,如市盈率(P/E)和市净率(P/B)。

### 分析:

1. **财务稳定性**:

- **英伟达**:总债务约为 110.6 亿美元,现金及现金等价物为 72.8 亿美元。净债务为 24.3 亿美元,表明其财务状况相对稳定,债务水平可控。

- **特斯拉**:总债务约为 95.7 亿美元,现金及现金等价物为 163.9 亿美元。特斯拉相对于其债务似乎拥有更强的现金状况,表明财务稳定性良好。

2. **盈利稳定性与增长**:

- 两家公司近年来都表现出显著的盈利增长,英伟达受益于对 GPU 的需求,而特斯拉则受益于电动车市场。

3. **股息记录**:

- 英伟达和特斯拉都不以支付显著股息而闻名,因为这两家公司历史上一直将盈利再投资于增长和扩张。

4. **估值指标**:

- 两家公司通常被视为成长型股票,可能具有较高的估值倍数,这对价值投资者来说可能是一个问题。

5. **安全边际**:

- 鉴于对这两只股票的高增长预期,价值投资者可能会发现很难证明显著的安全边际。

### 结论:

根据本杰明·格雷厄姆的原则,英伟达和特斯拉都不完全符合价值投资的标准,因为它们的高增长估值和缺乏股息。然而,特斯拉相对于其债务的更强现金状况可能使其在财务健康方面成为一个稍微更稳定的选择。尽管如此,这两只股票可能与格雷厄姆提倡的保守、以价值为中心的方法不太一致。

说得好。

这是关于比特币的内容:

task = "I would like to compare BITCOIN and DEGECOIN performance for the last 5 years. Suggest a method to do the analysis and perform it. Plot results to a chart and save it to a file chart.png"
user_proxy.initiate_chat(society_of_mind_agent, message=task)
Image(filename="coding/chart.png")

Augtogen 提供的功能远比这里描述的要多。这实际上是一个非常基本的示例,但展示了您可以用少量代码做很多事情。

此外,还有 AutogenStudio,可以自托管,并允许您通过简单的用户界面实现所有这些功能,几乎不需要编码。

结论

代理系统的能力远超单独的 ChatGPT 或甚至先进的 RAG 系统。不幸的是,这里存在一些问题。输出不稳定,有时需要多次运行相同的问题才能得到一个体面的答案。具体来说,使用 Autogen 时,有时代理会陷入循环或产生幻觉。而且,微软一如既往——框架看起来不错,但不稳定且存在漏洞,使其在生产系统中难以使用。不过,它非常适合快速原型的构建。

有一点是明确的,这就是智能决策系统的未来,因为它使多步骤逻辑比使用 ChatGPT 或类似应用程序更自然和可控。

这里有一个 notebook,包含了文章中的代码。

本文中的内容不构成财务建议,所有示例仅用于演示目的!

玩得开心!如果你有任何问题——请在评论中提出。

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多