mirror of
https://github.com/langgenius/dify.git
synced 2026-05-30 05:37:48 +08:00
# Conflicts: # .github/workflows/cli-tests.yml # api/clients/agent_backend/__init__.py # api/clients/agent_backend/request_builder.py # api/controllers/console/app/app.py # api/controllers/console/app/mcp_server.py # api/controllers/console/workspace/members.py # api/controllers/openapi/__init__.py # api/controllers/openapi/_models.py # api/controllers/openapi/account.py # api/controllers/openapi/app_run.py # api/controllers/openapi/apps.py # api/controllers/openapi/apps_permitted_external.py # api/controllers/openapi/auth/__init__.py # api/controllers/openapi/auth/composition.py # api/controllers/openapi/auth/pipeline.py # api/controllers/openapi/files.py # api/controllers/openapi/human_input_form.py # api/controllers/openapi/workflow_events.py # api/controllers/openapi/workspaces.py # api/core/workflow/node_factory.py # api/core/workflow/nodes/agent_v2/agent_node.py # api/core/workflow/nodes/agent_v2/runtime_request_builder.py # api/libs/oauth_bearer.py # api/models/agent_config_entities.py # api/openapi/markdown/openapi-swagger.md # api/services/account_service.py # api/tests/unit_tests/clients/agent_backend/test_request_builder.py # api/tests/unit_tests/controllers/console/test_workspace_members.py # api/tests/unit_tests/controllers/console/workspace/test_members.py # api/tests/unit_tests/controllers/openapi/auth/test_composition.py # api/tests/unit_tests/controllers/openapi/auth/test_pipeline.py # api/tests/unit_tests/controllers/openapi/conftest.py # api/tests/unit_tests/controllers/openapi/test_account.py # api/tests/unit_tests/controllers/openapi/test_app_run_streaming.py # api/tests/unit_tests/controllers/openapi/test_human_input_form.py # api/tests/unit_tests/controllers/openapi/test_workflow_events_openapi.py # api/tests/unit_tests/core/workflow/nodes/agent_v2/test_agent_node.py # api/tests/unit_tests/core/workflow/nodes/agent_v2/test_runtime_request_builder.py # api/tests/unit_tests/libs/test_oauth_bearer_rate_limit_ordering.py # api/tests/unit_tests/libs/test_oauth_bearer_require_scope.py # api/tests/unit_tests/libs/test_workspace_member_helper.py # api/tests/unit_tests/services/test_oauth_device_flow.py # cli/AGENTS.md # cli/ARD.md # cli/package.json # cli/src/api/account-sessions.ts # cli/src/api/app-meta.test.ts # cli/src/api/workspaces.ts # cli/src/auth/file-backend.test.ts # cli/src/auth/file-backend.ts # cli/src/auth/hosts.test.ts # cli/src/auth/hosts.ts # cli/src/cache/app-info.test.ts # cli/src/cache/app-info.ts # cli/src/cache/nudge-store.test.ts # cli/src/cache/nudge-store.ts # cli/src/commands/_shared/authed-command.ts # cli/src/commands/auth/devices/_shared/devices.test.ts # cli/src/commands/auth/devices/_shared/devices.ts # cli/src/commands/auth/devices/list/index.ts # cli/src/commands/auth/login/index.ts # cli/src/commands/auth/login/login.test.ts # cli/src/commands/auth/login/login.ts # cli/src/commands/auth/logout/index.ts # cli/src/commands/auth/logout/logout.test.ts # cli/src/commands/auth/logout/logout.ts # cli/src/commands/auth/status/index.ts # cli/src/commands/auth/status/status.test.ts # cli/src/commands/auth/status/status.ts # cli/src/commands/auth/whoami/index.ts # cli/src/commands/auth/whoami/whoami.test.ts # cli/src/commands/auth/whoami/whoami.ts # cli/src/commands/config/get/index.ts # cli/src/commands/config/get/run.test.ts # cli/src/commands/config/get/run.ts # cli/src/commands/config/path/index.ts # cli/src/commands/config/set/index.ts # cli/src/commands/config/set/run.test.ts # cli/src/commands/config/set/run.ts # cli/src/commands/config/unset/index.ts # cli/src/commands/config/unset/run.test.ts # cli/src/commands/config/unset/run.ts # cli/src/commands/config/view/index.ts # cli/src/commands/config/view/run.test.ts # cli/src/commands/config/view/run.ts # cli/src/commands/describe/app/run.test.ts # cli/src/commands/describe/app/run.ts # cli/src/commands/env/list/run-list.ts # cli/src/commands/get/app/run.ts # cli/src/commands/get/workspace/run.ts # cli/src/commands/resume/app/run.ts # cli/src/commands/run/app/_strategies/streaming-structured.ts # cli/src/commands/run/app/_strategies/streaming-text.ts # cli/src/commands/run/app/handlers.ts # cli/src/commands/run/app/hitl-render.ts # cli/src/commands/run/app/run.test.ts # cli/src/commands/run/app/run.ts # cli/src/commands/run/app/stream-handlers.ts # cli/src/commands/tree.generated.ts # cli/src/commands/version/index.ts # cli/src/env/registry.ts # cli/src/errors/format.ts # cli/src/util/browser.ts # cli/src/version/info.ts # cli/src/version/nudge.test.ts # cli/src/version/nudge.ts # cli/src/version/probe.test.ts # cli/src/version/probe.ts # cli/src/version/render.ts # cli/src/workspace/resolver.ts # cli/tsconfig.json # eslint-suppressions.json # packages/contracts/generated/api/console/apps/types.gen.ts # packages/contracts/generated/api/console/apps/zod.gen.ts # packages/contracts/generated/api/openapi/orpc.gen.ts # packages/contracts/generated/api/openapi/types.gen.ts # packages/contracts/generated/api/openapi/zod.gen.ts # packages/dify-ui/README.md # pnpm-lock.yaml # web/app/components/app/app-publisher/index.tsx # web/app/components/app/app-publisher/sections.tsx # web/app/components/app/create-app-modal/__tests__/index.spec.tsx # web/app/components/app/create-app-modal/index.tsx # web/app/components/app/duplicate-modal/__tests__/index.spec.tsx # web/app/components/base/chip/index.tsx # web/app/components/datasets/list/dataset-card/index.tsx # web/app/components/datasets/list/datasets.tsx # web/app/components/datasets/settings/form/components/basic-info-section.tsx # web/app/components/rag-pipeline/components/rag-pipeline-header/run-mode.tsx # web/app/components/tools/edit-custom-collection-modal/index.tsx # web/app/components/tools/mcp/__tests__/index.spec.tsx # web/app/components/tools/mcp/index.tsx # web/app/components/tools/provider-list.tsx # web/app/components/tools/workflow-tool/__tests__/configure-button.spec.tsx
283 lines
8.6 KiB
Python
283 lines
8.6 KiB
Python
from datetime import datetime
|
|
|
|
from flask_restx import fields
|
|
from pydantic import Field, field_validator
|
|
|
|
from fields.base import ResponseModel
|
|
from libs.helper import TimestampField, to_timestamp
|
|
|
|
dataset_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"description": fields.String,
|
|
"permission": fields.String,
|
|
"data_source_type": fields.String,
|
|
"indexing_technique": fields.String,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"permission_keys": fields.List(fields.String()),
|
|
}
|
|
|
|
|
|
class DatasetMetadataResponse(ResponseModel):
|
|
id: str
|
|
type: str
|
|
name: str
|
|
|
|
|
|
class DatasetMetadataListItemResponse(ResponseModel):
|
|
id: str
|
|
name: str
|
|
type: str
|
|
count: int = 0
|
|
|
|
|
|
class DatasetMetadataListResponse(ResponseModel):
|
|
doc_metadata: list[DatasetMetadataListItemResponse]
|
|
built_in_field_enabled: bool
|
|
|
|
|
|
class DatasetMetadataBuiltInFieldResponse(ResponseModel):
|
|
name: str
|
|
type: str
|
|
|
|
|
|
class DatasetMetadataBuiltInFieldsResponse(ResponseModel):
|
|
fields: list[DatasetMetadataBuiltInFieldResponse]
|
|
|
|
|
|
class DatasetMetadataActionResponse(ResponseModel):
|
|
result: str
|
|
|
|
|
|
reranking_model_fields = {"reranking_provider_name": fields.String, "reranking_model_name": fields.String}
|
|
|
|
keyword_setting_fields = {"keyword_weight": fields.Float}
|
|
|
|
vector_setting_fields = {
|
|
"vector_weight": fields.Float,
|
|
"embedding_model_name": fields.String,
|
|
"embedding_provider_name": fields.String,
|
|
}
|
|
|
|
weighted_score_fields = {
|
|
"weight_type": fields.String,
|
|
"keyword_setting": fields.Nested(keyword_setting_fields),
|
|
"vector_setting": fields.Nested(vector_setting_fields),
|
|
}
|
|
|
|
dataset_retrieval_model_fields = {
|
|
"search_method": fields.String,
|
|
"reranking_enable": fields.Boolean,
|
|
"reranking_mode": fields.String,
|
|
"reranking_model": fields.Nested(reranking_model_fields),
|
|
"weights": fields.Nested(weighted_score_fields, allow_null=True),
|
|
"top_k": fields.Integer,
|
|
"score_threshold_enabled": fields.Boolean,
|
|
"score_threshold": fields.Float,
|
|
}
|
|
|
|
dataset_summary_index_fields = {
|
|
"enable": fields.Boolean,
|
|
"model_name": fields.String,
|
|
"model_provider_name": fields.String,
|
|
"summary_prompt": fields.String,
|
|
}
|
|
|
|
external_retrieval_model_fields = {
|
|
"top_k": fields.Integer,
|
|
"score_threshold": fields.Float,
|
|
"score_threshold_enabled": fields.Boolean,
|
|
}
|
|
|
|
tag_fields = {"id": fields.String, "name": fields.String, "type": fields.String}
|
|
|
|
external_knowledge_info_fields = {
|
|
"external_knowledge_id": fields.String,
|
|
"external_knowledge_api_id": fields.String,
|
|
"external_knowledge_api_name": fields.String,
|
|
"external_knowledge_api_endpoint": fields.String,
|
|
}
|
|
|
|
doc_metadata_fields = {"id": fields.String, "name": fields.String, "type": fields.String}
|
|
|
|
icon_info_fields = {
|
|
"icon_type": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"icon_url": fields.String,
|
|
}
|
|
|
|
dataset_detail_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"description": fields.String,
|
|
"provider": fields.String,
|
|
"permission": fields.String,
|
|
"data_source_type": fields.String,
|
|
"indexing_technique": fields.String,
|
|
"app_count": fields.Integer,
|
|
"document_count": fields.Integer,
|
|
"word_count": fields.Integer,
|
|
"created_by": fields.String,
|
|
"author_name": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
"embedding_model": fields.String,
|
|
"embedding_model_provider": fields.String,
|
|
"embedding_available": fields.Boolean,
|
|
"retrieval_model_dict": fields.Nested(dataset_retrieval_model_fields),
|
|
"summary_index_setting": fields.Nested(dataset_summary_index_fields),
|
|
"tags": fields.List(fields.Nested(tag_fields)),
|
|
"doc_form": fields.String,
|
|
"external_knowledge_info": fields.Nested(external_knowledge_info_fields),
|
|
"external_retrieval_model": fields.Nested(external_retrieval_model_fields, allow_null=True),
|
|
"doc_metadata": fields.List(fields.Nested(doc_metadata_fields)),
|
|
"built_in_field_enabled": fields.Boolean,
|
|
"pipeline_id": fields.String,
|
|
"runtime_mode": fields.String,
|
|
"chunk_structure": fields.String,
|
|
"icon_info": fields.Nested(icon_info_fields),
|
|
"is_published": fields.Boolean,
|
|
"total_documents": fields.Integer,
|
|
"total_available_documents": fields.Integer,
|
|
"enable_api": fields.Boolean,
|
|
"is_multimodal": fields.Boolean,
|
|
"permission_keys": fields.List(fields.String()),
|
|
}
|
|
|
|
|
|
class DatasetRerankingModelResponse(ResponseModel):
|
|
reranking_provider_name: str | None = None
|
|
reranking_model_name: str | None = None
|
|
|
|
|
|
class DatasetKeywordSettingResponse(ResponseModel):
|
|
keyword_weight: float | None = None
|
|
|
|
|
|
class DatasetVectorSettingResponse(ResponseModel):
|
|
vector_weight: float | None = None
|
|
embedding_model_name: str | None = None
|
|
embedding_provider_name: str | None = None
|
|
|
|
|
|
class DatasetWeightedScoreResponse(ResponseModel):
|
|
weight_type: str | None = None
|
|
keyword_setting: DatasetKeywordSettingResponse = Field(default_factory=DatasetKeywordSettingResponse)
|
|
vector_setting: DatasetVectorSettingResponse = Field(default_factory=DatasetVectorSettingResponse)
|
|
|
|
@field_validator("keyword_setting", "vector_setting", mode="before")
|
|
@classmethod
|
|
def _expand_null_nested(cls, value: object) -> object:
|
|
return {} if value is None else value
|
|
|
|
|
|
class DatasetRetrievalModelResponse(ResponseModel):
|
|
search_method: str
|
|
reranking_enable: bool
|
|
reranking_mode: str | None = None
|
|
reranking_model: DatasetRerankingModelResponse = Field(default_factory=DatasetRerankingModelResponse)
|
|
weights: DatasetWeightedScoreResponse | None = None
|
|
top_k: int
|
|
score_threshold_enabled: bool
|
|
score_threshold: float | None = None
|
|
|
|
@field_validator("reranking_model", mode="before")
|
|
@classmethod
|
|
def _expand_null_nested(cls, value: object) -> object:
|
|
return {} if value is None else value
|
|
|
|
|
|
class DatasetSummaryIndexSettingResponse(ResponseModel):
|
|
enable: bool | None = None
|
|
model_name: str | None = None
|
|
model_provider_name: str | None = None
|
|
summary_prompt: str | None = None
|
|
|
|
|
|
class DatasetTagResponse(ResponseModel):
|
|
id: str
|
|
name: str
|
|
type: str
|
|
|
|
|
|
class DatasetExternalKnowledgeInfoResponse(ResponseModel):
|
|
external_knowledge_id: str | None = None
|
|
external_knowledge_api_id: str | None = None
|
|
external_knowledge_api_name: str | None = None
|
|
external_knowledge_api_endpoint: str | None = None
|
|
|
|
|
|
class DatasetExternalRetrievalModelResponse(ResponseModel):
|
|
top_k: int
|
|
score_threshold: float | None = None
|
|
score_threshold_enabled: bool | None = None
|
|
|
|
|
|
class DatasetDocMetadataResponse(ResponseModel):
|
|
id: str
|
|
name: str
|
|
type: str
|
|
|
|
|
|
class DatasetIconInfoResponse(ResponseModel):
|
|
icon_type: str | None = None
|
|
icon: str | None = None
|
|
icon_background: str | None = None
|
|
icon_url: str | None = None
|
|
|
|
|
|
class DatasetDetailResponse(ResponseModel):
|
|
id: str
|
|
name: str
|
|
description: str | None
|
|
provider: str
|
|
permission: str
|
|
data_source_type: str | None
|
|
indexing_technique: str | None
|
|
app_count: int
|
|
document_count: int
|
|
word_count: int
|
|
created_by: str
|
|
author_name: str | None
|
|
created_at: int
|
|
updated_by: str | None
|
|
updated_at: int
|
|
embedding_model: str | None
|
|
embedding_model_provider: str | None
|
|
embedding_available: bool | None = None
|
|
retrieval_model_dict: DatasetRetrievalModelResponse
|
|
summary_index_setting: DatasetSummaryIndexSettingResponse = Field(
|
|
default_factory=DatasetSummaryIndexSettingResponse
|
|
)
|
|
tags: list[DatasetTagResponse]
|
|
doc_form: str | None
|
|
external_knowledge_info: DatasetExternalKnowledgeInfoResponse = Field(
|
|
default_factory=DatasetExternalKnowledgeInfoResponse
|
|
)
|
|
external_retrieval_model: DatasetExternalRetrievalModelResponse | None
|
|
doc_metadata: list[DatasetDocMetadataResponse]
|
|
built_in_field_enabled: bool
|
|
pipeline_id: str | None
|
|
runtime_mode: str | None
|
|
chunk_structure: str | None
|
|
icon_info: DatasetIconInfoResponse = Field(default_factory=DatasetIconInfoResponse)
|
|
is_published: bool
|
|
total_documents: int
|
|
total_available_documents: int
|
|
enable_api: bool
|
|
is_multimodal: bool
|
|
permission_keys: list[str] = Field(default_factory=list)
|
|
|
|
@field_validator("created_at", "updated_at", mode="before")
|
|
@classmethod
|
|
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
|
|
return to_timestamp(value)
|
|
|
|
@field_validator("summary_index_setting", "external_knowledge_info", "icon_info", mode="before")
|
|
@classmethod
|
|
def _expand_null_nested(cls, value: object) -> object:
|
|
return {} if value is None else value
|