diff --git a/docs/index.md b/docs/index.md index d51952ac..2c98868c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,7 @@ In order to run a local demo service based on the IEKit: 2. Fetch the IEKit. ```bash - autonomy fetch valory/impact_evaluator:0.1.0:bafybeib2vgoo73qr46y3isldlg5kwjjlbuv75bbqvu2m32gty6d6r73uoa --service + autonomy fetch valory/impact_evaluator:0.1.0:bafybeihbdws7fzicgmbvvrnwbaeuznqve7n7njt3nmcmznrynlcr7y5whq --service ``` 3. Build the Docker image of the service agents @@ -95,7 +95,7 @@ In order to run a local demo service based on the IEKit: TWITTER_SEARCH_ARGS=query=%23OlasNetwork&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=100&since_id={since_id} MAX_POINTS_PER_PERIOD=5000 USE_ACN=false - TWITTER_TWEETS_ARGS=tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=10&start_time={start_time} + TWITTER_TWEETS_ARGS=tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=10&start_time={start_time} DEFAULT_CHAIN_ID=gnosis USE_TWITTER_STAGING_API=true TWITTER_API_BASE=https://api.twitter.com/ diff --git a/packages/packages.json b/packages/packages.json index 86ba7f39..23bbd1ee 100644 --- a/packages/packages.json +++ b/packages/packages.json @@ -15,23 +15,23 @@ "connection/valory/openai/0.1.0": "bafybeifz2n6s6u3zvvryhhxpkvn6guyp2jwpagtyjducvgwoldtmz7ea64", "connection/valory/farcaster/0.1.0": "bafybeibbdas7lxbipksodaphjms3uop7vnzjqkroktjq2g6wbvgtlldaxi", "skill/valory/dynamic_nft_abci/0.1.0": "bafybeic7w6vqpt6rqlw6t7opzm3px2gwb6doo2a6etyyqueez24mbrcqqy", - "skill/valory/twitter_scoring_abci/0.1.0": "bafybeigmwav5wgz27f4tzt7ilgw7ehow52lu4amu3jxqhwienbxif2medm", + "skill/valory/twitter_scoring_abci/0.1.0": "bafybeier6oydc5saiyt2e47moz3n54degmlq2ekcifeagc4ggfcj6aemna", "skill/valory/ceramic_read_abci/0.1.0": "bafybeigz7rzfls3niv3urfb4z4vwr525ooxveelgg3djpvkg5jzetxlm2u", "skill/valory/ceramic_write_abci/0.1.0": "bafybeic6c3iub3nsr5tmr7g5vzoixbin6w64ewudfiq6u4r2fiqwbg753i", - "skill/valory/impact_evaluator_abci/0.1.0": "bafybeihnuxvhridnqhkw2itkz5xu5teke3qcafx4ubble4wz5kxrlaoti4", + "skill/valory/impact_evaluator_abci/0.1.0": "bafybeiblxwctj3dzgpn5ev6jpfcm73cdrwhjxetl35sjsyy5hpecbcmozi", "skill/valory/generic_scoring_abci/0.1.0": "bafybeiffup7abnyqjinsakjawzwr6t6pp32joiuoz4gara7jm7tlfo725q", "skill/valory/twitter_write_abci/0.1.0": "bafybeibp7zai2qwvfjd5fgpayx44x5c2zshbukpobvz2la7ws2l5f5fjde", "skill/valory/llm_abci/0.1.0": "bafybeib2k62hilwglfad33bzxkjlviw5bxwiw7z3rjvweyeamatdjznpeq", "skill/valory/decision_making_abci/0.1.0": "bafybeidj3owli2etpxxfgpfevqis7mtlxmnujsrfqw3pwfq6zvfc5rhfy4", - "skill/valory/olas_week_abci/0.1.0": "bafybeigtfaejaspebcdaeyrhhstkeowxysx7fwdhuli3rnj273qzzxl3by", + "skill/valory/olas_week_abci/0.1.0": "bafybeihtfb7c6m5ncznftfiww62pjwi3w2mkpzbjdwry5mf5msh5szzjt4", "skill/valory/mech_interact_abci/0.1.0": "bafybeibzhywzwowfmebf4o2bppyjupdpjkdsawceetam4ac3lmh5yp22xy", "skill/valory/farcaster_write_abci/0.1.0": "bafybeigx2wyujnojer7er7g2eufm5lojon2dckotvsgwb6tn5iyiwdfgsu", "skill/valory/farcaster_test_abci/0.1.0": "bafybeihd3h37ngkxlqo6o3vuvdik54bwmbrjmqcxtgsr5is3tqgbk73yoa", "skill/valory/staking_abci/0.1.0": "bafybeieutg3epfnqtaucw6rpkq7vzzt5pkziqt4zlpjmispz2gqzth45ay", - "agent/valory/impact_evaluator/0.1.0": "bafybeicechifb5xod7lbadhjamirl25d6iwo2c6vhvd4b24e3p2scukjqa", + "agent/valory/impact_evaluator/0.1.0": "bafybeicno3rvvk6racd3ounebvhh5vcghbnbgjkdqqdj633nuwarkchfou", "agent/valory/farcaster_test/0.1.0": "bafybeiefui6dnhhy5leqyvfrbkeleb64gap5tzctkrzzggjf4ubbxamjvy", - "service/valory/impact_evaluator/0.1.0": "bafybeib2vgoo73qr46y3isldlg5kwjjlbuv75bbqvu2m32gty6d6r73uoa", - "service/valory/impact_evaluator_local/0.1.0": "bafybeiaan42jpcp356p7hnrs6ccfwezzv4qlgqow6xjwgu7thwpavm6ium" + "service/valory/impact_evaluator/0.1.0": "bafybeihbdws7fzicgmbvvrnwbaeuznqve7n7njt3nmcmznrynlcr7y5whq", + "service/valory/impact_evaluator_local/0.1.0": "bafybeidnu46oftf25amc54lc4glx27pih62xq5xc4xii66ga62njli74fa" }, "third_party": { "protocol/open_aea/signing/1.0.0": "bafybeihv62fim3wl2bayavfcg3u5e5cxu3b7brtu4cn5xoxd6lqwachasi", diff --git a/packages/valory/agents/impact_evaluator/aea-config.yaml b/packages/valory/agents/impact_evaluator/aea-config.yaml index 023d8754..e208a3fb 100644 --- a/packages/valory/agents/impact_evaluator/aea-config.yaml +++ b/packages/valory/agents/impact_evaluator/aea-config.yaml @@ -45,9 +45,9 @@ protocols: skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu - valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/impact_evaluator_abci:0.1.0:bafybeihnuxvhridnqhkw2itkz5xu5teke3qcafx4ubble4wz5kxrlaoti4 +- valory/impact_evaluator_abci:0.1.0:bafybeiblxwctj3dzgpn5ev6jpfcm73cdrwhjxetl35sjsyy5hpecbcmozi - valory/generic_scoring_abci:0.1.0:bafybeiffup7abnyqjinsakjawzwr6t6pp32joiuoz4gara7jm7tlfo725q -- valory/twitter_scoring_abci:0.1.0:bafybeigmwav5wgz27f4tzt7ilgw7ehow52lu4amu3jxqhwienbxif2medm +- valory/twitter_scoring_abci:0.1.0:bafybeier6oydc5saiyt2e47moz3n54degmlq2ekcifeagc4ggfcj6aemna - valory/ceramic_read_abci:0.1.0:bafybeigz7rzfls3niv3urfb4z4vwr525ooxveelgg3djpvkg5jzetxlm2u - valory/ceramic_write_abci:0.1.0:bafybeic6c3iub3nsr5tmr7g5vzoixbin6w64ewudfiq6u4r2fiqwbg753i - valory/dynamic_nft_abci:0.1.0:bafybeic7w6vqpt6rqlw6t7opzm3px2gwb6doo2a6etyyqueez24mbrcqqy @@ -58,7 +58,7 @@ skills: - valory/twitter_write_abci:0.1.0:bafybeibp7zai2qwvfjd5fgpayx44x5c2zshbukpobvz2la7ws2l5f5fjde - valory/decision_making_abci:0.1.0:bafybeidj3owli2etpxxfgpfevqis7mtlxmnujsrfqw3pwfq6zvfc5rhfy4 - valory/llm_abci:0.1.0:bafybeib2k62hilwglfad33bzxkjlviw5bxwiw7z3rjvweyeamatdjznpeq -- valory/olas_week_abci:0.1.0:bafybeigtfaejaspebcdaeyrhhstkeowxysx7fwdhuli3rnj273qzzxl3by +- valory/olas_week_abci:0.1.0:bafybeihtfb7c6m5ncznftfiww62pjwi3w2mkpzbjdwry5mf5msh5szzjt4 - valory/mech_interact_abci:0.1.0:bafybeibzhywzwowfmebf4o2bppyjupdpjkdsawceetam4ac3lmh5yp22xy - valory/staking_abci:0.1.0:bafybeieutg3epfnqtaucw6rpkq7vzzt5pkziqt4zlpjmispz2gqzth45ay default_ledger: ethereum @@ -252,13 +252,13 @@ models: twitter_api_base: ${str:https://api.twitter.com/} twitter_api_bearer_token: ${str:} twitter_mentions_endpoint: ${str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}} + twitter_mentions_args: ${str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}} twitter_max_pages: ${int:1} max_tweet_pulls_allowed: ${int:80} twitter_search_endpoint: ${str:2/tweets/search/recent?} - twitter_search_args: ${str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}} + twitter_search_args: ${str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id}} twitter_tweets_endpoint: ${str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} openai_call_window_size: ${float:3600.0} openai_calls_allowed_in_window: ${int:100} tx_timeout: 10.0 diff --git a/packages/valory/services/impact_evaluator/service.yaml b/packages/valory/services/impact_evaluator/service.yaml index 66b88947..2a9d8ad5 100644 --- a/packages/valory/services/impact_evaluator/service.yaml +++ b/packages/valory/services/impact_evaluator/service.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 fingerprint: README.md: bafybeign56hilwuoa6bgos3uqabss4gew4vadkik7vhj3ucpqw6nxtqtpe fingerprint_ignore_patterns: [] -agent: valory/impact_evaluator:0.1.0:bafybeicechifb5xod7lbadhjamirl25d6iwo2c6vhvd4b24e3p2scukjqa +agent: valory/impact_evaluator:0.1.0:bafybeicno3rvvk6racd3ounebvhh5vcghbnbgjkdqqdj633nuwarkchfou number_of_agents: 4 deployment: agent: @@ -101,13 +101,13 @@ extra: twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/} twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null} twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_max_pages: ${TWITTER_MAX_PAGES:int:1} max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80} twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?} - twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_tweets_endpoint: ${TWITTER_TWEETS_ENDPOINT:str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} tx_timeout: 10.0 use_termination: ${USE_TERMINATION:bool:true} validate_timeout: 1205 @@ -197,13 +197,13 @@ extra: twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/} twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null} twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_max_pages: ${TWITTER_MAX_PAGES:int:1} max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80} twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?} - twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_tweets_endpoint: ${TWITTER_TWEETS_ENDPOINT:str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} tx_timeout: 10.0 use_termination: ${USE_TERMINATION:bool:true} validate_timeout: 1205 @@ -293,13 +293,13 @@ extra: twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/} twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null} twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_max_pages: ${TWITTER_MAX_PAGES:int:1} max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80} twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?} - twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_tweets_endpoint: ${TWITTER_TWEETS_ENDPOINT:str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} tx_timeout: 10.0 use_termination: ${USE_TERMINATION:bool:true} validate_timeout: 1205 @@ -391,13 +391,13 @@ extra: twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/} twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null} twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_max_pages: ${TWITTER_MAX_PAGES:int:1} max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80} twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?} - twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_tweets_endpoint: ${TWITTER_TWEETS_ENDPOINT:str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} tx_timeout: 10.0 use_termination: ${USE_TERMINATION:bool:true} validate_timeout: 1205 diff --git a/packages/valory/services/impact_evaluator_local/service.yaml b/packages/valory/services/impact_evaluator_local/service.yaml index 0428c489..aa57cef7 100644 --- a/packages/valory/services/impact_evaluator_local/service.yaml +++ b/packages/valory/services/impact_evaluator_local/service.yaml @@ -8,7 +8,7 @@ license: Apache-2.0 fingerprint: README.md: bafybeign56hilwuoa6bgos3uqabss4gew4vadkik7vhj3ucpqw6nxtqtpe fingerprint_ignore_patterns: [] -agent: valory/impact_evaluator:0.1.0:bafybeicechifb5xod7lbadhjamirl25d6iwo2c6vhvd4b24e3p2scukjqa +agent: valory/impact_evaluator:0.1.0:bafybeicno3rvvk6racd3ounebvhh5vcghbnbgjkdqqdj633nuwarkchfou number_of_agents: 1 deployment: agent: @@ -100,13 +100,13 @@ models: twitter_api_base: ${TWITTER_API_BASE:str:https://api.twitter.com/} twitter_api_bearer_token: ${TWITTER_API_BEARER_TOKEN:str:null} twitter_mentions_endpoint: ${TWITTER_MENTIONS_ENDPOINT:str:2/users/1450081635559428107/mentions?} - twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_mentions_args: ${TWITTER_MENTIONS_ARGS:str:tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_max_pages: ${TWITTER_MAX_PAGES:int:1} max_tweet_pulls_allowed: ${MAX_TWEET_PULLS_ALLOWED:int:80} twitter_search_endpoint: ${TWITTER_SEARCH_ENDPOINT:str:2/tweets/search/recent?} - twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} + twitter_search_args: ${TWITTER_SEARCH_ARGS:str:query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=25&since_id={since_id}} twitter_tweets_endpoint: ${TWITTER_TWEETS_ENDPOINT:str:2/users/1450081635559428107/tweets?} - twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} + twitter_tweets_args: ${TWITTER_TWEETS_ARGS:str:tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}} tx_timeout: 10.0 use_termination: ${USE_TERMINATION:bool:true} validate_timeout: 1205 diff --git a/packages/valory/skills/impact_evaluator_abci/skill.yaml b/packages/valory/skills/impact_evaluator_abci/skill.yaml index 6749fd89..076f01a3 100644 --- a/packages/valory/skills/impact_evaluator_abci/skill.yaml +++ b/packages/valory/skills/impact_evaluator_abci/skill.yaml @@ -26,7 +26,7 @@ skills: - valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti - valory/ceramic_read_abci:0.1.0:bafybeigz7rzfls3niv3urfb4z4vwr525ooxveelgg3djpvkg5jzetxlm2u - valory/generic_scoring_abci:0.1.0:bafybeiffup7abnyqjinsakjawzwr6t6pp32joiuoz4gara7jm7tlfo725q -- valory/twitter_scoring_abci:0.1.0:bafybeigmwav5wgz27f4tzt7ilgw7ehow52lu4amu3jxqhwienbxif2medm +- valory/twitter_scoring_abci:0.1.0:bafybeier6oydc5saiyt2e47moz3n54degmlq2ekcifeagc4ggfcj6aemna - valory/ceramic_write_abci:0.1.0:bafybeic6c3iub3nsr5tmr7g5vzoixbin6w64ewudfiq6u4r2fiqwbg753i - valory/dynamic_nft_abci:0.1.0:bafybeic7w6vqpt6rqlw6t7opzm3px2gwb6doo2a6etyyqueez24mbrcqqy - valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq @@ -36,7 +36,7 @@ skills: - valory/decision_making_abci:0.1.0:bafybeidj3owli2etpxxfgpfevqis7mtlxmnujsrfqw3pwfq6zvfc5rhfy4 - valory/llm_abci:0.1.0:bafybeib2k62hilwglfad33bzxkjlviw5bxwiw7z3rjvweyeamatdjznpeq - valory/twitter_write_abci:0.1.0:bafybeibp7zai2qwvfjd5fgpayx44x5c2zshbukpobvz2la7ws2l5f5fjde -- valory/olas_week_abci:0.1.0:bafybeigtfaejaspebcdaeyrhhstkeowxysx7fwdhuli3rnj273qzzxl3by +- valory/olas_week_abci:0.1.0:bafybeihtfb7c6m5ncznftfiww62pjwi3w2mkpzbjdwry5mf5msh5szzjt4 - valory/mech_interact_abci:0.1.0:bafybeibzhywzwowfmebf4o2bppyjupdpjkdsawceetam4ac3lmh5yp22xy - valory/staking_abci:0.1.0:bafybeieutg3epfnqtaucw6rpkq7vzzt5pkziqt4zlpjmispz2gqzth45ay behaviours: @@ -167,13 +167,13 @@ models: twitter_api_base: https://api.twitter.com/ twitter_api_bearer_token: twitter_mentions_endpoint: 2/users/1450081635559428107/mentions? - twitter_mentions_args: tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} + twitter_mentions_args: tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} twitter_max_pages: 1 max_tweet_pulls_allowed: 80 twitter_search_endpoint: 2/tweets/search/recent? - twitter_search_args: query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} + twitter_search_args: query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} twitter_tweets_endpoint: 2/users/1450081635559428107/tweets? - twitter_tweets_args: tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time} + twitter_tweets_args: tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time} openai_call_window_size: 3600.0 openai_calls_allowed_in_window: 100 max_points_per_period: 5000 diff --git a/packages/valory/skills/olas_week_abci/skill.yaml b/packages/valory/skills/olas_week_abci/skill.yaml index 73a2f90a..b23d28f1 100644 --- a/packages/valory/skills/olas_week_abci/skill.yaml +++ b/packages/valory/skills/olas_week_abci/skill.yaml @@ -17,7 +17,7 @@ fingerprint: prompts.py: bafybeiaod4e6knvmjl6jjqnlpcushy6iab4sfax2tevskxuirfu36afeta rounds.py: bafybeiffkf7c6lriymvheyxufyiwaaswkpxjjxpgvc25jrpglenc2rhje4 tests/__init__.py: bafybeidq5udnnehzozdjfpk3kdckymq4jvuwmvsjkhpr3ngggc3dhv4uza - tests/test_behaviours.py: bafybeieegivytj63vqrqarwop6bg46z4r4jlm5xg3byfow6lwyquga4o5m + tests/test_behaviours.py: bafybeiggerp25yg72unmg5jfs3umyz4if5sxq7urvfi6jqw6a5qjnb75ky tests/test_dialogues.py: bafybeidogs4455nqgl54wj6ed6zh6jzmsg4aaavpibeqexs5fx3um57e7a tests/test_handlers.py: bafybeiggkevxvq52fotuwg265xrqfqmfoe3jjamvxdldxlnonu77ctioua tests/test_models.py: bafybeigtk3gexs7ukeeojbkcawkouuq3mav56f5oi5wbt7q3yzd6do6buq @@ -134,7 +134,7 @@ models: twitter_api_base: https://api.twitter.com/ twitter_api_bearer_token: twitter_tweets_endpoint: 2/users/1450081635559428107/tweets? - twitter_tweets_args: tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time} + twitter_tweets_args: tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time} twitter_max_pages: 1 max_tweet_pulls_allowed: 80 openai_call_window_size: 3600.0 diff --git a/packages/valory/skills/olas_week_abci/tests/test_behaviours.py b/packages/valory/skills/olas_week_abci/tests/test_behaviours.py index 42dc7dda..5c201153 100644 --- a/packages/valory/skills/olas_week_abci/tests/test_behaviours.py +++ b/packages/valory/skills/olas_week_abci/tests/test_behaviours.py @@ -65,7 +65,7 @@ PACKAGE_DIR = Path(__file__).parent.parent -TWEETS_URL = "https://api.twitter.com/2/users/1450081635559428107/tweets?tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}" +TWEETS_URL = "https://api.twitter.com/2/users/1450081635559428107/tweets?tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=50&start_time={start_time}" DUMMY_TWEETS_RESPONSE = { diff --git a/packages/valory/skills/twitter_scoring_abci/behaviours.py b/packages/valory/skills/twitter_scoring_abci/behaviours.py index ff758390..50652ff0 100644 --- a/packages/valory/skills/twitter_scoring_abci/behaviours.py +++ b/packages/valory/skills/twitter_scoring_abci/behaviours.py @@ -77,13 +77,22 @@ TAGLINE = "I'm linking my wallet to @Autonolas Contribute:" DEFAULT_TWEET_POINTS = 100 TWEET_QUALITY_TO_POINTS = {"LOW": 1, "AVERAGE": 2, "HIGH": 3} -TWEET_RELATIONSHIP_TO_POINTS = {"LOW": 100, "AVERAGE": 200, "HIGH": 300} +TWEET_RELATIONSHIP_TO_POINTS = {"LOW": 1, "AVERAGE": 2, "HIGH": 3} HTTP_OK = 200 HTTP_TOO_MANY_REQUESTS = 429 RETWEET_START = "RT @" BASE_CHAIN_ID = "base" +def get_engagement(impressions: int) -> int: + """Engagement calculation""" + if impressions < 1e3: + return 1 + if impressions < 1e4: + return 2 + return 3 + + def extract_headers(header_str: str) -> dict: """Extracts HTTP headers""" header_separator = "\r\n" if "\r\n" in header_str else "\n" @@ -995,8 +1004,14 @@ def async_act(self) -> Generator: for response in self.synchronized_data.mech_responses: # The request has been responded if response.nonce in tweets and response.result: + engagement = get_engagement( + tweets[response.nonce] + .get("public_metrics", {}) + .get("impression_count", 0) + ) + self.context.logger.info( - f"Received tweet evaluation response: {response.nonce} {response.result}" + f"Received tweet evaluation response: {response.nonce} {response.result}.\nTweet engagement is {engagement}." ) responses_to_remove.append(response.nonce) @@ -1014,9 +1029,10 @@ def async_act(self) -> Generator: "Evaluation data is not valid: key not valid" ) else: - points = ( + points = 100 * ( TWEET_QUALITY_TO_POINTS[quality] - * TWEET_RELATIONSHIP_TO_POINTS[relationship] + + TWEET_RELATIONSHIP_TO_POINTS[relationship] + + engagement ) except Exception as e: self.context.logger.error( diff --git a/packages/valory/skills/twitter_scoring_abci/prompts.py b/packages/valory/skills/twitter_scoring_abci/prompts.py index a1fe7955..a36b8a58 100644 --- a/packages/valory/skills/twitter_scoring_abci/prompts.py +++ b/packages/valory/skills/twitter_scoring_abci/prompts.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2023 Valory AG +# Copyright 2023-2024 Valory AG # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,54 +20,25 @@ """This package contains LLM prompts for TwitterScoringAbciApp.""" tweet_evaluation_prompt = """ -You are an AI text evaluator that needs to assess the quality of different texts sent by your users. These users will write about Autonolas, a web3 protocol focused on building decentralized autonomous services. Your task is to evaluate whether the text sent by the users is related to Autonolas and to which degree, as well as the quality of writing. You will be given a text about Autonolas as well as the user text. +You are an AI text evaluator that needs to assess the quality of different texts sent by your users. +These users will write about Olas (aka Autonolas), a web3 protocol focused on building decentralized autonomous services and agent economies. +Your task is to evaluate whether the text sent by the users is related to Olas and to which degree, as well as the quality of writing. +You will be given a text about Olas as well as the user text. + +For reference, here are some topics related to Olas: +* Blockchain +* Web3 +* AI agents +* Co-own AI +* Agent economies GOALS: -1. Determine the degree of relationship between the user text and the Autonolas text +1. Determine the degree of relationship between the user text and the Olas text 2. Determine the quality of the user writing For the given goals, only respond with the LOW, AVERAGE or HIGH tags. -Autonolas text: - -Technical Architecture: -Autonolas autonomous software services are embodied as agent services, which are groups of independent computer programs that interact with each other to achieve a predetermined goal. They can be understood as logically centralized applications (with only one application state and logic) that are replicated in a distributed system. Agent services are made of code components that can be combined like Lego bricks through software composition. This is enabled and incentivized by the on-chain protocol, which facilitates developers publishing and finding code components to build and extend new services. The on-chain protocol implements registries that enable code components, agents, and services to be found, reused, and economically compensated. - -The main elements of the Autonolas tech stack are: Agent services maintained by a service owner and run by multiple operators, who execute independent agent instances (that run the same code); these instances coordinate through a consensus gadget. Composable autonomous apps built out of basic applications that are easily extendable and composable into higher-order applications. An on-chain protocol on a programmable blockchain that secures agent services and incentivizes developers to contribute code to this protocol. - -Tokenomics: -Autonolas tokenomics focuses on three objectives: - -1/ Growing capital and code proportionally: On-chain mechanisms ensure that the code provided by developers is rewarded according to its usefulness to the services operated on the protocol. The protocol acquires protocol-owned liquidity (PoL) in proportion to code usefulness, allowing the protocol to generate returns, invest in services, and guarantee its long-term financial health. - -2/ Enabling intra- and inter-protocol composability: NFTs representing code and services are used to track contributions inside the protocol, accrue rewards, and can be used productively as collateral across DeFi. - -3/ Incentivizing the donation of profits from Protocol-owned Services (PoSe): Autonomous services owned by governance of various DAOs, operated by the ecosystem, and developed by agent developers worldwide donate some of their profits to the protocol. - -Use Cases for Autonomous Services: -A large market for autonomous agent services is emerging, primarily focused on improving DAO operations. Autonomous services make DAOs more competitive by providing richer means for transparently coordinating human actors and executing processes with little or no marginal human input. Autonomous services can be composed of three fundamental Lego blocks: Keepers, Oracles, and Bridges. - -This composability leads to combinatorial expansion and unprecedented new applications. - -Governance: -A crucial element of the success of Autonolas is to have an active community and ecosystem that both build, evolve, promote, and make use of Autonolas technology. For this reason, Autonolas is organized as a DAO where meaningful contributors and supporters participate in the decision-making process. - -Initially, holders of the virtualized veOLAS token can participate in any governance activities. The veOLAS token is obtained by locking OLAS, which is the native token of Autonolas. Governance participation is proportional to veOLAS holdings and their locking duration. Governance proposals can notably modify system parameters, support new technological directions, or add entirely new functionality to the on-chain protocol. - -Once a governance proposal is approved, the Timelock adds a delay for the proposal to be executed. - -Exceptionally, some changes to the Autonolas on-chain protocol could be executed by a community-owned multi-sig wallet, bypassing the governance process. - -This allows a set of trusted actors to overrule governance in certain aspects, e.g., a security exploit that needs to be patched without governance discussion. - -Follow Autonolas: -Website: autonolas.network -Twitter: twitter.com/autonolas -Discord: discord.com/invite/z2PT65jKqQ -Valory: valory.xyz autonolas.network - - You should only respond in JSON format as described below Response Format: { diff --git a/packages/valory/skills/twitter_scoring_abci/skill.yaml b/packages/valory/skills/twitter_scoring_abci/skill.yaml index 90d06885..5ef83a68 100644 --- a/packages/valory/skills/twitter_scoring_abci/skill.yaml +++ b/packages/valory/skills/twitter_scoring_abci/skill.yaml @@ -8,16 +8,16 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: __init__.py: bafybeifudgakkjoyahuewp2o4gvqayw7nsgpyxw2ayrpgmzexurh2xomaq - behaviours.py: bafybeibqztwvj6ku5f5q4cf3hmloeeci6ied6dejjtdfsjepw5k62wdtjq + behaviours.py: bafybeifnbjypim7wculvhktoqhs7aqeu5uqzp3vbgfthfqn5kcqw4x2avy dialogues.py: bafybeibdqzn37hbo2cq4skww4uh2zvvsjyaxxvdhxisefbdvmjp7rh53si fsm_specification.yaml: bafybeihbq2olrdqx2x5lcvypxyi44ecog4nntsvw2v6oeab4imvj5nz6ae handlers.py: bafybeid3nqvcyotqj5g5hlgrz57nf7vpjysmgvsxe3p7644f4z5dcwqn6u models.py: bafybeicqgrvizvwvelzmc2tzrzcvoix7wf6xlgyz6a5vvrccjnejf6klb4 payloads.py: bafybeidb2qiw26b5fhyxujseibbo2ji5zo54auhyelllsqnj7zn5sbc3pi - prompts.py: bafybeieiuqn427bgwfnzynxf3vtqfpvmqqscs5tyw4oibfofwropifotke + prompts.py: bafybeidab3wypfzjia6fcj4svo4rzrnbuvqhivqhvdzzglfhl34bnnzm3e rounds.py: bafybeieklx2bx5ampjtszvg75hacxexigvlf4idsxfgwwrok77hy52f7ja tests/__init__.py: bafybeidwzzd4ejsyf3aryd5kmrvd63h7ajgqyrxphmfaacvpjnneacejay - tests/test_behaviours.py: bafybeidfyamtzq5ca6xw4vjbgrse5pqnfanedqs6ivddkrnctiofpgyxy4 + tests/test_behaviours.py: bafybeie4upcbed254dybpgar465rnvoycbgtoq4zl62pgenvcpegvxiqvq tests/test_dialogues.py: bafybeiheyq7klonzb7rnjub2i22h7bmsnoimn2pq4j7ofikt3yovstvgt4 tests/test_handlers.py: bafybeigevirvi3saepukke2zmp334btgsdxhj55o2vawj3hqam63miirg4 tests/test_models.py: bafybeicz5jqlkgs7ffw6hdtvo6674t6uvwup5ffeqat2hvjl5yi2fttxoy @@ -136,11 +136,11 @@ models: twitter_api_base: https://api.twitter.com/ twitter_api_bearer_token: twitter_mentions_endpoint: 2/users/1450081635559428107/mentions? - twitter_mentions_args: tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} + twitter_mentions_args: tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} twitter_max_pages: 1 max_tweet_pulls_allowed: 80 twitter_search_endpoint: 2/tweets/search/recent? - twitter_search_args: query={search_query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} + twitter_search_args: query={search_query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id={since_id} openai_call_window_size: 3600.0 openai_calls_allowed_in_window: 100 max_points_per_period: 5000 diff --git a/packages/valory/skills/twitter_scoring_abci/tests/test_behaviours.py b/packages/valory/skills/twitter_scoring_abci/tests/test_behaviours.py index d9c06437..d1ab5cb4 100644 --- a/packages/valory/skills/twitter_scoring_abci/tests/test_behaviours.py +++ b/packages/valory/skills/twitter_scoring_abci/tests/test_behaviours.py @@ -76,8 +76,8 @@ PACKAGE_DIR = Path(__file__).parent.parent ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" -TWITTER_MENTIONS_URL = "https://api.twitter.com/2/users/1450081635559428107/mentions?tweet.fields=author_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id=0" -TWITTER_REGISTRATIONS_URL = "https://api.twitter.com/2/tweets/search/recent?query=%23OlasNetwork&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results={max_results}&since_id=0" +TWITTER_MENTIONS_URL = "https://api.twitter.com/2/users/1450081635559428107/mentions?tweet.fields=author_id,created_at,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id=0" +TWITTER_REGISTRATIONS_URL = "https://api.twitter.com/2/tweets/search/recent?query=%23OlasNetwork&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results={max_results}&since_id=0" DUMMY_MENTIONS_RESPONSE = { "data": [ diff --git a/sample.env b/sample.env index 444d86af..c458205e 100644 --- a/sample.env +++ b/sample.env @@ -48,8 +48,8 @@ MAX_POINTS_PER_PERIOD=900 # TWITTER # ----------------------------------------------------------------------------------------- TWITTER_API_BEARER_TOKEN= -TWITTER_SEARCH_ARGS='query={query}&tweet.fields=author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=100&since_id={since_id}' -TWITTER_TWEETS_ARGS=tweet.fields='author_id,created_at,conversation_id&user.fields=name&expansions=author_id&max_results=10&start_time={start_time}' +TWITTER_SEARCH_ARGS='query={query}&tweet.fields=author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=100&since_id={since_id}' +TWITTER_TWEETS_ARGS=tweet.fields='author_id,created_at,conversation_id,public_metrics&user.fields=name&expansions=author_id&max_results=10&start_time={start_time}' TWITTER_API_BASE= TWITTER_MENTIONS_ENDPOINT=twitter/2/users/1/mentions? TWITTER_SEARCH_ENDPOINT=twitter/2/tweets/search/recent?