Além dos vetores: amplie os recursos do LLM com o Aggregation Framework do MongoDB
Avalie esse Tutorial
Na área de gestão de investimentos, ter dados de transações atualizados em tempo real é seu aliado mais poderoso. Uma decisão errada pode impactar negativamente todo o seu portfólio. Se você souber como aproveitar dados transacionais, poderá usá-los para descobrir insights acionáveis e tomar decisões de investimento mais estratégicas. Este artigo explorará como a estrutura de agregação do MongoDB e o GenAI trabalham juntos para transformar seu fluxo de trabalho de análise de dados.
Os grandes modelos de linguagem (LLMs) mudaram significativamente a forma como interagimos com computadores, fornecendo recursos como redigir e-mails, escrever poesia e até mesmo participar de conversas semelhantes às humanas. No entanto, quando se trata de lidar com processamento de dados complexos e cálculos matemáticos, os LLMs têm suas limitações.
Embora os LLMs se destaquem na linguagem, eles não conseguem entender e manipular números ou símbolos da mesma maneira. É aí que a estrutura de agregação do MongoDB brilha. Ele permite que você processe coleções inteiras de dados, passando-os por um pipeline de vários estágios. Dentro desses estágios, você pode realizar cálculos e transformações em coleções inteiras. Isso permite que você contorne as limitações dos LLMs, fornecendo um método confiável para análise de dados.
Neste artigo, usaremos a framework de aggregation do MongoDB e a GenAI para superar as limitações do RAG clássico. Exploraremos o conjunto de dados de amostra do MongoDB Atlas — especificamente, o banco de dados
sample_analytics
e a collectiontransactions
. O banco de dados sample_analytics contém três collections para um aplicativo típico de serviços financeiros: clientes, contas e transações.Para este exemplo, vamos nos concentrar nos dados de transações, que oferecem um conjunto de dados realista que permite aos usuários aprimorar suas habilidades em análise, consulta e agregação de dados, especialmente no contexto de negócios.
O código fonte está disponível no GitHub - mdb-agg-crewai
Antes de começarmos
Para acompanhar, você precisará de:
- Um recurso LLM : a CrewAI oferece suporte a várias conexões LLM , incluindo modelos locais (Ollama), APIs como o Azure e todos os componentes do LangChain LLM para soluções de AI personalizáveis. Saiba mais sobre o suporte do CrewAI LLM .
Observação: O código-fonte no exemplo usa o Azure OpenAI. Para acompanhar, você precisará de uma implantação válida do Azure OpenAI.
O banco de dados sample_analytics contém três coleções (clientes, contas, transações) para um aplicativo típico de serviços financeiros. A coleção de transações contém detalhes de transações para usuários. Cada documento contém um ID de conta, uma contagem de quantas transações estão nesse conjunto, as datas de início e término das transações cobertas por este documento e uma lista de subdocumentos. Cada subdocumento representa uma única transação e as informações relacionadas para essa transação.
transaction_id
: este é um identificador único que marca distintamente cada transação.account_id
: este campo estabelece uma conexão entre a transação e sua conta correspondente.date
: representa a data e a hora precisas em que a transação ocorreu.transaction_code
: indica a natureza da transação, como depósito, retirada, compra ou venda.symbol
: este campo denota o símbolo da ação ou compromisso envolvido na transação.amount
: Isso reflete o valor da transação.total
: captura o valor transacionado abrangente, incluindo quantidades, taxas e quaisquer encargos adicionais associados à transação.
Imagine isto: você está administrando uma empresa com um aplicativo de serviços financeiros padrão. Seu objetivo? Identifique oportunidades ocultas no mercado examinando todos os dados de transações e identificando as três principais ações com base no ganho ou perda líquida. Em seguida, podemos pesquisar eventos atuais e tendências de mercado para descobrir oportunidades potenciais nas ações que historicamente apresentaram o melhor ganho líquido, de acordo com nossos dados de transações.
O ganho líquido fornece uma imagem clara da lucratividade de um investimento em um determinado período. É a diferença entre o valor total recebido com a venda de um ativo (como ações) e o valor total gasto para comprá-lo.
Existem várias razões pelas quais o ganho líquido é importante. Permite aos investidores determinar a rentabilidade dos seus investimentos (positiva ou negativa). Além disso, o ganho líquido ajuda os investidores a comparar o desempenho de diferentes investimentos, estejam eles tendo sucesso ou ficando para trás. Em terceiro lugar, o ganho líquido pode ser usado para avaliar a eficácia de uma estratégia de investimento. Os investimentos que resultam consistentemente em um ganho líquido negativo podem ser muito arriscados e podem precisar ser vendidos. E, por último, o ganho líquido pode influenciar futuras decisões de investimento e mitigar riscos – por exemplo, identificando quais ações historicamente mostraram o melhor ganho líquido.
Em um ambiente SQL tradi Também pode ser uma tarefa que consome muitos recursos, exigindo tempo e capacidade computacional significativos.
O processo pode ser mais eficiente aproveitando o poder da estrutura de agregação do MongoDB, combinado com os recursos inteligentes de tecnologias de AI , como CrewAI e LLMs. Isso não apenas simplifica o processo, mas também oferece insights mais profundos.
O pipeline de agregação que criaremos calcula os valores totais de compra e venda de cada ação. Em seguida, ele calcula o ganho ou perda líquida subtraindo o valor total de compra do valor total de venda. Em seguida, as ações são classificadas por Ganho ou Perda Líquido em Ordem decrescente, com os Ganhos Líquidos mais Elevados no topo.
Se você é novo no MongoDB, sugerimos que você crie esse pipeline de agregação usando o construtor de agregações no Compass e o exporte para o Python. O construtor de pipeline de agregação no MongoDB Compass ajuda você a criar pipelines de agregação para processar documentos de uma coleção ou exibir e retornar resultados calculados.
O aggregation pipeline do MongoDB nos fornece os dados que precisamos analisar. Quando você pode extrair insights significativos de dados brutos mais rapidamente, pode tomar melhores decisões de investimento. A CrewAI, combinada com o MongoDB Atlas, fornece uma abordagem exclusiva que vai além do processamento básico de números para fornecer insights aplicáveis.
Para este exemplo, criaremos um agente Pesquisador de Valores. Esse agente encontra dados valiosos usando ferramentas como mecanismos de pesquisa. Ele foi projetado para identificar tendências financeiros, notícias da empresa e insights de analistas. Saiba mais sobre como criar agentes usando a CrewAI.
A inteligência artificial (AI) está mudando rapidamente, transformando a forma como lidamos com o mundo orientado por dados em que existimos. O CrewAI introduz uma framework para AI participativa que habilita as equipes a fazer mais por meio de unidades de AI especializadas e fluxos de trabalho simplificados.
No centro da CrewAI estão os agentes. Estes não são os típicos assistentes de AI. Em vez disso, funcionam como membros inteligentes da equipe, cada um com uma função distinta (por exemplo, pesquisador, escritor, editor) e um objetivo bem definido . Eles podem executar tarefas, tomar decisões e comunicar-se com outros agentes.
Mas o que realmente diferencia a CrewAI é a colaboração perfeita entre esses agentes. Isso é alcançado por meio de um sistema de tarefas. As tarefas atuam como os blocos de construção dos fluxos de trabalho da CrewAI, permitindo definir uma sequência de ações que aproveitam os pontos fortes de diferentes agentes.
A CrewAI também oferece um arsenal abrangente de ferramentas que capacitam esses agentes. Essas ferramentas incluem raspagem da Web, análise de dados e geração de conteúdo. Ao equipar os agentes com as ferramentas certas, você pode garantir que eles tenham tudo o que precisam para realizar suas tarefas com eficiência.
Em essência, a poderosa combinação de agentes, tarefas e ferramentas do CrewAI permite que você:
- Automatize tarefas repetitivas.
- Simplifique os fluxos de trabalho.
- Desbloqueie o verdadeiro potencial da AI.
Nesta seção, examinaremos o código Python usado para realizar análises financeiras com base em dados de transações armazenados no MongoDB, usando o GenAI para análise de dados. A versão do Python usada durante o desenvolvimento foi
3.10.10
.Aqui estão os pacotes necessários para executar o código. Certifique-se de que eles estejam instalados corretamente antes de continuar.
1 pymongo==4.7.2 2 crewai==0.22.5 3 langchain==0.1.10 4 langchain-community 5 langchain-openai==0.0.5 6 duckduckgo-search==6.1.5
Você pode instalar todos os pacotes executando
pip install -r requirements.txt
.Primeiro, configuramos uma conexão com o MongoDB usando o PyMongo. É aqui que os dados das nossas transações são armazenados.
Importante: embora estejamos incluindo a connection string diretamente no código para fins de demonstração, ela não é recomendada para aplicativos do mundo real. Uma abordagem mais segura é recuperar a cadeia de conexão do seu cluster MongoDB Atlas.
Veja como acessar sua string de conexão do Atlas:
- Faça login em sua conta do MongoDB Atlas e navegue até seu cluster.
- Clique em "Conectar" no menu de navegação à esquerda.
- Escolha o driver que você usará (por exemplo, Python) e sua versão.
- Você verá uma connection string fornecida. Copie esta string para uso em seu aplicativo.
Depois de ter sua connection string, você está pronto para começar.
1 import os 2 import pymongo 3 4 MDB_URI = "mongodb+srv://<user>:<password>@cluster0.abc123.mongodb.net/" 5 client = pymongo.MongoClient(MDB_URI) 6 db = client["sample_analytics"] 7 collection = db["transactions"]
Em seguida, configuramos nosso recurso Azure OpenAI LLM. O código no exemplo utiliza o Azure OpenAI. Para acompanhar, você precisará de uma implantação válida do Azure OpenAI.
1 from langchain_openai import AzureChatOpenAI 2 3 AZURE_OPENAI_ENDPOINT = "https://__DEMO__.openai.azure.com" 4 AZURE_OPENAI_API_KEY = "__AZURE_OPENAI_API_KEY__" 5 deployment_name = "gpt-4-32k" # The name of your model deployment 6 default_llm = AzureChatOpenAI( 7 openai_api_version=os.environ.get("AZURE_OPENAI_VERSION", "2023-07-01-preview"), 8 azure_deployment=deployment_name, 9 azure_endpoint=AZURE_OPENAI_ENDPOINT, 10 api_key=AZURE_OPENAI_API_KEY 11 )
Para este exemplo, usaremos a integração DuckDuckGo Search LangChain. O DuckDuckGo Search é um componente que permite aos usuários pesquisar na web usando o DuckDuckGo Search.
1 # Web Search Setup 2 from langchain.tools import tool 3 from langchain_community.tools import DuckDuckGoSearchResults 4 duck_duck_go = DuckDuckGoSearchResults(backend="news") 5 6 # Search Tool - Web Search 7 8 def search_tool(query: str): 9 """ 10 Perform online research on a particular stock. 11 """ 12 return duck_duck_go.run(query)
O DuckDuckGo foi escolhido para este exemplo porque:
- Não requer chave de API.
- É fácil de usar.
- Fornece
snippets
.
Usaremos a CrewAI para gerenciar nossos agentes e tarefas. Nesse caso, temos um agente - um pesquisador que tem a tarefa de analisar os dados e fornecer insights. No CrewAI, as tarefas são as etapas individuais que compõem um fluxo de trabalho maior.
No CrewAI, uma equipe representa um grupo de agentes que trabalham juntos para realizar um conjunto de tarefas. Embora nosso exemplo seja uma equipe de um único agente por questões de simplicidade, você pode criar equipes de vários agentes para fluxos de trabalho mais complexos.
- Tarefas: essas são as etapas individuais que compõem seu fluxo de trabalho de pesquisa de investimento. Cada tarefa representa uma ação específica que o agente precisa realizar para atingir a meta geral.
- Agentes: Pense neles como os trabalhadores que executam as tarefas. Vamos ter um agente Pesquisador de Valores dedicado, habilitado com as ferramentas e o conhecimento necessários para concluir as tarefas atribuídas.
A CrewAI permite personalizar o comportamento do seu agente por meio de vários parâmetros:
- Papel e objetivo (AGENT_ROLE e AGENT_GOAL): definem o propósito do agente. Aqui, definimos o papel de "Pesquisador de Investimentos" com o objetivo de "identificar oportunidades de investimento". Isso orienta o agente em direção a fontes de dados e métodos de análise relevantes (por exemplo, tendências de mercado, notícias da empresa, relatórios de analistas).
- História de fundo: crie uma história de fundo como "Pesquisador especialista em ações com décadas de experiência" para adicionar contexto e potencialmente influenciar o estilo de comunicação e a interpretação das informações do agente.
- Ferramentas: Equipe seu agente com ferramentas (funções ou classes) para concluir suas tarefas. Isso pode incluir uma ferramenta de busca para coletar informações ou uma ferramenta de análise para processar dados.
- Modelo de linguagem grande (LLM): esse é o mecanismo de AI que impulsiona as tarefas do agente, como processamento e geração de texto. A escolha de um LLM diferente pode impactar significativamente a produção do agente com base nos pontos fortes e fracos subjacentes do LLM.
- Verbose (verboso): A configuração
verbose=True
fornece um registro mais detalhado do processo de pensamento do agente para fins de depuração.
Ajustando esses parâmetros, você pode adaptar seu agente de pesquisa de investimentos para se concentrar em setores específicos do mercado, priorizar fontes de informação e até mesmo influenciar sua tolerância a riscos ou estilo de investimento (por meio do
backstory
).1 # Research Agent Setup 2 from crewai import Crew, Process, Task, Agent 3 AGENT_ROLE = "Investment Researcher" 4 AGENT_GOAL = """ 5 Research stock market trends, company news, and analyst reports to identify potential investment opportunities. 6 """ 7 researcher = Agent( 8 role=AGENT_ROLE, 9 goal=AGENT_GOAL, 10 verbose=True, 11 llm=default_llm, 12 backstory='Expert stock researcher with decades of experience.', 13 tools=[search_tool] 14 ) 15 16 task1 = Task( 17 description=""" 18 Using the following information: 19 20 [VERIFIED DATA] 21 {agg_data} 22 23 *note* 24 The data represents the net gain or loss of each stock symbol for each transaction type (buy/sell). 25 Net gain or loss is a crucial metric used to gauge the profitability or efficiency of an investment. 26 It's computed by subtracting the total buy value from the total sell value for each stock. 27 [END VERIFIED DATA] 28 29 [TASK] 30 - Generate a detailed financial report of the VERIFIED DATA. 31 - Research current events and trends, and provide actionable insights and recommendations. 32 33 34 [report criteria] 35 - Use all available information to prepare this final financial report 36 - Include a TLDR summary 37 - Include 'Actionable Insights' 38 - Include 'Strategic Recommendations' 39 - Include a 'Other Observations' section 40 - Include a 'Conclusion' section 41 - IMPORTANT! You are a friendly and helpful financial expert. Always provide the best possible answer using the available information. 42 [end report criteria] 43 """, 44 agent=researcher, 45 expected_output='concise markdown financial summary of the verified data and list of key points and insights from researching current events', 46 tools=[search_tool], 47 ) 48 # Crew Creation 49 tech_crew = Crew( 50 agents=[researcher], 51 tasks=[task1], 52 process=Process.sequential 53 )
Em seguida, definimos nosso pipeline de agregação do MongoDB. Esse pipeline é usado para processar nossos dados de transação e calcular o ganho líquido para cada símbolo de ação.
1 # MongoDB Aggregation Pipeline 2 pipeline = [ 3 { 4 "$unwind": "$transactions" # Deconstruct the transactions array into separate documents 5 }, 6 { 7 "$group": { # Group documents by stock symbol 8 "_id": "$transactions.symbol", # Use symbol as the grouping key 9 "buyValue": { # Calculate total buy value 10 "$sum": { 11 "$cond": [ # Conditional sum based on transaction type 12 { "$eq": ["$transactions.transaction_code", "buy"] }, # Check for "buy" transactions 13 { "$toDouble": "$transactions.total" }, # Convert total to double for sum 14 0 # Default value for non-buy transactions 15 ] 16 } 17 }, 18 "sellValue": { # Calculate total sell value (similar to buyValue) 19 "$sum": { 20 "$cond": [ 21 { "$eq": ["$transactions.transaction_code", "sell"] }, 22 { "$toDouble": "$transactions.total" }, 23 0 24 ] 25 } 26 } 27 } 28 }, 29 { 30 "$project": { # Project desired fields (renaming and calculating net gain) 31 "_id": 0, # Exclude original _id field 32 "symbol": "$_id", # Rename _id to symbol for clarity 33 "netGain": { "$subtract": ["$sellValue", "$buyValue"] } # Calculate net gain 34 } 35 }, 36 { 37 "$sort": { "netGain": -1 } # Sort results by net gain (descending) 38 }, 39 {"$limit": 3} # Limit results to top 3 stocks 40 ] 41 42 43 results = list(collection.aggregate(pipeline)) 44 client.close() 45 46 print("MongoDB Aggregation Pipeline Results:") 47 print(results)
Aqui está um detalhamento do que o pipeline MongoDB faz:
- Desfazendo transações: Cada documento contém informações sobre várias compras e vendas de ações. O pipeline usa o operador
$unwind
para desempacotar um campo de matriz chamado "transactions" em cada documento. O desempacotamento separa essas transações em documentos individuais, simplificando os cálculos subsequentes. - Agrupamento por símbolo: em seguida, o operador
$group
agrupa os documentos desenrolados com base no valor no campo "transactions.symbol". Isso essencialmente combina todas as transações para uma ação específica (representada pelo símbolo) em um único grupo. - Cálculo de valores de compra e venda: Dentro de cada grupo de símbolos, o pipeline calcula dois valores cruciais:
- BuyValue: Isso usa o
$sum
acumulador junto com uma declaração condicional ($cond
). O$cond
verifica se o " transaction_code " no objeto " transactions " é " buy. " Se for, ele converte o campo " total " (o valor da transação) em duplo usando$toDouble
e o adiciona ao total atual de BuyValue. Se não for uma transação de compra, ela não contribui com nada (0) para a soma. Isso calcula efetivamente o valor total gasto na compra de ações desse símbolo específico . - sellValue: Semelhante a buyValue, calcula o valor total recebido pela venda de ações do mesmo símbolo. Ele usa a mesma lógica, mas verifica se há "transaction_code" igual a "vender" e soma esses valores "totais".
- Projetando resultados: Agora, o operador
$project
define o formato de saída final. Ele descarta o identificador de agrupamento gerado automaticamente (_id
) configurando-o como 0. Em seguida, ele renomeia o campo de agrupamento (_id
que continha "transactions.symbol") para um nome mais claro, "symbol". Finalmente, calcula o ganho ou perda líquida para cada símbolo usando o operador$subtract
. Isso subtraibuyValue
desellValue
para determinar o ganho ou perda líquida desse símbolo. - Classificação por ganho líquido: O operador
$sort
organiza os resultados. Ele classifica os documentos com base no campo "netGain" em ordem decrescente (-1) para que os símbolos com o maior ganho líquido (mais lucrativos) apareçam primeiro na saída final. - Limitando resultados:por último, o operador
$limit
limita o número de documentos passados para o próximo estágio do pipeline. Nesse caso, ele é definido como 3, o que significa que somente os três principais documentos (ações com o maior ganho neto) serão incluídos no resultado final.
Antes de iniciarmos nosso fluxo de trabalho de agente automatizado, precisamos garantir que o código executado até o momento esteja livre de erros.
A saída esperada deve se assemelhar ao seguinte:
1 MongoDB Aggregation Pipeline Results: 2 [{'netGain': 72769230.71428967, 'symbol': 'amzn'}, 3 {'netGain': 39912931.04990542, 'symbol': 'sap'}, 4 {'netGain': 25738882.292086124, 'symbol': 'aapl'}]
Agora podemos iniciar nossa execução de tarefa. O agente pesquisador utilizará os dados derivados de nossa agregação do MongoDB, juntamente com quaisquer outras ferramentas à sua disposição, para analisar os dados e oferecer insights.
1 tech_crew.kickoff(inputs={'agg_data': str(results)})
1 import os 2 import pymongo 3 import pprint 4 5 # MongoDB Setup 6 MDB_URI = "mongodb+srv://<user>:<password>@cluster0.abc123.mongodb.net/" 7 client = pymongo.MongoClient(MDB_URI) 8 db = client["sample_analytics"] 9 collection = db["transactions"] 10 11 # Azure OpenAI Setup 12 from langchain_openai import AzureChatOpenAI 13 AZURE_OPENAI_ENDPOINT = "https://__DEMO__.openai.azure.com" 14 AZURE_OPENAI_API_KEY = "__AZURE_OPENAI_API_KEY__" 15 deployment_name = "gpt-4-32k" # The name of your model deployment 16 default_llm = AzureChatOpenAI( 17 openai_api_version=os.environ.get("AZURE_OPENAI_VERSION", "2023-07-01-preview"), 18 azure_deployment=deployment_name, 19 azure_endpoint=AZURE_OPENAI_ENDPOINT, 20 api_key=AZURE_OPENAI_API_KEY 21 ) 22 23 # Web Search Setup 24 from langchain.tools import tool 25 from langchain_community.tools import DuckDuckGoSearchResults 26 duck_duck_go = DuckDuckGoSearchResults(backend="news",max_results=10) 27 28 # Search Tool - Web Search 29 30 def search_tool(query: str): 31 """ 32 Perform online research on a particular stock. 33 Will return search results along with snippets of each result. 34 """ 35 print("\n\nSearching DuckDuckGo for:", query) 36 search_results = duck_duck_go.run(query) 37 search_results_str = "[recent news for: " + query + "]\n" + str(search_results) 38 return search_results_str 39 40 41 # Research Agent Setup 42 from crewai import Crew, Process, Task, Agent 43 AGENT_ROLE = "Investment Researcher" 44 AGENT_GOAL = """ 45 Research stock market trends, company news, and analyst reports to identify potential investment opportunities. 46 """ 47 researcher = Agent( 48 role=AGENT_ROLE, 49 goal=AGENT_GOAL, 50 verbose=True, 51 llm=default_llm, 52 backstory='Expert stock researcher with decades of experience.', 53 tools=[search_tool] 54 ) 55 56 task1 = Task( 57 description=""" 58 Using the following information: 59 60 [VERIFIED DATA] 61 {agg_data} 62 63 *note* 64 The data represents the net gain or loss of each stock symbol for each transaction type (buy/sell). 65 Net gain or loss is a crucial metric used to gauge the profitability or efficiency of an investment. 66 It's computed by subtracting the total buy value from the total sell value for each stock. 67 [END VERIFIED DATA] 68 69 [TASK] 70 - Generate a detailed financial report of the VERIFIED DATA. 71 - Research current events and trends, and provide actionable insights and recommendations. 72 73 74 [report criteria] 75 - Use all available information to prepare this final financial report 76 - Include a TLDR summary 77 - Include 'Actionable Insights' 78 - Include 'Strategic Recommendations' 79 - Include a 'Other Observations' section 80 - Include a 'Conclusion' section 81 - IMPORTANT! You are a friendly and helpful financial expert. Always provide the best possible answer using the available information. 82 [end report criteria] 83 """, 84 agent=researcher, 85 expected_output='concise markdown financial summary of the verified data and list of key points and insights from researching current events', 86 tools=[search_tool], 87 ) 88 # Crew Creation 89 tech_crew = Crew( 90 agents=[researcher], 91 tasks=[task1], 92 process=Process.sequential 93 ) 94 95 # MongoDB Aggregation Pipeline 96 pipeline = [ 97 { 98 "$unwind": "$transactions" # Deconstruct the transactions array into separate documents 99 }, 100 { 101 "$group": { # Group documents by stock symbol 102 "_id": "$transactions.symbol", # Use symbol as the grouping key 103 "buyValue": { # Calculate total buy value 104 "$sum": { 105 "$cond": [ # Conditional sum based on transaction type 106 { "$eq": ["$transactions.transaction_code", "buy"] }, # Check for "buy" transactions 107 { "$toDouble": "$transactions.total" }, # Convert total to double for sum 108 0 # Default value for non-buy transactions 109 ] 110 } 111 }, 112 "sellValue": { # Calculate total sell value (similar to buyValue) 113 "$sum": { 114 "$cond": [ 115 { "$eq": ["$transactions.transaction_code", "sell"] }, 116 { "$toDouble": "$transactions.total" }, 117 0 118 ] 119 } 120 } 121 } 122 }, 123 { 124 "$project": { # Project desired fields (renaming and calculating net gain) 125 "_id": 0, # Exclude original _id field 126 "symbol": "$_id", # Rename _id to symbol for clarity 127 "netGain": { "$subtract": ["$sellValue", "$buyValue"] } # Calculate net gain 128 } 129 }, 130 { 131 "$sort": { "netGain": -1 } # Sort results by net gain (descending) 132 }, 133 {"$limit": 3} # Limit results to top 3 stocks 134 ] 135 results = list(collection.aggregate(pipeline)) 136 client.close() 137 138 # Print MongoDB Aggregation Pipeline Results 139 print("MongoDB Aggregation Pipeline Results:") 140 141 pprint.pprint(results) #pprint is used to to “pretty-print” arbitrary Python data structures 142 143 # Start the task execution 144 tech_crew.kickoff(inputs={'agg_data': str(results)})
1 Thought: 2 The recent news for Apple indicates that the company's stock has reached a $3 trillion valuation, largely due to the hype surrounding the introduction of AI to iPhones. This could be a significant catalyst for Apple's future growth. Now, I have enough information to generate a detailed financial report of the verified data, including a TLDR summary, actionable insights, strategic recommendations, other observations, and a conclusion. 3 4 Final Answer: 5 6 **Financial Report** 7 8 **TLDR Summary** 9 10 Based on the verified data, the net gains for the three stocks are as follows: 11 12 1. Amazon (AMZN) - $72,769,230.71 13 2. SAP - $39,912,931.04 14 3. Apple (AAPL) - $25,738,882.29 15 16 Amazon has the highest net gain, followed by SAP and Apple. 17 18 **Actionable Insights** 19 20 - **Amazon (AMZN):** The company's stock is seen as a good buy due to its attractive valuation and significant dominance in the e-commerce market. 21 - **SAP:** The company is making a significant acquisition of WalkMe Ltd., which could potentially boost its value and market position. 22 - **Apple (AAPL):** The company's stock has reached a $3 trillion valuation, largely due to the hype surrounding the introduction of AI to iPhones. This could be a significant catalyst for Apple's future growth. 23 24 **Strategic Recommendations** 25 26 - **Amazon (AMZN):** Given its dominant position in e-commerce and attractive valuation, it might be a good idea to consider increasing investments in Amazon. 27 - **SAP:** Considering the potential value boost from the recent acquisition, investors might want to keep a close watch on SAP's performance and consider it for their portfolio. 28 - **Apple (AAPL):** With the hype around the introduction of AI to iPhones, Apple's stock could see significant growth. It might be a good time to invest or increase existing investments. 29 30 **Other Observations** 31 32 The companies have seen fluctuations in their stock prices but generally perform well. The current trends and developments indicate potential for further growth. 33 34 **Conclusion** 35 36 Given the net gains and recent developments, Amazon, SAP, and Apple seem to be promising investments. However, as with any investment decision, it's important to consider individual financial goals, risk tolerance, and market conditions. It's always recommended to conduct further research or consult with a financial advisor before making investment decisions. 37 38 This report provides a high-level overview of the current events and trends impacting these stocks, but the rapidly changing market environment necessitates regular monitoring and analysis of investment portfolios. 39 40 > Finished chain.
A estrutura de agregação do MongoDB e o GenAI são ferramentas poderosas para analisar dados, mas devemos reconhecer algumas limitações em potencial.
Primeiro, há uma dependência maior de dados históricos. O desempenho passado de um investimento não é necessariamente indicativo de resultados futuros. Este é especialmente o caso em mercado imprevisível.
Em segundo lugar, há uma dependência de trechos de resultados de pesquisa. Os trechos fornecidos pelo DuckDuckGo nem sempre fornecem informações suficientes. Talvez você queira considerar a raspagem do URL do resultado da pesquisa usando algo como o Firecrawl, que pode rastrear e converter qualquer site em marcação limpa ou dados estruturados.
Em seguida, sempre haverá dúvidas sobre as projeções, por mais habilidosas que essas ferramentas possam ser.
E, finalmente, devemos considerar que os LLMs têm suas próprias limitações. Eles estão sempre desenvolvendo e melhorando continuamente. No entanto, vieses nos dados de treinamento ou limitações na arquitetura do modelo podem levar a insights imprecisos ou enganosos.
É importante estar ciente dessas limitações para garantir uma abordagem mais responsável e completa para a análise de investimentos.
Neste artigo, exploramos como a estrutura de agregação do MongoDB, os grandes modelos de linguagem e o CrewAI podem ser aproveitados para transformar a análise de investimentos. A chave para tomar decisões de investimento mais inteligentes é aproveitar o poder dos dados de suas transações. A estrutura de agregação do MongoDB fornece as ferramentas para calcular com eficiência métricas essenciais, como ganho net, diretamente na plataforma de dados, sem nenhum código adicional necessário na camada de aplicativos.
Quando combinada com a capacidade da CrewAI de automatizar fluxos de trabalho de pesquisa, você obtém uma compreensão mais profunda do mercado, identifica novas oportunidades, toma decisões mais inteligentes e impulsiona o sucesso do seu investimento.
O futuro da análise de investimentos pertence àqueles que adotam dados e AI. Ao combinar a robusta plataforma de dados do MongoDB com os recursos de geração de insights de ferramentas de AI como o CrewAI, você obtém a capacidade de:
- Analise tendências mais rapidamente do que aquelas que dependem de métodos tradicionais.
- Identifique padrões benéficos que outros perdem.
- Tome decisões informadas com base em dados brutos e insights contextuais.
- Automatize a análise entediante, dando a você mais tempo para o planejamento estratégico.
Não apenas analise o mercado - molde-o. Explore o MongoDB e o AI hoje mesmo e transforme seu processo de tomada de decisão de capital.
Alguma dúvida? Comentários? Junte-se a nós na Comunidade de desenvolvedores MongoDB para continuar a conversa.