( الصورة من مدونة LangChain | CrewAI: مستقبل فرق وكلاء الذكاء الاصطناعي)
يوفر لنا خط أنابيب تجميع MongoDB البيانات التي نحتاج إلى تحليلها. كلما تمكنت من استخلاص رؤى ذات معنى من البيانات الأولية بشكل أسرع، كلما كانت قراراتك الاستثمارية أفضل. يوفر CrewAI، جنبًا إلى جنب مع قوة MongoDB Atlas، نهجًا فريدًا يتجاوز معالجة الأرقام الأساسية لتقديم تحليل قابل للتنفيذ حقًا.
في هذا المثال، سنقوم بإنشاء وكيل باحث استثماري. هذا الوكيل هو خبيرنا، وهو ماهر في العثور على البيانات القيمة باستخدام أدوات مثل محركات البحث. إنه مصمم لتعقب الاتجاهات المالية وأخبار الشركة ورؤى المحللين. لمعرفة المزيد حول إنشاء الوكلاء باستخدام CrewAI، انقر هنا
إطلاق العنان لقوة التعاون في مجال الذكاء الاصطناعي: الوكلاء والمهام والأدوات
في جوهر الأمر، فإن مجموعة CrewAI القوية من الوكلاء والمهام والأدوات تمكنك من:
قبل أن نبدأ
للمتابعة، ستحتاج إلى:
مجموعة MongoDB Atlas: أنشئ مجموعتك المجانية وقم بتحميل نموذج مجموعة البيانات. توفر بيانات المعاملات في مجموعة بيانات التحليلات النموذجية مجموعة بيانات واقعية تتيح للمستخدمين صقل مهاراتهم في تحليل البيانات والاستعلام عنها وتجميعها، لا سيما في سياق البيانات المالية.
مورد LLM: يدعم CrewAI اتصالات LLM المتنوعة، بما في ذلك النماذج المحلية (Ollama)، وواجهات برمجة التطبيقات مثل Azure، وجميع مكونات LangChain LLM لحلول الذكاء الاصطناعي القابلة للتخصيص. انقر هنا لمعرفة المزيد حول دعم CrewAI LLM
بعد ذلك، قمنا بإعداد اتصالنا بـ Azure OpenAI. يمكن استبدال Azure OpenAI ببرنامج LLM المفضل لديك.
from langchain_openai import AzureChatOpenAI
AZURE_OPENAI_ENDPOINT = "https://__DEMO__.openai.azure.com"
AZURE_OPENAI_API_KEY = "__AZURE_OPENAI_API_KEY__"
deployment_name = "gpt-4-32k" # The name of your model deployment
default_llm = AzureChatOpenAI (
openai_api_version = os . environ . get ( "AZURE_OPENAI_VERSION" , "2023-07-01-preview" ),
azure_deployment = deployment_name ,
azure_endpoint = AZURE_OPENAI_ENDPOINT ,
api_key = AZURE_OPENAI_API_KEY
)
ثم لنقم بتعيين دور الوكيل وهدف الوكيل كمتغير بحيث يمكن الوصول إليه خلال البرنامج النصي.
# Initial Setup
AGENT_ROLE = "Investment Researcher"
AGENT_GOAL = """
Research stock market trends, company news, and analyst reports to identify potential investment opportunities.
"""
في هذا المثال، سنستخدم تكامل DuckDuckGo Search Langchain. يعد بحث DuckDuckGo أحد المكونات التي تتيح للمستخدمين البحث في الويب باستخدام DuckDuckGo. يمكنك تنفيذ أداة البحث الخاصة بك باستخدام واجهة برمجة تطبيقات البحث التي تختارها - وليس من الضروري أن تكون DuckDuckGo.
# Web Search Setup
from langchain . tools import tool
from langchain_community . tools import DuckDuckGoSearchResults
duck_duck_go = DuckDuckGoSearchResults ( backend = "news" )
# Search Tool - Web Search
@ tool
def search_tool ( query : str ):
"""
Perform online research on a particular stock.
"""
return duck_duck_go . run ( query )
سنستخدم CrewAI لإدارة وكلائنا ومهامنا. في هذه الحالة، لدينا وكيل واحد - باحث مكلف بتحليل البيانات وتقديم رؤى قابلة للتنفيذ.
# Research Agent Setup
from crewai import Crew , Process , Task , Agent
researcher = Agent (
role = 'Investment Researcher' ,
goal = """
Research market trends, company news, and analyst reports to identify potential investment opportunities.
""" ,
verbose = True ,
llm = default_llm ,
backstory = 'Expert in using search engines to uncover relevant financial data, news articles, and industry analysis.' ,
tools = [ search_tool ]
)
analysis_task = Task (
description = """
Using the following information:
[VERIFIED DATA]
{agg_data}
*note*
The data represents the average price of each stock symbol for each transaction type (buy/sell),
and the total amount of transactions for each type. This would give us insight into the average costs and proceeds from each stock,
as well as the volume of transactions for each stock.
[END VERIFIED DATA]
[TASK]
- Provide a financial summary of the VERIFIED DATA
- Research current events and trends, and provide actionable insights and recommendations
""" ,
agent = researcher ,
expected_output = 'concise markdown financial summary and list of actionable insights and recommendations' ,
tools = [ search_tool ],
)
tech_crew = Crew (
agents = [ researcher ],
tasks = [ analysis_task ],
process = Process . sequential
)
بعد ذلك، نحدد خط أنابيب تجميع MongoDB الخاص بنا. يتم استخدام خط الأنابيب هذا لمعالجة بيانات معاملاتنا وحساب عائد الاستثمار لكل رمز سهم.
# MongoDB Aggregation Pipeline
pipeline = [
{
"$unwind" : "$transactions" # Deconstruct the transactions array into separate documents
},
{
"$group" : { # Group documents by stock symbol
"_id" : "$transactions.symbol" , # Use symbol as the grouping key
"buyValue" : { # Calculate total buy value
"$sum" : {
"$cond" : [ # Conditional sum based on transaction type
{ "$eq" : [ "$transactions.transaction_code" , "buy" ] }, # Check for "buy" transactions
{ "$toDouble" : "$transactions.total" }, # Convert total to double for sum
0 # Default value for non-buy transactions
]
}
},
"sellValue" : { # Calculate total sell value (similar to buyValue)
"$sum" : {
"$cond" : [
{ "$eq" : [ "$transactions.transaction_code" , "sell" ] },
{ "$toDouble" : "$transactions.total" },
0
]
}
}
}
},
{
"$project" : { # Project desired fields (renaming and calculating net gain)
"_id" : 0 , # Exclude original _id field
"symbol" : "$_id" , # Rename _id to symbol for clarity
"netGain" : { "$subtract" : [ "$sellValue" , "$buyValue" ] } # Calculate net gain
}
},
{
"$sort" : { "netGain" : - 1 } # Sort results by net gain (descending)
},
{ "$limit" : 3 } # Limit results to top 3 stocks
]
results = list ( collection . aggregate ( pipeline ))
client . close ()
print ( "MongoDB Aggregation Pipeline Results:" )
print ( results )
فيما يلي تفاصيل لما يفعله خط أنابيب MongoDB:
فك المعاملات: أولاً، يستخدم عامل التشغيل $unwind
لفك ضغط حقل مصفوفة يسمى "المعاملات" داخل كل مستند. تخيل أن كل مستند يحتوي على معلومات حول عمليات شراء وبيع الأسهم المتعددة. يؤدي الحل إلى فصل هذه المعاملات إلى مستندات فردية، مما يجعل العمليات الحسابية أسهل.
التجميع حسب الرمز: بعد ذلك، يتولى عامل $group
المهمة. يقوم بتجميع المستندات غير الملفوفة بناءً على القيمة الموجودة في الحقل "transactions.symbol". يجمع هذا بشكل أساسي جميع المعاملات الخاصة بمخزون معين (يمثله الرمز) في مجموعة واحدة.
حساب قيم الشراء والبيع: داخل كل مجموعة رموز، يحسب المسار قيمتين مهمتين:
$sum
مع العبارة الشرطية ( $cond
). يتحقق $cond
مما إذا كان "رمز_المعاملة" داخل كائن "المعاملات" هو "شراء". إذا كان الأمر كذلك، فإنه يحول الحقل "الإجمالي" (مبلغ المعاملة) إلى مزدوج باستخدام $toDouble
ويضيفه إلى الإجمالي الجاري لـ buyValue. إذا لم تكن معاملة شراء، فلن تساهم بأي شيء (0) في المبلغ. وهذا يحسب بشكل فعال المبلغ الإجمالي الذي تم إنفاقه على شراء أسهم هذا الرمز المحدد. توقع النتائج: الآن، يتدخل مشغل $project
لتحديد تنسيق الإخراج النهائي. فهو يتجاهل معرف التجميع الذي تم إنشاؤه تلقائيًا ( _id
) عن طريق تعيينه على 0. ثم يقوم بإعادة تسمية حقل التجميع ( _id
الذي يحتوي على "transactions.symbol") إلى اسم أكثر وضوحًا، "الرمز". وأخيرًا، يقوم بحساب عائد الاستثمار لكل رمز باستخدام عامل التشغيل $subtract
. يؤدي هذا إلى طرح buyValue
من sellValue
لتحديد الربح أو الخسارة لهذا الرمز.
الفرز حسب العودة: وأخيرًا، يقوم عامل $sort
بتنظيم النتائج. يقوم بفرز المستندات بناءً على حقل "returnOnInvestment" بترتيب تنازلي (-1). وهذا يعني أن الرموز ذات أعلى عائد على الاستثمار (الأكثر ربحية) ستظهر أولاً في الناتج النهائي.
وأخيرا، نبدأ تنفيذ مهمتنا. سيستخدم وكيل الباحث البيانات من تجميع MongoDB الخاص بنا، بالإضافة إلى أي أدوات أخرى تحت تصرفه، لتحليل البيانات وتقديم الأفكار.
Final Answer:
# Detailed Financial Report
## TLDR Summary
Based on the net gain data and recent news trends, all three stocks – Amazon (AMZN), SAP (SAP), and Apple (AAPL) – show promising prospects. Amazon and Apple are experiencing growth and their stocks are hitting new highs. SAP has recently acquired WalkMe, indicating potential future growth.
## Key Insights and Recommendations
### Amazon (AMZN)
- Net Gain: $72,769,230.71
- Recent News: Amazon is poised for its next decade of growth after delivering a return of around 1,000% over the last decade. Its stock price recently hit a new all-time high.
- Recommendation: With its stock hitting an all-time high and positive future growth outlook, Amazon presents a solid investment opportunity for long-term investors.
### SAP (SAP)
- Net Gain: $39,912,931.04
- Recent News: SAP recently announced an agreement to acquire WalkMe, a digital adoption platform, in an all-cash deal valued at about $1.5 billion. The acquisition is expected to close in the third quarter of 2024.
- Recommendation: The recent acquisition of WalkMe indicates potential for future growth. Investors should keep a close eye on SAP's performance post-acquisition.
### Apple (AAPL)
- Net Gain: $25,738,882.29
- Recent News: Apple's stock has risen substantially since releasing its fiscal Q2 earnings. It is predicted to still be undervalued based on its powerful free cash flow.
- Recommendation: Given the powerful free cash flow and the potential for an AI-driven growth cycle, Apple appears to be a good investment opportunity.
## Other Observations
While all three stocks show promising prospects, it's important for investors to consider their own risk tolerance and investment goals before making investment decisions. It's also important to keep an eye on the market trends and news, as they can greatly impact the stock prices.
## Conclusion
In conclusion, Amazon, SAP, and Apple present promising investment opportunities based on their recent news and net gain data. However, as with all investments, potential investors should conduct thorough research and consider their own investment goals and risk tolerance.
في حين أن الجمع بين إطار التجميع الخاص بـ MongoDB وGenAI يمثل أداة قوية لتحليل البيانات وتفسيرها، فمن المهم التعرف على بعض القيود المحتملة:
الاعتماد على البيانات التاريخية: قد لا يتنبأ الأداء السابق دائمًا بالنتائج المستقبلية، خاصة في الأسواق التي لا يمكن التنبؤ بها حيث يمكن أن تؤثر الأحداث غير المتوقعة بشكل كبير على نتائج الاستثمار.
عدم اليقين في التنبؤات: على الرغم من تعقيد التحليل، ستكون هناك دائمًا درجة متأصلة من عدم اليقين في التنبؤات الاستثمارية. النتائج المستقبلية غير معروفة بطبيعتها، والعوامل التي تتجاوز نطاق البيانات التاريخية يمكن أن تؤثر على النتائج.
قيود LLM: لا تزال LLM تتطور، وقدرتها على البحث وتفسير وتحليل البيانات تتحسن باستمرار. ومع ذلك، فإن التحيزات في بيانات التدريب أو القيود في بنية النموذج يمكن أن تؤدي إلى رؤى غير دقيقة أو مضللة.
ومن خلال إدراك هذه القيود واتخاذ الخطوات اللازمة للتخفيف منها، يمكنك ضمان اتباع نهج أكثر مسؤولية وشمولاً لتحليل الاستثمار.