mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
Merge branch 'backend-temp' into redesigning-block-menu
This commit is contained in:
@@ -5,6 +5,7 @@ import prisma
|
||||
|
||||
import backend.server.model as server_model
|
||||
from backend.blocks import load_all_blocks
|
||||
from backend.blocks.llm import LlmModel
|
||||
from backend.data.block import Block, BlockCategory, BlockSchema
|
||||
from backend.data.credit import get_block_costs
|
||||
from backend.integrations.providers import ProviderName
|
||||
@@ -19,6 +20,9 @@ from backend.server.v2.builder.model import (
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
llm_models = [
|
||||
name.name.lower().replace("_", " ") for name in LlmModel
|
||||
]
|
||||
_static_counts_cache: dict | None = None
|
||||
|
||||
|
||||
@@ -142,7 +146,11 @@ def search_blocks(
|
||||
if block.disabled:
|
||||
continue
|
||||
# Skip blocks that don't match the query
|
||||
if query not in block.name.lower() or query not in block.description.lower():
|
||||
if (
|
||||
query not in block.name.lower()
|
||||
and query not in block.description.lower()
|
||||
and not _matches_llm_model(block.input_schema, query)
|
||||
):
|
||||
continue
|
||||
keep = False
|
||||
credentials = list(block.input_schema.get_credentials_fields().values())
|
||||
@@ -283,6 +291,15 @@ async def _get_static_counts():
|
||||
return _static_counts_cache
|
||||
|
||||
|
||||
def _matches_llm_model(schema_cls: type[BlockSchema], query: str) -> bool:
|
||||
for field in schema_cls.model_fields.values():
|
||||
if field.annotation == LlmModel:
|
||||
# Check if query matches any value in llm_models
|
||||
if any(query in name for name in llm_models):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@functools.cache
|
||||
def _get_all_providers() -> dict[ProviderName, Provider]:
|
||||
providers: dict[ProviderName, Provider] = {}
|
||||
|
||||
@@ -10,7 +10,6 @@ from backend.integrations.providers import ProviderName
|
||||
FilterType = Literal[
|
||||
"blocks",
|
||||
"integrations",
|
||||
"providers",
|
||||
"marketplace_agents",
|
||||
"my_agents",
|
||||
]
|
||||
@@ -72,9 +71,7 @@ class SearchBlocksResponse(BaseModel):
|
||||
|
||||
|
||||
class SearchResponse(BaseModel):
|
||||
items: list[
|
||||
BlockData | Provider | library_model.LibraryAgent | store_model.StoreAgent
|
||||
]
|
||||
items: list[BlockData | library_model.LibraryAgent | store_model.StoreAgent]
|
||||
total_items: dict[FilterType, int]
|
||||
page: int
|
||||
more_pages: bool
|
||||
|
||||
@@ -126,7 +126,6 @@ async def search(
|
||||
options.filter = [
|
||||
"blocks",
|
||||
"integrations",
|
||||
"providers",
|
||||
"marketplace_agents",
|
||||
"my_agents",
|
||||
]
|
||||
@@ -152,18 +151,6 @@ async def search(
|
||||
page_size=options.page_size,
|
||||
)
|
||||
|
||||
# Providers
|
||||
providers = builder_model.ProviderResponse(
|
||||
providers=[],
|
||||
pagination=server_model.Pagination.empty(),
|
||||
)
|
||||
if "providers" in options.filter:
|
||||
providers = builder_db.get_providers(
|
||||
query=options.search_query or "",
|
||||
page=options.page,
|
||||
page_size=options.page_size,
|
||||
)
|
||||
|
||||
# Library Agents
|
||||
my_agents = library_model.LibraryAgentResponse(
|
||||
agents=[],
|
||||
@@ -204,10 +191,7 @@ async def search(
|
||||
# todo kcze sort results
|
||||
|
||||
return builder_model.SearchResponse(
|
||||
items=blocks.blocks.blocks
|
||||
+ providers.providers
|
||||
+ my_agents.agents
|
||||
+ marketplace_agents.agents,
|
||||
items=blocks.blocks.blocks + my_agents.agents + marketplace_agents.agents,
|
||||
total_items={
|
||||
"blocks": blocks.total_block_count,
|
||||
"integrations": blocks.total_integration_count,
|
||||
|
||||
@@ -239,7 +239,6 @@ export default class BackendAPI {
|
||||
filter?: (
|
||||
| "blocks"
|
||||
| "integrations"
|
||||
| "providers"
|
||||
| "marketplace_agents"
|
||||
| "my_agents"
|
||||
)[];
|
||||
|
||||
@@ -72,11 +72,10 @@ export type ProviderResponse = {
|
||||
|
||||
/* Mirror of backend/server/v2/builder/model.py:BlockSearchResponse */
|
||||
export type BlockSearchResponse = {
|
||||
items: (Block | Provider | LibraryAgent | StoreAgent)[];
|
||||
items: (Block | LibraryAgent | StoreAgent)[];
|
||||
total_items: Record<
|
||||
| "blocks"
|
||||
| "integrations"
|
||||
| "providers"
|
||||
| "marketplace_agents"
|
||||
| "my_agents",
|
||||
number
|
||||
|
||||
Reference in New Issue
Block a user