intentkit 0.6.13.dev2__py3-none-any.whl → 0.8.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- intentkit/__init__.py +1 -1
- intentkit/abstracts/agent.py +4 -5
- intentkit/abstracts/engine.py +5 -5
- intentkit/abstracts/graph.py +14 -7
- intentkit/abstracts/skill.py +6 -144
- intentkit/abstracts/twitter.py +4 -5
- intentkit/clients/__init__.py +5 -2
- intentkit/clients/cdp.py +101 -141
- intentkit/clients/twitter.py +83 -62
- intentkit/clients/web3.py +29 -0
- intentkit/config/config.py +8 -5
- intentkit/core/agent.py +472 -195
- intentkit/core/asset.py +253 -0
- intentkit/core/chat.py +51 -0
- intentkit/core/client.py +1 -1
- intentkit/core/credit.py +460 -130
- intentkit/core/engine.py +262 -233
- intentkit/core/node.py +15 -16
- intentkit/core/prompt.py +62 -28
- intentkit/core/scheduler.py +92 -0
- intentkit/core/statistics.py +168 -0
- intentkit/models/agent.py +1096 -949
- intentkit/models/agent_data.py +68 -38
- intentkit/models/agent_public.json +98 -0
- intentkit/models/agent_schema.json +54 -439
- intentkit/models/app_setting.py +96 -33
- intentkit/models/chat.py +74 -27
- intentkit/models/conversation.py +8 -8
- intentkit/models/credit.py +362 -74
- intentkit/models/db.py +26 -8
- intentkit/models/db_mig.py +2 -2
- intentkit/models/llm.csv +28 -0
- intentkit/models/llm.py +185 -350
- intentkit/models/redis.py +6 -4
- intentkit/models/skill.py +186 -72
- intentkit/models/skills.csv +174 -0
- intentkit/models/user.py +82 -24
- intentkit/skills/acolyt/__init__.py +2 -9
- intentkit/skills/acolyt/ask.py +3 -4
- intentkit/skills/acolyt/base.py +4 -9
- intentkit/skills/acolyt/schema.json +4 -3
- intentkit/skills/aixbt/__init__.py +2 -13
- intentkit/skills/aixbt/base.py +1 -7
- intentkit/skills/aixbt/projects.py +14 -15
- intentkit/skills/aixbt/schema.json +4 -4
- intentkit/skills/allora/__init__.py +2 -9
- intentkit/skills/allora/base.py +4 -9
- intentkit/skills/allora/price.py +3 -4
- intentkit/skills/allora/schema.json +3 -2
- intentkit/skills/base.py +248 -85
- intentkit/skills/basename/__init__.py +51 -0
- intentkit/skills/basename/base.py +11 -0
- intentkit/skills/basename/basename.svg +11 -0
- intentkit/skills/basename/schema.json +58 -0
- intentkit/skills/carv/__init__.py +115 -121
- intentkit/skills/carv/base.py +184 -185
- intentkit/skills/carv/fetch_news.py +3 -3
- intentkit/skills/carv/onchain_query.py +4 -4
- intentkit/skills/carv/schema.json +134 -137
- intentkit/skills/carv/token_info_and_price.py +5 -5
- intentkit/skills/casino/README.md +254 -0
- intentkit/skills/casino/__init__.py +86 -0
- intentkit/skills/casino/base.py +17 -0
- intentkit/skills/casino/casino.png +0 -0
- intentkit/skills/casino/deck_draw.py +127 -0
- intentkit/skills/casino/deck_shuffle.py +118 -0
- intentkit/skills/casino/dice_roll.py +100 -0
- intentkit/skills/casino/schema.json +77 -0
- intentkit/skills/casino/utils.py +107 -0
- intentkit/skills/cdp/__init__.py +22 -84
- intentkit/skills/cdp/base.py +1 -7
- intentkit/skills/cdp/schema.json +11 -314
- intentkit/skills/chainlist/__init__.py +2 -7
- intentkit/skills/chainlist/base.py +1 -7
- intentkit/skills/chainlist/chain_lookup.py +18 -18
- intentkit/skills/chainlist/schema.json +3 -5
- intentkit/skills/common/__init__.py +2 -9
- intentkit/skills/common/base.py +1 -7
- intentkit/skills/common/current_time.py +1 -2
- intentkit/skills/common/schema.json +2 -2
- intentkit/skills/cookiefun/__init__.py +6 -9
- intentkit/skills/cookiefun/base.py +2 -7
- intentkit/skills/cookiefun/get_account_details.py +7 -7
- intentkit/skills/cookiefun/get_account_feed.py +19 -19
- intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
- intentkit/skills/cookiefun/get_sectors.py +3 -3
- intentkit/skills/cookiefun/schema.json +1 -3
- intentkit/skills/cookiefun/search_accounts.py +9 -9
- intentkit/skills/cryptocompare/__init__.py +7 -24
- intentkit/skills/cryptocompare/api.py +2 -3
- intentkit/skills/cryptocompare/base.py +11 -25
- intentkit/skills/cryptocompare/fetch_news.py +4 -5
- intentkit/skills/cryptocompare/fetch_price.py +6 -7
- intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
- intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
- intentkit/skills/cryptocompare/schema.json +3 -3
- intentkit/skills/cryptopanic/__init__.py +7 -10
- intentkit/skills/cryptopanic/base.py +51 -55
- intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
- intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
- intentkit/skills/cryptopanic/schema.json +105 -103
- intentkit/skills/dapplooker/__init__.py +2 -9
- intentkit/skills/dapplooker/base.py +4 -9
- intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
- intentkit/skills/dapplooker/schema.json +3 -5
- intentkit/skills/defillama/__init__.py +24 -74
- intentkit/skills/defillama/api.py +6 -9
- intentkit/skills/defillama/base.py +11 -21
- intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_block.py +6 -8
- intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
- intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
- intentkit/skills/defillama/config/chains.py +1 -3
- intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
- intentkit/skills/defillama/schema.json +5 -1
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
- intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
- intentkit/skills/defillama/tests/api_integration.test.py +1 -1
- intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
- intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
- intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
- intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
- intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
- intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
- intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
- intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
- intentkit/skills/defillama/yields/fetch_pools.py +26 -30
- intentkit/skills/dexscreener/README.md +154 -0
- intentkit/skills/dexscreener/__init__.py +97 -93
- intentkit/skills/dexscreener/base.py +125 -133
- intentkit/skills/dexscreener/get_pair_info.py +158 -0
- intentkit/skills/dexscreener/get_token_pairs.py +165 -0
- intentkit/skills/dexscreener/get_tokens_info.py +212 -0
- intentkit/skills/dexscreener/model/search_token_response.py +80 -82
- intentkit/skills/dexscreener/schema.json +91 -48
- intentkit/skills/dexscreener/search_token.py +182 -321
- intentkit/skills/dexscreener/utils.py +420 -0
- intentkit/skills/dune_analytics/__init__.py +7 -9
- intentkit/skills/dune_analytics/base.py +48 -52
- intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
- intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
- intentkit/skills/dune_analytics/schema.json +104 -99
- intentkit/skills/elfa/__init__.py +5 -18
- intentkit/skills/elfa/base.py +10 -14
- intentkit/skills/elfa/mention.py +19 -21
- intentkit/skills/elfa/schema.json +3 -2
- intentkit/skills/elfa/stats.py +4 -4
- intentkit/skills/elfa/tokens.py +12 -12
- intentkit/skills/elfa/utils.py +26 -28
- intentkit/skills/enso/__init__.py +11 -31
- intentkit/skills/enso/base.py +50 -35
- intentkit/skills/enso/best_yield.py +16 -24
- intentkit/skills/enso/networks.py +6 -11
- intentkit/skills/enso/prices.py +11 -13
- intentkit/skills/enso/route.py +34 -38
- intentkit/skills/enso/schema.json +3 -2
- intentkit/skills/enso/tokens.py +29 -38
- intentkit/skills/enso/wallet.py +76 -191
- intentkit/skills/erc20/__init__.py +50 -0
- intentkit/skills/erc20/base.py +11 -0
- intentkit/skills/erc20/erc20.svg +5 -0
- intentkit/skills/erc20/schema.json +74 -0
- intentkit/skills/erc721/__init__.py +53 -0
- intentkit/skills/erc721/base.py +11 -0
- intentkit/skills/erc721/erc721.svg +5 -0
- intentkit/skills/erc721/schema.json +90 -0
- intentkit/skills/firecrawl/README.md +11 -5
- intentkit/skills/firecrawl/__init__.py +5 -18
- intentkit/skills/firecrawl/base.py +4 -11
- intentkit/skills/firecrawl/clear.py +4 -8
- intentkit/skills/firecrawl/crawl.py +19 -19
- intentkit/skills/firecrawl/query.py +4 -3
- intentkit/skills/firecrawl/schema.json +6 -8
- intentkit/skills/firecrawl/scrape.py +150 -40
- intentkit/skills/firecrawl/utils.py +50 -42
- intentkit/skills/github/__init__.py +2 -7
- intentkit/skills/github/base.py +1 -7
- intentkit/skills/github/github_search.py +1 -2
- intentkit/skills/github/schema.json +3 -4
- intentkit/skills/heurist/__init__.py +8 -27
- intentkit/skills/heurist/base.py +4 -9
- intentkit/skills/heurist/image_generation_animagine_xl.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_comics.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_real.py +12 -13
- intentkit/skills/heurist/image_generation_braindance.py +12 -13
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +12 -13
- intentkit/skills/heurist/image_generation_flux_1_dev.py +12 -13
- intentkit/skills/heurist/image_generation_sdxl.py +12 -13
- intentkit/skills/heurist/schema.json +2 -2
- intentkit/skills/http/__init__.py +4 -15
- intentkit/skills/http/base.py +1 -7
- intentkit/skills/http/get.py +21 -16
- intentkit/skills/http/post.py +23 -18
- intentkit/skills/http/put.py +23 -18
- intentkit/skills/http/schema.json +4 -5
- intentkit/skills/lifi/__init__.py +8 -13
- intentkit/skills/lifi/base.py +1 -7
- intentkit/skills/lifi/schema.json +17 -8
- intentkit/skills/lifi/token_execute.py +36 -30
- intentkit/skills/lifi/token_quote.py +8 -10
- intentkit/skills/lifi/utils.py +104 -51
- intentkit/skills/moralis/__init__.py +6 -10
- intentkit/skills/moralis/api.py +6 -7
- intentkit/skills/moralis/base.py +5 -10
- intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
- intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
- intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
- intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
- intentkit/skills/moralis/schema.json +7 -2
- intentkit/skills/morpho/__init__.py +52 -0
- intentkit/skills/morpho/base.py +11 -0
- intentkit/skills/morpho/morpho.svg +12 -0
- intentkit/skills/morpho/schema.json +73 -0
- intentkit/skills/nation/__init__.py +4 -9
- intentkit/skills/nation/base.py +5 -10
- intentkit/skills/nation/nft_check.py +3 -4
- intentkit/skills/nation/schema.json +4 -3
- intentkit/skills/onchain.py +23 -0
- intentkit/skills/openai/__init__.py +17 -18
- intentkit/skills/openai/base.py +10 -14
- intentkit/skills/openai/dalle_image_generation.py +3 -8
- intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit/skills/openai/gpt_image_generation.py +4 -8
- intentkit/skills/openai/gpt_image_mini_generator.py +91 -0
- intentkit/skills/openai/gpt_image_to_image.py +4 -8
- intentkit/skills/openai/image_to_text.py +3 -7
- intentkit/skills/openai/schema.json +34 -3
- intentkit/skills/portfolio/__init__.py +11 -35
- intentkit/skills/portfolio/base.py +33 -19
- intentkit/skills/portfolio/schema.json +3 -5
- intentkit/skills/portfolio/token_balances.py +21 -21
- intentkit/skills/portfolio/wallet_approvals.py +17 -18
- intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
- intentkit/skills/portfolio/wallet_history.py +31 -31
- intentkit/skills/portfolio/wallet_net_worth.py +13 -13
- intentkit/skills/portfolio/wallet_nfts.py +19 -19
- intentkit/skills/portfolio/wallet_profitability.py +18 -18
- intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
- intentkit/skills/portfolio/wallet_stats.py +3 -3
- intentkit/skills/portfolio/wallet_swaps.py +19 -19
- intentkit/skills/pyth/__init__.py +50 -0
- intentkit/skills/pyth/base.py +11 -0
- intentkit/skills/pyth/pyth.svg +6 -0
- intentkit/skills/pyth/schema.json +75 -0
- intentkit/skills/skills.toml +40 -0
- intentkit/skills/slack/__init__.py +5 -17
- intentkit/skills/slack/base.py +3 -9
- intentkit/skills/slack/get_channel.py +8 -8
- intentkit/skills/slack/get_message.py +9 -9
- intentkit/skills/slack/schedule_message.py +5 -5
- intentkit/skills/slack/schema.json +2 -2
- intentkit/skills/slack/send_message.py +3 -5
- intentkit/skills/supabase/__init__.py +7 -23
- intentkit/skills/supabase/base.py +9 -13
- intentkit/skills/supabase/delete_data.py +5 -6
- intentkit/skills/supabase/fetch_data.py +13 -14
- intentkit/skills/supabase/insert_data.py +5 -6
- intentkit/skills/supabase/invoke_function.py +7 -8
- intentkit/skills/supabase/schema.json +2 -3
- intentkit/skills/supabase/update_data.py +7 -8
- intentkit/skills/supabase/upsert_data.py +5 -6
- intentkit/skills/superfluid/__init__.py +53 -0
- intentkit/skills/superfluid/base.py +11 -0
- intentkit/skills/superfluid/schema.json +89 -0
- intentkit/skills/superfluid/superfluid.svg +6 -0
- intentkit/skills/system/__init__.py +7 -24
- intentkit/skills/system/add_autonomous_task.py +10 -12
- intentkit/skills/system/delete_autonomous_task.py +2 -2
- intentkit/skills/system/edit_autonomous_task.py +14 -18
- intentkit/skills/system/list_autonomous_tasks.py +3 -5
- intentkit/skills/system/read_agent_api_key.py +6 -4
- intentkit/skills/system/regenerate_agent_api_key.py +6 -4
- intentkit/skills/system/schema.json +6 -8
- intentkit/skills/tavily/__init__.py +3 -12
- intentkit/skills/tavily/base.py +4 -9
- intentkit/skills/tavily/schema.json +3 -5
- intentkit/skills/tavily/tavily_extract.py +2 -4
- intentkit/skills/tavily/tavily_search.py +4 -6
- intentkit/skills/token/__init__.py +5 -10
- intentkit/skills/token/base.py +7 -11
- intentkit/skills/token/erc20_transfers.py +19 -19
- intentkit/skills/token/schema.json +3 -6
- intentkit/skills/token/token_analytics.py +3 -3
- intentkit/skills/token/token_price.py +13 -13
- intentkit/skills/token/token_search.py +9 -9
- intentkit/skills/twitter/__init__.py +11 -35
- intentkit/skills/twitter/base.py +23 -35
- intentkit/skills/twitter/follow_user.py +3 -7
- intentkit/skills/twitter/get_mentions.py +6 -13
- intentkit/skills/twitter/get_timeline.py +5 -13
- intentkit/skills/twitter/get_user_by_username.py +3 -7
- intentkit/skills/twitter/get_user_tweets.py +6 -14
- intentkit/skills/twitter/like_tweet.py +3 -7
- intentkit/skills/twitter/post_tweet.py +23 -12
- intentkit/skills/twitter/reply_tweet.py +21 -12
- intentkit/skills/twitter/retweet.py +3 -7
- intentkit/skills/twitter/schema.json +1 -0
- intentkit/skills/twitter/search_tweets.py +5 -13
- intentkit/skills/unrealspeech/__init__.py +2 -7
- intentkit/skills/unrealspeech/base.py +2 -8
- intentkit/skills/unrealspeech/schema.json +2 -5
- intentkit/skills/unrealspeech/text_to_speech.py +8 -8
- intentkit/skills/venice_audio/__init__.py +98 -106
- intentkit/skills/venice_audio/base.py +117 -121
- intentkit/skills/venice_audio/input.py +41 -41
- intentkit/skills/venice_audio/schema.json +151 -152
- intentkit/skills/venice_audio/venice_audio.py +38 -21
- intentkit/skills/venice_image/__init__.py +147 -154
- intentkit/skills/venice_image/api.py +138 -138
- intentkit/skills/venice_image/base.py +185 -192
- intentkit/skills/venice_image/config.py +33 -35
- intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
- intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
- intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
- intentkit/skills/venice_image/image_generation/image_generation_base.py +9 -9
- intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
- intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
- intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
- intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
- intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
- intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
- intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
- intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
- intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
- intentkit/skills/venice_image/schema.json +267 -267
- intentkit/skills/venice_image/utils.py +77 -78
- intentkit/skills/web_scraper/__init__.py +5 -18
- intentkit/skills/web_scraper/base.py +21 -7
- intentkit/skills/web_scraper/document_indexer.py +7 -6
- intentkit/skills/web_scraper/schema.json +2 -6
- intentkit/skills/web_scraper/scrape_and_index.py +15 -15
- intentkit/skills/web_scraper/utils.py +62 -63
- intentkit/skills/web_scraper/website_indexer.py +17 -19
- intentkit/skills/weth/__init__.py +49 -0
- intentkit/skills/weth/base.py +11 -0
- intentkit/skills/weth/schema.json +58 -0
- intentkit/skills/weth/weth.svg +6 -0
- intentkit/skills/wow/__init__.py +51 -0
- intentkit/skills/wow/base.py +11 -0
- intentkit/skills/wow/schema.json +89 -0
- intentkit/skills/wow/wow.svg +7 -0
- intentkit/skills/x402/__init__.py +61 -0
- intentkit/skills/x402/ask_agent.py +98 -0
- intentkit/skills/x402/base.py +99 -0
- intentkit/skills/x402/http_request.py +117 -0
- intentkit/skills/x402/schema.json +45 -0
- intentkit/skills/x402/x402.webp +0 -0
- intentkit/skills/xmtp/__init__.py +4 -15
- intentkit/skills/xmtp/base.py +61 -2
- intentkit/skills/xmtp/price.py +18 -13
- intentkit/skills/xmtp/schema.json +69 -71
- intentkit/skills/xmtp/swap.py +22 -25
- intentkit/skills/xmtp/transfer.py +71 -32
- intentkit/utils/chain.py +3 -3
- intentkit/utils/error.py +14 -1
- intentkit/utils/logging.py +2 -4
- intentkit/utils/s3.py +59 -7
- intentkit/utils/schema.py +100 -0
- intentkit/utils/slack_alert.py +7 -8
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/METADATA +14 -16
- intentkit-0.8.17.dist-info/RECORD +466 -0
- intentkit/abstracts/exception.py +0 -9
- intentkit/core/skill.py +0 -200
- intentkit/models/generator.py +0 -347
- intentkit/skills/cdp/get_balance.py +0 -110
- intentkit/skills/cdp/swap.py +0 -121
- intentkit/skills/moralis/tests/__init__.py +0 -0
- intentkit/skills/moralis/tests/test_wallet.py +0 -511
- intentkit-0.6.13.dev2.dist-info/RECORD +0 -409
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/WHEEL +0 -0
- {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
from typing import NotRequired, TypedDict
|
|
5
5
|
|
|
6
|
-
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
6
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
7
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
8
|
from intentkit.skills.heurist.image_generation_animagine_xl import (
|
|
@@ -52,7 +51,6 @@ class Config(SkillConfig):
|
|
|
52
51
|
async def get_skills(
|
|
53
52
|
config: "Config",
|
|
54
53
|
is_private: bool,
|
|
55
|
-
store: SkillStoreABC,
|
|
56
54
|
**_,
|
|
57
55
|
) -> list[HeuristBaseTool]:
|
|
58
56
|
"""Get all Heurist AI skills.
|
|
@@ -60,7 +58,6 @@ async def get_skills(
|
|
|
60
58
|
Args:
|
|
61
59
|
config: The configuration for Heurist AI skills.
|
|
62
60
|
is_private: Whether to include private skills.
|
|
63
|
-
store: The skill store for persisting data.
|
|
64
61
|
|
|
65
62
|
Returns:
|
|
66
63
|
A list of Heurist AI skills.
|
|
@@ -77,7 +74,7 @@ async def get_skills(
|
|
|
77
74
|
# Get each skill using the cached getter
|
|
78
75
|
result = []
|
|
79
76
|
for name in available_skills:
|
|
80
|
-
skill = get_heurist_skill(name
|
|
77
|
+
skill = get_heurist_skill(name)
|
|
81
78
|
if skill:
|
|
82
79
|
result.append(skill)
|
|
83
80
|
return result
|
|
@@ -85,58 +82,42 @@ async def get_skills(
|
|
|
85
82
|
|
|
86
83
|
def get_heurist_skill(
|
|
87
84
|
name: str,
|
|
88
|
-
store: SkillStoreABC,
|
|
89
85
|
) -> HeuristBaseTool:
|
|
90
86
|
"""Get a Heurist AI skill by name.
|
|
91
87
|
|
|
92
88
|
Args:
|
|
93
89
|
name: The name of the skill to get
|
|
94
|
-
store: The skill store for persisting data
|
|
95
90
|
|
|
96
91
|
Returns:
|
|
97
92
|
The requested Heurist AI skill
|
|
98
93
|
"""
|
|
99
94
|
if name == "image_generation_animagine_xl":
|
|
100
95
|
if name not in _cache:
|
|
101
|
-
_cache[name] = ImageGenerationAnimagineXL(
|
|
102
|
-
skill_store=store,
|
|
103
|
-
)
|
|
96
|
+
_cache[name] = ImageGenerationAnimagineXL()
|
|
104
97
|
return _cache[name]
|
|
105
98
|
elif name == "image_generation_arthemy_comics":
|
|
106
99
|
if name not in _cache:
|
|
107
|
-
_cache[name] = ImageGenerationArthemyComics(
|
|
108
|
-
skill_store=store,
|
|
109
|
-
)
|
|
100
|
+
_cache[name] = ImageGenerationArthemyComics()
|
|
110
101
|
return _cache[name]
|
|
111
102
|
elif name == "image_generation_arthemy_real":
|
|
112
103
|
if name not in _cache:
|
|
113
|
-
_cache[name] = ImageGenerationArthemyReal(
|
|
114
|
-
skill_store=store,
|
|
115
|
-
)
|
|
104
|
+
_cache[name] = ImageGenerationArthemyReal()
|
|
116
105
|
return _cache[name]
|
|
117
106
|
elif name == "image_generation_braindance":
|
|
118
107
|
if name not in _cache:
|
|
119
|
-
_cache[name] = ImageGenerationBrainDance(
|
|
120
|
-
skill_store=store,
|
|
121
|
-
)
|
|
108
|
+
_cache[name] = ImageGenerationBrainDance()
|
|
122
109
|
return _cache[name]
|
|
123
110
|
elif name == "image_generation_cyber_realistic_xl":
|
|
124
111
|
if name not in _cache:
|
|
125
|
-
_cache[name] = ImageGenerationCyberRealisticXL(
|
|
126
|
-
skill_store=store,
|
|
127
|
-
)
|
|
112
|
+
_cache[name] = ImageGenerationCyberRealisticXL()
|
|
128
113
|
return _cache[name]
|
|
129
114
|
elif name == "image_generation_flux_1_dev":
|
|
130
115
|
if name not in _cache:
|
|
131
|
-
_cache[name] = ImageGenerationFlux1Dev(
|
|
132
|
-
skill_store=store,
|
|
133
|
-
)
|
|
116
|
+
_cache[name] = ImageGenerationFlux1Dev()
|
|
134
117
|
return _cache[name]
|
|
135
118
|
elif name == "image_generation_sdxl":
|
|
136
119
|
if name not in _cache:
|
|
137
|
-
_cache[name] = ImageGenerationSDXL(
|
|
138
|
-
skill_store=store,
|
|
139
|
-
)
|
|
120
|
+
_cache[name] = ImageGenerationSDXL()
|
|
140
121
|
return _cache[name]
|
|
141
122
|
else:
|
|
142
123
|
logger.warning(f"Unknown Heurist skill: {name}")
|
intentkit/skills/heurist/base.py
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"""Base class for Heurist AI skills."""
|
|
2
2
|
|
|
3
|
-
from
|
|
4
|
-
|
|
5
|
-
from langchain.tools.base import ToolException
|
|
3
|
+
from langchain_core.tools.base import ToolException
|
|
6
4
|
from pydantic import BaseModel, Field
|
|
7
5
|
|
|
8
|
-
from intentkit.
|
|
6
|
+
from intentkit.config.config import config
|
|
9
7
|
from intentkit.skills.base import IntentKitSkill
|
|
10
8
|
|
|
11
9
|
|
|
@@ -17,17 +15,14 @@ class HeuristBaseTool(IntentKitSkill):
|
|
|
17
15
|
|
|
18
16
|
name: str = Field(description="The name of the tool")
|
|
19
17
|
description: str = Field(description="A description of what the tool does")
|
|
20
|
-
args_schema:
|
|
21
|
-
skill_store: SkillStoreABC = Field(
|
|
22
|
-
description="The skill store for persisting data"
|
|
23
|
-
)
|
|
18
|
+
args_schema: type[BaseModel]
|
|
24
19
|
|
|
25
20
|
def get_api_key(self) -> str:
|
|
26
21
|
context = self.get_context()
|
|
27
22
|
skill_config = context.agent.skill_config(self.category)
|
|
28
23
|
api_key_provider = skill_config.get("api_key_provider")
|
|
29
24
|
if api_key_provider == "platform":
|
|
30
|
-
return
|
|
25
|
+
return config.heurist_api_key
|
|
31
26
|
# for backward compatibility, may only have api_key in skill_config
|
|
32
27
|
elif skill_config.get("api_key"):
|
|
33
28
|
return skill_config.get("api_key")
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationAnimagineXLInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=680,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationAnimagineXL(HeuristBaseTool):
|
|
|
52
52
|
"AnimagineXL specializes in creating high-quality Japanese anime-style illustrations.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationAnimagineXLInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate Japanese anime-style images using Heurist AI's AnimagineXL model.
|
|
@@ -79,20 +79,19 @@ class ImageGenerationAnimagineXL(HeuristBaseTool):
|
|
|
79
79
|
skill_config = context.agent.skill_config(self.category)
|
|
80
80
|
skill_config = skill_config
|
|
81
81
|
|
|
82
|
-
# Get the Heurist API key from
|
|
82
|
+
# Get the Heurist API key from configuration
|
|
83
83
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
84
84
|
api_key = skill_config["api_key"]
|
|
85
85
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
86
86
|
"rate_limit_minutes"
|
|
87
87
|
):
|
|
88
88
|
await self.user_rate_limit_by_category(
|
|
89
|
-
context.user_id,
|
|
90
89
|
skill_config["rate_limit_number"],
|
|
91
|
-
skill_config["rate_limit_minutes"],
|
|
90
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
92
91
|
)
|
|
93
92
|
else:
|
|
94
|
-
api_key =
|
|
95
|
-
await self.user_rate_limit_by_category(
|
|
93
|
+
api_key = config.heurist_api_key
|
|
94
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
96
95
|
|
|
97
96
|
# Generate a unique job ID
|
|
98
97
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationArthemyComicsInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=1024,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationArthemyComics(HeuristBaseTool):
|
|
|
52
52
|
"ArthemyComics specializes in creating vibrant, stylized comic book illustrations.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationArthemyComicsInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate comic-style images using Heurist AI's ArthemyComics model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationArthemyComics(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationArthemyRealInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=1024,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationArthemyReal(HeuristBaseTool):
|
|
|
52
52
|
"ArthemyReal specializes in creating photorealistic, lifelike images with fine details.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationArthemyRealInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate realistic images using Heurist AI's ArthemyReal model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationArthemyReal(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationBrainDanceInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=1024,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationBrainDance(HeuristBaseTool):
|
|
|
52
52
|
"BrainDance specializes in creating unique, artistic interpretations with creative flair.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationBrainDanceInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate artistic images using Heurist AI's BrainDance model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationBrainDance(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationCyberRealisticXLInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=680,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
|
|
|
52
52
|
"CyberRealisticXL specializes in creating high-quality hyperrealistic photographs with a cyberpunk aesthetic.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationCyberRealisticXLInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate hyperrealistic cyberpunk images using Heurist AI's CyberRealisticXL model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationFlux1DevInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=2048,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=1024,
|
|
31
31
|
le=2048,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationFlux1Dev(HeuristBaseTool):
|
|
|
52
52
|
"Flux.1-dev is a versatile, general-purpose model capable of generating images in any style.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationFlux1DevInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate images using Heurist AI's Flux.1-dev model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationFlux1Dev(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
|
|
4
3
|
import httpx
|
|
5
4
|
from epyxid import XID
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
7
|
+
from intentkit.config.config import config
|
|
8
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
9
|
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
@@ -17,16 +17,16 @@ class ImageGenerationSDXLInput(BaseModel):
|
|
|
17
17
|
prompt: str = Field(
|
|
18
18
|
description="Text prompt describing the image to generate.",
|
|
19
19
|
)
|
|
20
|
-
neg_prompt:
|
|
20
|
+
neg_prompt: str | None = Field(
|
|
21
21
|
default="(worst quality: 1.4), bad quality, nsfw",
|
|
22
22
|
description="Negative prompt describing what to avoid in the generated image.",
|
|
23
23
|
)
|
|
24
|
-
width:
|
|
24
|
+
width: int | None = Field(
|
|
25
25
|
default=1024,
|
|
26
26
|
le=1024,
|
|
27
27
|
description="Width of the generated image.",
|
|
28
28
|
)
|
|
29
|
-
height:
|
|
29
|
+
height: int | None = Field(
|
|
30
30
|
default=1024,
|
|
31
31
|
le=1024,
|
|
32
32
|
description="Height of the generated image.",
|
|
@@ -52,14 +52,14 @@ class ImageGenerationSDXL(HeuristBaseTool):
|
|
|
52
52
|
"SDXL is a versatile, general-purpose model capable of generating high-quality images in any style.\n"
|
|
53
53
|
"If you have height and width, remember to specify them.\n"
|
|
54
54
|
)
|
|
55
|
-
args_schema:
|
|
55
|
+
args_schema: type[BaseModel] = ImageGenerationSDXLInput
|
|
56
56
|
|
|
57
57
|
async def _arun(
|
|
58
58
|
self,
|
|
59
59
|
prompt: str,
|
|
60
|
-
neg_prompt:
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
60
|
+
neg_prompt: str | None = "(worst quality: 1.4), bad quality, nsfw",
|
|
61
|
+
width: int | None = 1024,
|
|
62
|
+
height: int | None = 680,
|
|
63
63
|
**kwargs,
|
|
64
64
|
) -> str:
|
|
65
65
|
"""Implementation of the tool to generate images using Heurist AI's SDXL model.
|
|
@@ -78,20 +78,19 @@ class ImageGenerationSDXL(HeuristBaseTool):
|
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
79
|
skill_config = skill_config
|
|
80
80
|
|
|
81
|
-
# Get the Heurist API key from
|
|
81
|
+
# Get the Heurist API key from configuration
|
|
82
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
83
83
|
api_key = skill_config["api_key"]
|
|
84
84
|
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
85
85
|
"rate_limit_minutes"
|
|
86
86
|
):
|
|
87
87
|
await self.user_rate_limit_by_category(
|
|
88
|
-
context.user_id,
|
|
89
88
|
skill_config["rate_limit_number"],
|
|
90
|
-
skill_config["rate_limit_minutes"],
|
|
89
|
+
skill_config["rate_limit_minutes"] * 60,
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
93
|
-
api_key =
|
|
94
|
-
await self.user_rate_limit_by_category(
|
|
92
|
+
api_key = config.heurist_api_key
|
|
93
|
+
await self.user_rate_limit_by_category(10, 1440 * 60)
|
|
95
94
|
|
|
96
95
|
# Generate a unique job ID
|
|
97
96
|
job_id = str(XID())
|