From 172b98cd283b57ee8b306eaa229385e7acc69bd6 Mon Sep 17 00:00:00 2001 From: alexnicita Date: Tue, 13 Aug 2024 10:16:57 -0400 Subject: [PATCH] init: polymarket agents (2) --- README.md | 22 +++++++++++------- .../application}/creator.py | 8 +++---- {application => agents/application}/cron.py | 3 ++- .../application}/executor.py | 14 +++++------ .../application}/prompts.py | 13 +++++------ {application => agents/application}/trade.py | 6 ++--- {connectors => agents/connectors}/chroma.py | 6 ++--- {connectors => agents/connectors}/news.py | 2 +- {connectors => agents/connectors}/search.py | 0 {connectors => agents/polymarket}/gamma.py | 7 ++---- .../polymarket}/polymarket.py | 15 ++++++++---- {connectors => agents/utils}/objects.py | 4 ++-- {application => agents/utils}/utils.py | 0 connectors/recorder.py | 1 - EXAMPLE.md => docs/EXAMPLE.md | 0 docs/images/cli.png | Bin 0 -> 73367 bytes scripts/python/cli.py | 21 ++++++++++------- {test => tests}/test.py | 0 18 files changed, 63 insertions(+), 59 deletions(-) rename {application => agents/application}/creator.py (89%) rename {application => agents/application}/cron.py (91%) rename {application => agents/application}/executor.py (92%) rename {application => agents/application}/prompts.py (96%) rename {application => agents/application}/trade.py (92%) rename {connectors => agents/connectors}/chroma.py (97%) rename {connectors => agents/connectors}/news.py (98%) rename {connectors => agents/connectors}/search.py (100%) rename {connectors => agents/polymarket}/gamma.py (97%) rename {connectors => agents/polymarket}/polymarket.py (98%) rename {connectors => agents/utils}/objects.py (99%) rename {application => agents/utils}/utils.py (100%) delete mode 100644 connectors/recorder.py rename EXAMPLE.md => docs/EXAMPLE.md (100%) create mode 100644 docs/images/cli.png rename {test => tests}/test.py (100%) diff --git a/README.md b/README.md index 5193a0d..1dc9587 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,16 @@ This repo is inteded for use with Python 3.9 6. Load your wallet with USDC. -7. Trade! +7. Try the command line interface... ``` - python application/trade.py + python scripts/python/cli.py + ``` + + Or just go trade! + + ``` + python agents/application/trade.py ``` 8. Note: If running the command outside of docker, please set the following env var: @@ -89,18 +95,18 @@ This repo is inteded for use with Python 3.9 The Polymarket Agents architecture features modular components that can be maintained and extended by individual community members. -### Connectors +### APIs Polymarket Agents connectors standardize data sources and order types. -- `Polymarket.py`: defines a Polymarket class that interacts with the Polymarket API to retrieve and manage market and event data, and to execute orders on the Polymarket DEX. It includes methods for API key initialization, market and event data retrieval, and trade execution. The file also provides utility functions for building and signing orders, as well as examples for testing API interactions. - -- `Objects.py`: data models using Pydantic; representations for trades, markets, events, and related entities. - - `Chroma.py`: chroma DB for vectorizing news sources and other API data. Developers are able to add their own vector database implementations. - `Gamma.py`: defines `GammaMarketClient` class, which interfaces with the Polymarket Gamma API to fetch and parse market and event metadata. Methods to retrieve current and tradable markets, as well as defined information on specific markets and events. +- `Polymarket.py`: defines a Polymarket class that interacts with the Polymarket API to retrieve and manage market and event data, and to execute orders on the Polymarket DEX. It includes methods for API key initialization, market and event data retrieval, and trade execution. The file also provides utility functions for building and signing orders, as well as examples for testing API interactions. + +- `Objects.py`: data models using Pydantic; representations for trades, markets, events, and related entities. + ### Scripts Files for managing your local environment, server set-up to run the application remotely, and cli for end-user commands. @@ -164,4 +170,4 @@ Enjoy using the CLI application! If you encounter any issues, feel free to open # Terms of Service -[Terms of Service](https://polymarket.com/tos) prohibit US persons and persons from certain other jurisdictions from trading on Polymarket (via UI & API and including agents developed by persons in restricted jurisdictions), although data and information is viewable globally. \ No newline at end of file +[Terms of Service](https://polymarket.com/tos) prohibit US persons and persons from certain other jurisdictions from trading on Polymarket (via UI & API and including agents developed by persons in restricted jurisdictions), although data and information is viewable globally. diff --git a/application/creator.py b/agents/application/creator.py similarity index 89% rename from application/creator.py rename to agents/application/creator.py index 47839e6..ebef695 100644 --- a/application/creator.py +++ b/agents/application/creator.py @@ -1,8 +1,6 @@ -from application.executor import Executor as Agent -from connectors.gamma import GammaMarketClient as Gamma -from connectors.polymarket import Polymarket - -import time +from agents.application.executor import Executor as Agent +from agents.polymarket.gamma import GammaMarketClient as Gamma +from agents.polymarket.polymarket import Polymarket class Creator: diff --git a/application/cron.py b/agents/application/cron.py similarity index 91% rename from application/cron.py rename to agents/application/cron.py index e64b192..6620e95 100644 --- a/application/cron.py +++ b/agents/application/cron.py @@ -1,5 +1,6 @@ +from agents.application.trade import Trader + import time -from application.trade import Trader from scheduler import Scheduler from scheduler.trigger import Monday diff --git a/application/executor.py b/agents/application/executor.py similarity index 92% rename from application/executor.py rename to agents/application/executor.py index a821727..e6d1f75 100644 --- a/application/executor.py +++ b/agents/application/executor.py @@ -1,19 +1,17 @@ import os import json -import pdb import ast -import time import re from dotenv import load_dotenv from langchain_core.messages import HumanMessage, SystemMessage from langchain_openai import ChatOpenAI -from connectors.gamma import GammaMarketClient as Gamma -from connectors.chroma import PolymarketRAG as Chroma -from connectors.objects import SimpleEvent, SimpleMarket -from application.prompts import Prompter -from connectors.polymarket import Polymarket +from agents.polymarket.gamma import GammaMarketClient as Gamma +from agents.connectors.chroma import PolymarketRAG as Chroma +from agents.utils.objects import SimpleEvent, SimpleMarket +from agents.application.prompts import Prompter +from agents.polymarket.polymarket import Polymarket class Executor: @@ -40,7 +38,7 @@ def get_superforecast( self, event_title: str, market_question: str, outcome: str ) -> str: messages = self.prompter.superforecaster( - event_title=event_title, market_question=market_question, outcome=outcome + description=event_title, question=market_question, outcome=outcome ) result = self.llm.invoke(messages) return result.content diff --git a/application/prompts.py b/agents/application/prompts.py similarity index 96% rename from application/prompts.py rename to agents/application/prompts.py index a993ee1..6a98c4a 100644 --- a/application/prompts.py +++ b/agents/application/prompts.py @@ -22,7 +22,7 @@ def market_analyst(self) -> str: Assign a probability estimate to the event occurring described by the user """ - def sentiment_analyzer(question: str, outcome: str) -> float: + def sentiment_analyzer(self, question: str, outcome: str) -> float: return f""" You are a political scientist trained in media analysis. You are given a question: {question}. @@ -34,7 +34,7 @@ def sentiment_analyzer(question: str, outcome: str) -> float: """ def prompts_polymarket( - data1: str, data2: str, market_question: str, outcome: str + self, data1: str, data2: str, market_question: str, outcome: str ) -> str: current_market_data = str(data1) current_event_data = str(data2) @@ -52,7 +52,7 @@ def prompts_polymarket( I believe {market_question} has a likelihood {float} for outcome of {outcome}. """ - def prompts_polymarket(data1: str, data2: str, user_input: str) -> str: + def prompts_polymarket(self, data1: str, data2: str) -> str: current_market_data = str(data1) current_event_data = str(data2) return f""" @@ -63,13 +63,12 @@ def prompts_polymarket(data1: str, data2: str, user_input: str) -> str: current Polymarket events {current_event_data}. Help users identify markets to trade based on their interests or queries. Provide specific information for markets including probabilities of outcomes. - """ - def routing(system_message: str) -> str: - return f"""You are an expert at routing a user question to the appropriate data source. """ + def routing(self, system_message: str) -> str: + return f"""You are an expert at routing a user question to the appropriate data source. System message: ${system_message}""" - def multiquery(question: str) -> str: + def multiquery(self, question: str) -> str: return f""" You're an AI assistant. Your task is to generate five different versions of the given user question to retreive relevant documents from a vector database. By generating diff --git a/application/trade.py b/agents/application/trade.py similarity index 92% rename from application/trade.py rename to agents/application/trade.py index 0d1876d..b779d91 100644 --- a/application/trade.py +++ b/agents/application/trade.py @@ -1,6 +1,6 @@ -from application.executor import Executor as Agent -from connectors.gamma import GammaMarketClient as Gamma -from connectors.polymarket import Polymarket +from agents.application.executor import Executor as Agent +from agents.polymarket.gamma import GammaMarketClient as Gamma +from agents.polymarket.polymarket import Polymarket import shutil diff --git a/connectors/chroma.py b/agents/connectors/chroma.py similarity index 97% rename from connectors/chroma.py rename to agents/connectors/chroma.py index 905be1b..e34bff3 100644 --- a/connectors/chroma.py +++ b/agents/connectors/chroma.py @@ -1,15 +1,13 @@ import json import os import time -import pdb from langchain_openai import OpenAIEmbeddings from langchain_community.document_loaders import JSONLoader from langchain_community.vectorstores.chroma import Chroma -from connectors.gamma import GammaMarketClient -from connectors.objects import SimpleEvent -from connectors.objects import SimpleMarket +from agents.polymarket.gamma import GammaMarketClient +from agents.utils.objects import SimpleEvent, SimpleMarket class PolymarketRAG: diff --git a/connectors/news.py b/agents/connectors/news.py similarity index 98% rename from connectors/news.py rename to agents/connectors/news.py index e520549..9e8f076 100644 --- a/connectors/news.py +++ b/agents/connectors/news.py @@ -3,7 +3,7 @@ from newsapi import NewsApiClient -from connectors.objects import Article +from agents.utils.objects import Article class News: diff --git a/connectors/search.py b/agents/connectors/search.py similarity index 100% rename from connectors/search.py rename to agents/connectors/search.py diff --git a/connectors/gamma.py b/agents/polymarket/gamma.py similarity index 97% rename from connectors/gamma.py rename to agents/polymarket/gamma.py index d05785a..5958c60 100644 --- a/connectors/gamma.py +++ b/agents/polymarket/gamma.py @@ -1,11 +1,8 @@ import httpx import json -from connectors.objects import Market, PolymarketEvent -from connectors.objects import ClobReward -from connectors.objects import Tag - -from connectors.polymarket import Polymarket +from agents.polymarket.polymarket import Polymarket +from agents.utils.objects import Market, PolymarketEvent, ClobReward, Tag class GammaMarketClient: diff --git a/connectors/polymarket.py b/agents/polymarket/polymarket.py similarity index 98% rename from connectors/polymarket.py rename to agents/polymarket/polymarket.py index 34c1f47..3fe1237 100644 --- a/connectors/polymarket.py +++ b/agents/polymarket/polymarket.py @@ -28,7 +28,7 @@ ) from py_clob_client.order_builder.constants import BUY -from connectors.objects import SimpleMarket, SimpleEvent +from agents.utils.objects import SimpleMarket, SimpleEvent load_dotenv() @@ -194,14 +194,15 @@ def get_all_markets(self) -> "list[SimpleMarket]": try: market_data = self.map_api_to_market(market) markets.append(SimpleMarket(**market_data)) - except: + except Exception as e: + print(e) pass return markets def filter_markets_for_trading(self, markets: "list[SimpleMarket]"): tradeable_markets = [] for market in markets: - if market.active and market.deployed: + if market.active: tradeable_markets.append(market) return tradeable_markets @@ -238,21 +239,25 @@ def get_all_events(self) -> "list[SimpleEvent]": events = [] res = httpx.get(self.gamma_events_endpoint) if res.status_code == 200: + print(len(res.json())) for event in res.json(): try: + print(1) event_data = self.map_api_to_event(event) events.append(SimpleEvent(**event_data)) - except: + except Exception as e: + print(e) pass return events def map_api_to_event(self, event) -> SimpleEvent: + description = event["description"] if "description" in event.keys() else "" return { "id": int(event["id"]), "ticker": event["ticker"], "slug": event["slug"], "title": event["title"], - "description": event["description"], + "description": description, "active": event["active"], "closed": event["closed"], "archived": event["archived"], diff --git a/connectors/objects.py b/agents/utils/objects.py similarity index 99% rename from connectors/objects.py rename to agents/utils/objects.py index e5c71fe..863f56c 100644 --- a/connectors/objects.py +++ b/agents/utils/objects.py @@ -31,13 +31,13 @@ class SimpleMarket(BaseModel): end: str description: str active: bool - deployed: bool + # deployed: Optional[bool] funded: bool # orderMinSize: float # orderPriceMinTickSize: float rewardsMinSize: float rewardsMaxSpread: float - volume: float + # volume: Optional[float] spread: float outcomes: str outcome_prices: str diff --git a/application/utils.py b/agents/utils/utils.py similarity index 100% rename from application/utils.py rename to agents/utils/utils.py diff --git a/connectors/recorder.py b/connectors/recorder.py deleted file mode 100644 index 199cef7..0000000 --- a/connectors/recorder.py +++ /dev/null @@ -1 +0,0 @@ -# record the trades placed here diff --git a/EXAMPLE.md b/docs/EXAMPLE.md similarity index 100% rename from EXAMPLE.md rename to docs/EXAMPLE.md diff --git a/docs/images/cli.png b/docs/images/cli.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f30651d14abbd8b9b2487262a800d1d5d07a92 GIT binary patch literal 73367 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 None: +def get_all_markets(limit: int = 5, sort_by: str = "spread") -> None: """ Query Polymarket's markets """ print(f"limit: int = {limit}, sort_by: str = {sort_by}") markets = polymarket.get_all_markets() markets = polymarket.filter_markets_for_trading(markets) - if sort_by == "volume": - markets = sorted(markets, key=lambda x: x.volume, reverse=True) + if sort_by == "spread": + markets = sorted(markets, key=lambda x: x.spread, reverse=True) markets = markets[:limit] pprint(markets) @@ -78,6 +78,7 @@ def ask_superforecaster(event_title: str, market_question: str, outcome: str) -> print( f"event: str = {event_title}, question: str = {market_question}, outcome (usually yes or no): str = {outcome}" ) + executor = Executor() response = executor.get_superforecast( event_title=event_title, market_question=market_question, outcome=outcome ) @@ -99,6 +100,7 @@ def ask_llm(user_input: str) -> None: """ Ask a question to the LLM and get a response. """ + executor = Executor() response = executor.get_llm_response(user_input) print(f"LLM Response: {response}") @@ -108,6 +110,7 @@ def ask_polymarket_llm(user_input: str) -> None: """ What types of markets do you want trade? """ + executor = Executor() response = executor.get_polymarket_llm(user_input=user_input) print(f"LLM + current markets&events response: {response}") diff --git a/test/test.py b/tests/test.py similarity index 100% rename from test/test.py rename to tests/test.py