mirror of
https://github.com/YFGaia/dify-plus.git
synced 2026-06-14 20:41:21 +08:00
f26fe2f4d2
# Conflicts:
# .gitignore
# README.md
# api/.env.example
# api/Dockerfile
# api/commands.py
# api/configs/app_config.py
# api/controllers/console/__init__.py
# api/controllers/console/apikey.py
# api/controllers/console/app/statistic.py
# api/controllers/service_api/app/app.py
# api/controllers/service_api/app/audio.py
# api/controllers/service_api/app/completion.py
# api/controllers/service_api/app/conversation.py
# api/controllers/service_api/app/file.py
# api/controllers/service_api/app/message.py
# api/controllers/service_api/app/workflow.py
# api/controllers/service_api/wraps.py
# api/controllers/web/completion.py
# api/core/app/apps/advanced_chat/app_generator.py
# api/core/app/apps/advanced_chat/generate_task_pipeline.py
# api/core/app/apps/agent_chat/app_generator.py
# api/core/app/apps/workflow/app_generator.py
# api/core/app/apps/workflow/generate_task_pipeline.py
# api/core/app/task_pipeline/workflow_cycle_manage.py
# api/core/helper/code_executor/code_executor.py
# api/core/tools/builtin_tool/providers/code/tools/simple_code.py
# api/core/workflow/nodes/code/code_node.py
# api/docker/entrypoint.sh
# api/events/event_handlers/__init__.py
# api/extensions/ext_celery.py
# api/extensions/ext_commands.py
# api/models/model.py
# api/models/workflow.py
# api/poetry.lock
# api/pyproject.toml
# api/services/app_service.py
# api/services/feature_service.py
# api/services/workspace_service.py
# web/.env.example
# web/Dockerfile
# web/app/(commonLayout)/apps/Apps.tsx
# web/app/components/apps/app-card.tsx
# web/app/components/base/chat/embedded-chatbot/index.tsx
# web/app/components/base/mermaid/index.tsx
# web/app/components/develop/index.tsx
# web/app/components/develop/secret-key/secret-key-modal.tsx
# web/app/components/develop/secret-key/style.module.css
# web/app/components/develop/template/template.zh.mdx
# web/app/components/explore/app-list/index.tsx
# web/app/components/explore/category.tsx
# web/app/components/explore/sidebar/index.tsx
# web/app/components/header/account-dropdown/index.tsx
# web/app/components/header/index.tsx
# web/app/components/share/utils.ts
# web/app/layout.tsx
# web/app/signin/components/mail-and-password-auth.tsx
# web/app/signin/normal-form.tsx
# web/app/signin/page.module.css
# web/context/app-context.tsx
# web/i18n/i18next-config.ts
# web/i18n/ja-JP/login.ts
# web/i18n/ko-KR/login.ts
#
if dify_config.WORKFLOW_LOG_CLEANUP_ENABLED:
# 2:00 AM every day
imports.append("schedule.clean_workflow_runlogs_precise")
beat_schedule["clean_workflow_runlogs_precise"] = {
"task": "schedule.clean_workflow_runlogs_precise.clean_workflow_runlogs_precise",
"schedule": crontab(minute="0", hour="2"),
} web/package.json
# web/pnpm-lock.yaml
# web/types/feature.ts
249 lines
8.3 KiB
Python
249 lines
8.3 KiB
Python
import json
|
|
|
|
from flask_restx import fields
|
|
|
|
from fields.workflow_fields import workflow_partial_fields
|
|
from libs.helper import AppIconUrlField, TimestampField
|
|
|
|
|
|
class JsonStringField(fields.Raw):
|
|
def format(self, value):
|
|
if isinstance(value, str):
|
|
try:
|
|
return json.loads(value)
|
|
except (json.JSONDecodeError, TypeError):
|
|
return value
|
|
return value
|
|
|
|
|
|
app_detail_kernel_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"description": fields.String,
|
|
"mode": fields.String(attribute="mode_compatible_with_agent"),
|
|
"icon_type": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"icon_url": AppIconUrlField,
|
|
}
|
|
|
|
related_app_list = {
|
|
"data": fields.List(fields.Nested(app_detail_kernel_fields)),
|
|
"total": fields.Integer,
|
|
}
|
|
|
|
model_config_fields = {
|
|
"opening_statement": fields.String,
|
|
"suggested_questions": fields.Raw(attribute="suggested_questions_list"),
|
|
"suggested_questions_after_answer": fields.Raw(attribute="suggested_questions_after_answer_dict"),
|
|
"speech_to_text": fields.Raw(attribute="speech_to_text_dict"),
|
|
"text_to_speech": fields.Raw(attribute="text_to_speech_dict"),
|
|
"retriever_resource": fields.Raw(attribute="retriever_resource_dict"),
|
|
"annotation_reply": fields.Raw(attribute="annotation_reply_dict"),
|
|
"more_like_this": fields.Raw(attribute="more_like_this_dict"),
|
|
"sensitive_word_avoidance": fields.Raw(attribute="sensitive_word_avoidance_dict"),
|
|
"external_data_tools": fields.Raw(attribute="external_data_tools_list"),
|
|
"model": fields.Raw(attribute="model_dict"),
|
|
"user_input_form": fields.Raw(attribute="user_input_form_list"),
|
|
"dataset_query_variable": fields.String,
|
|
"pre_prompt": fields.String,
|
|
"agent_mode": fields.Raw(attribute="agent_mode_dict"),
|
|
"prompt_type": fields.String,
|
|
"chat_prompt_config": fields.Raw(attribute="chat_prompt_config_dict"),
|
|
"completion_prompt_config": fields.Raw(attribute="completion_prompt_config_dict"),
|
|
"dataset_configs": fields.Raw(attribute="dataset_configs_dict"),
|
|
"file_upload": fields.Raw(attribute="file_upload_dict"),
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
}
|
|
|
|
tag_fields = {"id": fields.String, "name": fields.String, "type": fields.String}
|
|
|
|
app_detail_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"description": fields.String,
|
|
"mode": fields.String(attribute="mode_compatible_with_agent"),
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"enable_site": fields.Boolean,
|
|
"enable_api": fields.Boolean,
|
|
"model_config": fields.Nested(model_config_fields, attribute="app_model_config", allow_null=True),
|
|
"workflow": fields.Nested(workflow_partial_fields, allow_null=True),
|
|
"tracing": fields.Raw,
|
|
"use_icon_as_answer_icon": fields.Boolean,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
"access_mode": fields.String,
|
|
"tags": fields.List(fields.Nested(tag_fields)),
|
|
}
|
|
|
|
prompt_config_fields = {
|
|
"prompt_template": fields.String,
|
|
}
|
|
|
|
model_config_partial_fields = {
|
|
"model": fields.Raw(attribute="model_dict"),
|
|
"pre_prompt": fields.String,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
}
|
|
|
|
app_partial_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"max_active_requests": fields.Raw(),
|
|
"description": fields.String(attribute="desc_or_prompt"),
|
|
"mode": fields.String(attribute="mode_compatible_with_agent"),
|
|
"icon_type": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"icon_url": AppIconUrlField,
|
|
"model_config": fields.Nested(model_config_partial_fields, attribute="app_model_config", allow_null=True),
|
|
"workflow": fields.Nested(workflow_partial_fields, allow_null=True),
|
|
"use_icon_as_answer_icon": fields.Boolean,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
"tags": fields.List(fields.Nested(tag_fields)),
|
|
"access_mode": fields.String,
|
|
"create_user_name": fields.String,
|
|
"author_name": fields.String,
|
|
}
|
|
|
|
|
|
app_pagination_fields = {
|
|
"page": fields.Integer,
|
|
"limit": fields.Integer(attribute="per_page"),
|
|
"total": fields.Integer,
|
|
"recommended_apps": fields.List(fields.String), # update app list fields
|
|
"has_more": fields.Boolean(attribute="has_next"),
|
|
"data": fields.List(fields.Nested(app_partial_fields), attribute="items"),
|
|
}
|
|
|
|
template_fields = {
|
|
"name": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"description": fields.String,
|
|
"mode": fields.String,
|
|
"model_config": fields.Nested(model_config_fields),
|
|
}
|
|
|
|
template_list_fields = {
|
|
"data": fields.List(fields.Nested(template_fields)),
|
|
}
|
|
|
|
site_fields = {
|
|
"access_token": fields.String(attribute="code"),
|
|
"code": fields.String,
|
|
"title": fields.String,
|
|
"icon_type": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"icon_url": AppIconUrlField,
|
|
"description": fields.String,
|
|
"default_language": fields.String,
|
|
"chat_color_theme": fields.String,
|
|
"chat_color_theme_inverted": fields.Boolean,
|
|
"customize_domain": fields.String,
|
|
"copyright": fields.String,
|
|
"privacy_policy": fields.String,
|
|
"custom_disclaimer": fields.String,
|
|
"customize_token_strategy": fields.String,
|
|
"prompt_public": fields.Boolean,
|
|
"app_base_url": fields.String,
|
|
"show_workflow_steps": fields.Boolean,
|
|
"use_icon_as_answer_icon": fields.Boolean,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
}
|
|
|
|
deleted_tool_fields = {
|
|
"type": fields.String,
|
|
"tool_name": fields.String,
|
|
"provider_id": fields.String,
|
|
}
|
|
|
|
app_detail_fields_with_site = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"description": fields.String,
|
|
"mode": fields.String(attribute="mode_compatible_with_agent"),
|
|
"icon_type": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"icon_url": AppIconUrlField,
|
|
"enable_site": fields.Boolean,
|
|
"enable_api": fields.Boolean,
|
|
"model_config": fields.Nested(model_config_fields, attribute="app_model_config", allow_null=True),
|
|
"workflow": fields.Nested(workflow_partial_fields, allow_null=True),
|
|
"api_base_url": fields.String,
|
|
"use_icon_as_answer_icon": fields.Boolean,
|
|
"max_active_requests": fields.Integer,
|
|
"created_by": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_by": fields.String,
|
|
"updated_at": TimestampField,
|
|
"deleted_tools": fields.List(fields.Nested(deleted_tool_fields)),
|
|
"access_mode": fields.String,
|
|
"tags": fields.List(fields.Nested(tag_fields)),
|
|
"site": fields.Nested(site_fields),
|
|
}
|
|
|
|
|
|
app_site_fields = {
|
|
"app_id": fields.String,
|
|
"access_token": fields.String(attribute="code"),
|
|
"code": fields.String,
|
|
"title": fields.String,
|
|
"icon": fields.String,
|
|
"icon_background": fields.String,
|
|
"description": fields.String,
|
|
"default_language": fields.String,
|
|
"customize_domain": fields.String,
|
|
"copyright": fields.String,
|
|
"privacy_policy": fields.String,
|
|
"custom_disclaimer": fields.String,
|
|
"customize_token_strategy": fields.String,
|
|
"prompt_public": fields.Boolean,
|
|
"show_workflow_steps": fields.Boolean,
|
|
"use_icon_as_answer_icon": fields.Boolean,
|
|
}
|
|
|
|
leaked_dependency_fields = {"type": fields.String, "value": fields.Raw, "current_identifier": fields.String}
|
|
|
|
app_import_fields = {
|
|
"id": fields.String,
|
|
"status": fields.String,
|
|
"app_id": fields.String,
|
|
"app_mode": fields.String,
|
|
"current_dsl_version": fields.String,
|
|
"imported_dsl_version": fields.String,
|
|
"error": fields.String,
|
|
}
|
|
|
|
app_import_check_dependencies_fields = {
|
|
"leaked_dependencies": fields.List(fields.Nested(leaked_dependency_fields)),
|
|
}
|
|
|
|
app_server_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"server_code": fields.String,
|
|
"description": fields.String,
|
|
"status": fields.String,
|
|
"parameters": JsonStringField,
|
|
"created_at": TimestampField,
|
|
"updated_at": TimestampField,
|
|
}
|