{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "d916233e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: google-generativeai in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (0.8.6)\n", "Requirement already satisfied: google-ai-generativelanguage==0.6.15 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (0.6.15)\n", "Requirement already satisfied: google-api-core in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (2.32.0)\n", "Requirement already satisfied: google-api-python-client in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (2.198.0)\n", "Requirement already satisfied: google-auth>=2.15.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (2.55.0)\n", "Requirement already satisfied: protobuf in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (5.29.6)\n", "Requirement already satisfied: pydantic in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (2.13.4)\n", "Requirement already satisfied: tqdm in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (4.67.3)\n", "Requirement already satisfied: typing-extensions in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-generativeai) (4.15.0)\n", "Requirement already satisfied: proto-plus<2.0.0dev,>=1.22.3 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-ai-generativelanguage==0.6.15->google-generativeai) (1.28.1)\n", "Requirement already satisfied: googleapis-common-protos<2.0.0,>=1.63.2 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-core->google-generativeai) (1.74.0)\n", "Requirement already satisfied: requests<3.0.0,>=2.33.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-core->google-generativeai) (2.33.1)\n", "Requirement already satisfied: grpcio<2.0.0,>=1.41.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0dev,>=1.34.1->google-ai-generativelanguage==0.6.15->google-generativeai) (1.80.0)\n", "Requirement already satisfied: grpcio-status<2.0.0,>=1.41.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0dev,>=1.34.1->google-ai-generativelanguage==0.6.15->google-generativeai) (1.71.2)\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-auth>=2.15.0->google-generativeai) (0.4.2)\n", "Requirement already satisfied: cryptography>=38.0.3 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-auth>=2.15.0->google-generativeai) (49.0.0)\n", "Requirement already satisfied: charset_normalizer<4,>=2 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from requests<3.0.0,>=2.33.0->google-api-core->google-generativeai) (3.4.7)\n", "Requirement already satisfied: idna<4,>=2.5 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from requests<3.0.0,>=2.33.0->google-api-core->google-generativeai) (3.18)\n", "Requirement already satisfied: urllib3<3,>=1.26 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from requests<3.0.0,>=2.33.0->google-api-core->google-generativeai) (2.6.3)\n", "Requirement already satisfied: certifi>=2023.5.7 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from requests<3.0.0,>=2.33.0->google-api-core->google-generativeai) (2026.5.20)\n", "Requirement already satisfied: cffi>=2.0.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from cryptography>=38.0.3->google-auth>=2.15.0->google-generativeai) (2.0.0)\n", "Requirement already satisfied: pycparser in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from cffi>=2.0.0->cryptography>=38.0.3->google-auth>=2.15.0->google-generativeai) (3.0)\n", "Requirement already satisfied: pyasn1<0.7.0,>=0.6.1 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from pyasn1-modules>=0.2.1->google-auth>=2.15.0->google-generativeai) (0.6.3)\n", "Requirement already satisfied: httplib2<1.0.0,>=0.19.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-python-client->google-generativeai) (0.32.0)\n", "Requirement already satisfied: google-auth-httplib2<1.0.0,>=0.2.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-python-client->google-generativeai) (0.4.0)\n", "Requirement already satisfied: uritemplate<5,>=3.0.1 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from google-api-python-client->google-generativeai) (4.2.0)\n", "Requirement already satisfied: pyparsing<4,>=3.1 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from httplib2<1.0.0,>=0.19.0->google-api-python-client->google-generativeai) (3.3.2)\n", "Requirement already satisfied: annotated-types>=0.6.0 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from pydantic->google-generativeai) (0.7.0)\n", "Requirement already satisfied: pydantic-core==2.46.4 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from pydantic->google-generativeai) (2.46.4)\n", "Requirement already satisfied: typing-inspection>=0.4.2 in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from pydantic->google-generativeai) (0.4.2)\n", "Requirement already satisfied: colorama in c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages (from tqdm->google-generativeai) (0.4.6)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n", "[notice] A new release of pip is available: 26.1 -> 26.1.2\n", "[notice] To update, run: python.exe -m pip install --upgrade pip\n" ] } ], "source": [ "pip install google-generativeai" ] }, { "cell_type": "code", "execution_count": 2, "id": "09e33267", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\Mohan Raj P\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "C:\\Users\\Mohan Raj P\\AppData\\Local\\Temp\\ipykernel_36672\\3393063020.py:1: FutureWarning: \n", "\n", "All support for the `google.generativeai` package has ended. It will no longer be receiving \n", "updates or bug fixes. Please switch to the `google.genai` package as soon as possible.\n", "See README for more details:\n", "\n", "https://github.com/google-gemini/deprecated-generative-ai-python/blob/main/README.md\n", "\n", " import google.generativeai as googlegenai\n" ] } ], "source": [ "import google.generativeai as googlegenai" ] }, { "cell_type": "code", "execution_count": 3, "id": "017808e6", "metadata": {}, "outputs": [], "source": [ "import os \n" ] }, { "cell_type": "code", "execution_count": 4, "id": "545b689c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dotenv import load_dotenv\n", "load_dotenv(override=True)" ] }, { "cell_type": "code", "execution_count": 5, "id": "ccd6a993", "metadata": {}, "outputs": [], "source": [ "os.getenv(\".env\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "41b3d82d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dotenv import load_dotenv\n", "import json\n", "from contextlib import AsyncExitStack\n", "from agents import Runner, trace, add_trace_processor\n", "from IPython.display import Markdown, display\n", "from backend.market import get_share_price\n", "from backend.accounts import Account\n", "from backend.accounts_client import read_accounts_resource\n", "from backend.reset import reset_traders\n", "from backend.mcp_servers import trader_mcp_servers, researcher_mcp_servers\n", "from backend.traders import get_researcher, get_researcher_tool, Trader\n", "from backend.tracers import LogTracer\n", "\n", "load_dotenv(override=True)" ] }, { "cell_type": "code", "execution_count": 7, "id": "0bae9254", "metadata": {}, "outputs": [], "source": [ "import functools\n", "import subprocess\n", "import agents.mcp.server\n", "\n", "agents.mcp.server.stdio_client = functools.partial(agents.mcp.server.stdio_client, errlog=subprocess.DEVNULL)" ] }, { "cell_type": "code", "execution_count": 8, "id": "324fc692", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Massive API unavailable (No Massive price available for BMW); using a simulated price\n" ] }, { "data": { "text/plain": [ "206.7" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_share_price(\"BMW\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "f461510b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balance: 9120.4444\n", "Strategy: \n" ] } ], "source": [ "warren = Account.get(\"MOHAN\")\n", "print(\"Balance:\", warren.balance)\n", "print(\"Strategy:\", warren.get_strategy())" ] }, { "cell_type": "code", "execution_count": 10, "id": "94eb7abc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "We have 6 MCP servers, and 17 tools\n" ] } ], "source": [ "servers = trader_mcp_servers() + researcher_mcp_servers(\"MOHAN\")\n", "count = 0\n", "for server in servers:\n", " async with server:\n", " tools = await server.list_tools()\n", " count += len(tools)\n", "print(f\"We have {len(servers)} MCP servers, and {count} tools\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "27e44804", "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "Here's a summary of the latest news on Amazon from the past week:\n", "\n", "Amazon is making significant strides in AI, with the introduction of \"Evry\" smart delivery glasses that act as a wearable AI assistant for delivery drivers. They also launched Claude Sonnet 5 on Amazon Bedrock and continue to develop their Zoox robotaxi.\n", "\n", "However, despite these investments, Amazon has also confirmed a new round of layoffs within its Artificial General Intelligence (AGI) organization. This is part of an ongoing restructuring effort to sharpen its focus on key initiatives, though the exact number of affected employees is unspecified by Amazon, some reports suggest around 16,000 job cuts." ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "async with AsyncExitStack() as stack:\n", " servers = [await stack.enter_async_context(server) for server in researcher_mcp_servers(\"MOHAN\")]\n", " researcher = await get_researcher(servers, \"gemini-2.5-flash\")\n", " with trace(\"Researcher\"):\n", " result = await Runner.run(researcher, \"What's the latest news on Amazon?\", max_turns=30)\n", "display(Markdown(result.final_output))" ] }, { "cell_type": "code", "execution_count": 12, "id": "affbd14d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tool name: Researcher\n", "Description: This tool researches online for news and opportunities, either based on your specific request to look into a certain stock, or generally for notable financial news and opportunities. Describe what kind of research you're looking for.\n" ] } ], "source": [ "researcher_tool = await get_researcher_tool(researcher_mcp_servers(\"MOHAN\"), \"gpt-4o-mini\")\n", "print(\"Tool name:\", researcher_tool.name)\n", "print(\"Description:\", researcher_tool.description)" ] }, { "cell_type": "code", "execution_count": 13, "id": "a4442026", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Error getting response: Error code: 429 - {'error': {'message': 'Request too large for gpt-5.4-mini in organization org-wTLboYmqHSfUYGVeYoWbGz2r on tokens per min (TPM): Limit 200000, Requested 217983. The input or output tokens must be reduced in order to run successfully. Visit https://platform.openai.com/account/rate-limits to learn more.', 'type': 'tokens', 'param': None, 'code': 'rate_limit_exceeded'}}. (request_id: 828810ac-d22e-43fa-ba7b-319a46bf4dcc)\n" ] } ], "source": [ "add_trace_processor(LogTracer())\n", "warren = Trader(\"MOHAN\", \"Patience\", \"gpt-5.4-mini\")\n", "await warren.run()" ] }, { "cell_type": "code", "execution_count": 14, "id": "2c7140bb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'symbol': 'MTUM', 'quantity': 10, 'price': 228.92694, 'timestamp': '2026-07-25 15:37:28', 'rationale': 'Core momentum exposure with diversification and liquidity; fits risk-controlled growth strategy and preserves cash buffer while expressing broad market trend.'}\n" ] } ], "source": [ "resource = await read_accounts_resource(\"warren\")\n", "info = json.loads(resource)\n", "print(info[\"transactions\"][-1] if info[\"transactions\"] else \"No transactions found\")" ] }, { "cell_type": "code", "execution_count": null, "id": "1c344aa9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "6970a289", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "768048a3", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.13" } }, "nbformat": 4, "nbformat_minor": 5 }