mirror of
https://github.com/langgenius/dify.git
synced 2026-09-08 11:04:27 +08:00
Merge remote-tracking branch 'origin/feat/evaluation' into feat/evaluation
# Conflicts: # api/controllers/console/app/app.py # api/services/workflow_service.py
This commit is contained in:
commit
70bcbbb8c5
@ -20,11 +20,11 @@
|
|||||||
```typescript
|
```typescript
|
||||||
// ❌ WRONG: Don't mock base components
|
// ❌ WRONG: Don't mock base components
|
||||||
vi.mock('@/app/components/base/loading', () => () => <div>Loading</div>)
|
vi.mock('@/app/components/base/loading', () => () => <div>Loading</div>)
|
||||||
vi.mock('@/app/components/base/button', () => ({ children }: any) => <button>{children}</button>)
|
vi.mock('@/app/components/base/ui/button', () => ({ children }: any) => <button>{children}</button>)
|
||||||
|
|
||||||
// ✅ CORRECT: Import and use real base components
|
// ✅ CORRECT: Import and use real base components
|
||||||
import Loading from '@/app/components/base/loading'
|
import Loading from '@/app/components/base/loading'
|
||||||
import Button from '@/app/components/base/button'
|
import { Button } from '@/app/components/base/ui/button'
|
||||||
// They will render normally in tests
|
// They will render normally in tests
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
14
.github/workflows/style.yml
vendored
14
.github/workflows/style.yml
vendored
@ -77,8 +77,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
web/**
|
web/**
|
||||||
e2e/**
|
|
||||||
sdks/nodejs-client/**
|
|
||||||
packages/**
|
packages/**
|
||||||
package.json
|
package.json
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
@ -97,14 +95,14 @@ jobs:
|
|||||||
id: eslint-cache-restore
|
id: eslint-cache-restore
|
||||||
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
||||||
with:
|
with:
|
||||||
path: .eslintcache
|
path: web/.eslintcache
|
||||||
key: ${{ runner.os }}-eslint-${{ hashFiles('pnpm-lock.yaml', 'eslint.config.mjs', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}-${{ github.sha }}
|
key: ${{ runner.os }}-web-eslint-${{ hashFiles('web/package.json', 'pnpm-lock.yaml', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}-${{ github.sha }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-eslint-${{ hashFiles('pnpm-lock.yaml', 'eslint.config.mjs', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}-
|
${{ runner.os }}-web-eslint-${{ hashFiles('web/package.json', 'pnpm-lock.yaml', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}-
|
||||||
|
|
||||||
- name: Web style check
|
- name: Web style check
|
||||||
if: steps.changed-files.outputs.any_changed == 'true'
|
if: steps.changed-files.outputs.any_changed == 'true'
|
||||||
working-directory: .
|
working-directory: ./web
|
||||||
run: vp run lint:ci
|
run: vp run lint:ci
|
||||||
|
|
||||||
- name: Web tsslint
|
- name: Web tsslint
|
||||||
@ -114,7 +112,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Web type check
|
- name: Web type check
|
||||||
if: steps.changed-files.outputs.any_changed == 'true'
|
if: steps.changed-files.outputs.any_changed == 'true'
|
||||||
working-directory: .
|
working-directory: ./web
|
||||||
run: vp run type-check
|
run: vp run type-check
|
||||||
|
|
||||||
- name: Web dead code check
|
- name: Web dead code check
|
||||||
@ -126,7 +124,7 @@ jobs:
|
|||||||
if: steps.changed-files.outputs.any_changed == 'true' && success() && steps.eslint-cache-restore.outputs.cache-hit != 'true'
|
if: steps.changed-files.outputs.any_changed == 'true' && success() && steps.eslint-cache-restore.outputs.cache-hit != 'true'
|
||||||
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
||||||
with:
|
with:
|
||||||
path: .eslintcache
|
path: web/.eslintcache
|
||||||
key: ${{ steps.eslint-cache-restore.outputs.cache-primary-key }}
|
key: ${{ steps.eslint-cache-restore.outputs.cache-primary-key }}
|
||||||
|
|
||||||
superlinter:
|
superlinter:
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -203,7 +203,6 @@ sdks/python-client/dify_client.egg-info
|
|||||||
|
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/launch.json.template
|
!.vscode/launch.json.template
|
||||||
!.vscode/settings.example.json
|
|
||||||
!.vscode/README.md
|
!.vscode/README.md
|
||||||
api/.vscode
|
api/.vscode
|
||||||
# vscode Code History Extension
|
# vscode Code History Extension
|
||||||
@ -243,5 +242,3 @@ scripts/stress-test/reports/
|
|||||||
|
|
||||||
# Code Agent Folder
|
# Code Agent Folder
|
||||||
.qoder/*
|
.qoder/*
|
||||||
|
|
||||||
.eslintcache
|
|
||||||
|
|||||||
@ -56,9 +56,44 @@ if $api_modified; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if $skip_web_checks; then
|
if $web_modified; then
|
||||||
echo "Git operation in progress, skipping web checks"
|
if $skip_web_checks; then
|
||||||
exit 0
|
echo "Git operation in progress, skipping web checks"
|
||||||
fi
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
vp staged
|
echo "Running ESLint on web module"
|
||||||
|
|
||||||
|
if git diff --cached --quiet -- 'web/**/*.ts' 'web/**/*.tsx'; then
|
||||||
|
web_ts_modified=false
|
||||||
|
else
|
||||||
|
ts_diff_status=$?
|
||||||
|
if [ $ts_diff_status -eq 1 ]; then
|
||||||
|
web_ts_modified=true
|
||||||
|
else
|
||||||
|
echo "Unable to determine staged TypeScript changes (git exit code: $ts_diff_status)."
|
||||||
|
exit $ts_diff_status
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ./web || exit 1
|
||||||
|
pnpm exec vp staged
|
||||||
|
|
||||||
|
if $web_ts_modified; then
|
||||||
|
echo "Running TypeScript type-check:tsgo"
|
||||||
|
if ! npm run type-check:tsgo; then
|
||||||
|
echo "Type check failed. Please run 'npm run type-check:tsgo' to fix the errors."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No staged TypeScript changes detected, skipping type-check:tsgo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Running knip"
|
||||||
|
if ! npm run knip; then
|
||||||
|
echo "Knip check failed. Please run 'npm run knip' to fix the errors."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ../
|
||||||
|
fi
|
||||||
|
|||||||
@ -120,6 +120,9 @@ from .explore import (
|
|||||||
saved_message,
|
saved_message,
|
||||||
trial,
|
trial,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Import snippet controllers
|
||||||
|
from .snippets import snippet_workflow, snippet_workflow_draft_variable
|
||||||
from .socketio import workflow as socketio_workflow # pyright: ignore[reportUnusedImport]
|
from .socketio import workflow as socketio_workflow # pyright: ignore[reportUnusedImport]
|
||||||
|
|
||||||
# Import snippet controllers
|
# Import snippet controllers
|
||||||
@ -211,6 +214,9 @@ __all__ = [
|
|||||||
"saved_message",
|
"saved_message",
|
||||||
"setup",
|
"setup",
|
||||||
"site",
|
"site",
|
||||||
|
"snippet_workflow",
|
||||||
|
"snippet_workflow_draft_variable",
|
||||||
|
"snippets",
|
||||||
"socketio_workflow",
|
"socketio_workflow",
|
||||||
"snippet_workflow",
|
"snippet_workflow",
|
||||||
"snippet_workflow_draft_variable",
|
"snippet_workflow_draft_variable",
|
||||||
|
|||||||
@ -5,6 +5,7 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.enums import WorkflowExecutionStatus
|
||||||
from pydantic import AliasChoices, BaseModel, Field, computed_field, field_validator
|
from pydantic import AliasChoices, BaseModel, Field, computed_field, field_validator
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
@ -29,7 +30,6 @@ from core.rag.retrieval.retrieval_methods import RetrievalMethod
|
|||||||
from core.trigger.constants import TRIGGER_NODE_TYPES
|
from core.trigger.constants import TRIGGER_NODE_TYPES
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.base import ResponseModel
|
from fields.base import ResponseModel
|
||||||
from graphon.enums import WorkflowExecutionStatus
|
|
||||||
from libs.helper import build_icon_url
|
from libs.helper import build_icon_url
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import App, DatasetPermissionEnum, Workflow
|
from models import App, DatasetPermissionEnum, Workflow
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource, fields
|
from flask_restx import Resource, fields
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
@ -22,7 +23,6 @@ from controllers.console.app.error import (
|
|||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs.login import login_required
|
from libs.login import login_required
|
||||||
from models import App, AppMode
|
from models import App, AppMode
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
|
|||||||
@ -3,6 +3,7 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_user, login_required
|
from libs.login import current_user, login_required
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
|
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
@ -19,7 +20,6 @@ from core.helper.code_executor.python3.python3_code_provider import Python3CodeP
|
|||||||
from core.llm_generator.entities import RuleCodeGeneratePayload, RuleGeneratePayload, RuleStructuredOutputPayload
|
from core.llm_generator.entities import RuleCodeGeneratePayload, RuleGeneratePayload, RuleStructuredOutputPayload
|
||||||
from core.llm_generator.llm_generator import LLMGenerator
|
from core.llm_generator.llm_generator import LLMGenerator
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import App
|
from models import App
|
||||||
from services.workflow_service import WorkflowService
|
from services.workflow_service import WorkflowService
|
||||||
|
|||||||
@ -18,6 +18,12 @@ from models.enums import AppMCPServerStatus
|
|||||||
from models.model import AppMCPServer
|
from models.model import AppMCPServer
|
||||||
|
|
||||||
|
|
||||||
|
def _to_timestamp(value: datetime | int | None) -> int | None:
|
||||||
|
if isinstance(value, datetime):
|
||||||
|
return int(value.timestamp())
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
class MCPServerCreatePayload(BaseModel):
|
class MCPServerCreatePayload(BaseModel):
|
||||||
description: str | None = Field(default=None, description="Server description")
|
description: str | None = Field(default=None, description="Server description")
|
||||||
parameters: dict[str, Any] = Field(..., description="Server parameters configuration")
|
parameters: dict[str, Any] = Field(..., description="Server parameters configuration")
|
||||||
@ -30,25 +36,19 @@ class MCPServerUpdatePayload(BaseModel):
|
|||||||
status: str | None = Field(default=None, description="Server status")
|
status: str | None = Field(default=None, description="Server status")
|
||||||
|
|
||||||
|
|
||||||
def _to_timestamp(value: datetime | int | None) -> int | None:
|
|
||||||
if isinstance(value, datetime):
|
|
||||||
return int(value.timestamp())
|
|
||||||
return value
|
|
||||||
|
|
||||||
|
|
||||||
class AppMCPServerResponse(ResponseModel):
|
class AppMCPServerResponse(ResponseModel):
|
||||||
id: str
|
id: str
|
||||||
name: str
|
name: str
|
||||||
server_code: str
|
server_code: str
|
||||||
description: str
|
description: str
|
||||||
status: AppMCPServerStatus
|
status: str
|
||||||
parameters: dict[str, Any] | list[Any] | str
|
parameters: dict[str, Any] | list[Any] | str
|
||||||
created_at: int | None = None
|
created_at: int | None = None
|
||||||
updated_at: int | None = None
|
updated_at: int | None = None
|
||||||
|
|
||||||
@field_validator("parameters", mode="before")
|
@field_validator("parameters", mode="before")
|
||||||
@classmethod
|
@classmethod
|
||||||
def _normalize_parameters(cls, value: Any) -> Any:
|
def _parse_json_string(cls, value: Any) -> Any:
|
||||||
if isinstance(value, str):
|
if isinstance(value, str):
|
||||||
try:
|
try:
|
||||||
return json.loads(value)
|
return json.loads(value)
|
||||||
@ -70,9 +70,7 @@ class AppMCPServerController(Resource):
|
|||||||
@console_ns.doc("get_app_mcp_server")
|
@console_ns.doc("get_app_mcp_server")
|
||||||
@console_ns.doc(description="Get MCP server configuration for an application")
|
@console_ns.doc(description="Get MCP server configuration for an application")
|
||||||
@console_ns.doc(params={"app_id": "Application ID"})
|
@console_ns.doc(params={"app_id": "Application ID"})
|
||||||
@console_ns.response(
|
@console_ns.response(200, "Server configuration", console_ns.models[AppMCPServerResponse.__name__])
|
||||||
200, "MCP server configuration retrieved successfully", console_ns.models[AppMCPServerResponse.__name__]
|
|
||||||
)
|
|
||||||
@login_required
|
@login_required
|
||||||
@account_initialization_required
|
@account_initialization_required
|
||||||
@setup_required
|
@setup_required
|
||||||
@ -87,9 +85,7 @@ class AppMCPServerController(Resource):
|
|||||||
@console_ns.doc(description="Create MCP server configuration for an application")
|
@console_ns.doc(description="Create MCP server configuration for an application")
|
||||||
@console_ns.doc(params={"app_id": "Application ID"})
|
@console_ns.doc(params={"app_id": "Application ID"})
|
||||||
@console_ns.expect(console_ns.models[MCPServerCreatePayload.__name__])
|
@console_ns.expect(console_ns.models[MCPServerCreatePayload.__name__])
|
||||||
@console_ns.response(
|
@console_ns.response(200, "Server created", console_ns.models[AppMCPServerResponse.__name__])
|
||||||
201, "MCP server configuration created successfully", console_ns.models[AppMCPServerResponse.__name__]
|
|
||||||
)
|
|
||||||
@console_ns.response(403, "Insufficient permissions")
|
@console_ns.response(403, "Insufficient permissions")
|
||||||
@account_initialization_required
|
@account_initialization_required
|
||||||
@get_app_model
|
@get_app_model
|
||||||
@ -115,15 +111,13 @@ class AppMCPServerController(Resource):
|
|||||||
)
|
)
|
||||||
db.session.add(server)
|
db.session.add(server)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return AppMCPServerResponse.model_validate(server, from_attributes=True).model_dump(mode="json"), 201
|
return AppMCPServerResponse.model_validate(server, from_attributes=True).model_dump(mode="json")
|
||||||
|
|
||||||
@console_ns.doc("update_app_mcp_server")
|
@console_ns.doc("update_app_mcp_server")
|
||||||
@console_ns.doc(description="Update MCP server configuration for an application")
|
@console_ns.doc(description="Update MCP server configuration for an application")
|
||||||
@console_ns.doc(params={"app_id": "Application ID"})
|
@console_ns.doc(params={"app_id": "Application ID"})
|
||||||
@console_ns.expect(console_ns.models[MCPServerUpdatePayload.__name__])
|
@console_ns.expect(console_ns.models[MCPServerUpdatePayload.__name__])
|
||||||
@console_ns.response(
|
@console_ns.response(200, "Server updated", console_ns.models[AppMCPServerResponse.__name__])
|
||||||
200, "MCP server configuration updated successfully", console_ns.models[AppMCPServerResponse.__name__]
|
|
||||||
)
|
|
||||||
@console_ns.response(403, "Insufficient permissions")
|
@console_ns.response(403, "Insufficient permissions")
|
||||||
@console_ns.response(404, "Server not found")
|
@console_ns.response(404, "Server not found")
|
||||||
@get_app_model
|
@get_app_model
|
||||||
@ -160,7 +154,7 @@ class AppMCPServerRefreshController(Resource):
|
|||||||
@console_ns.doc("refresh_app_mcp_server")
|
@console_ns.doc("refresh_app_mcp_server")
|
||||||
@console_ns.doc(description="Refresh MCP server configuration and regenerate server code")
|
@console_ns.doc(description="Refresh MCP server configuration and regenerate server code")
|
||||||
@console_ns.doc(params={"server_id": "Server ID"})
|
@console_ns.doc(params={"server_id": "Server ID"})
|
||||||
@console_ns.response(200, "MCP server refreshed successfully", console_ns.models[AppMCPServerResponse.__name__])
|
@console_ns.response(200, "Server refreshed", console_ns.models[AppMCPServerResponse.__name__])
|
||||||
@console_ns.response(403, "Insufficient permissions")
|
@console_ns.response(403, "Insufficient permissions")
|
||||||
@console_ns.response(404, "Server not found")
|
@console_ns.response(404, "Server not found")
|
||||||
@setup_required
|
@setup_required
|
||||||
|
|||||||
@ -5,12 +5,17 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import abort, request
|
from flask import abort, request
|
||||||
from flask_restx import Resource, fields, marshal, marshal_with
|
from flask_restx import Resource, fields, marshal, marshal_with
|
||||||
|
from graphon.enums import NodeType
|
||||||
|
from graphon.file import File
|
||||||
|
from graphon.file import helpers as file_helpers
|
||||||
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, ValidationError, field_validator
|
from pydantic import BaseModel, Field, ValidationError, field_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, Forbidden, InternalServerError, NotFound
|
from werkzeug.exceptions import BadRequest, Forbidden, InternalServerError, NotFound
|
||||||
|
|
||||||
import services
|
import services
|
||||||
from controllers.common.controller_schemas import DefaultBlockConfigQuery, WorkflowListQuery, WorkflowUpdatePayload
|
from controllers.common.controller_schemas import DefaultBlockConfigQuery
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.app.error import ConversationCompletedError, DraftWorkflowNotExist, DraftWorkflowNotSync
|
from controllers.console.app.error import ConversationCompletedError, DraftWorkflowNotExist, DraftWorkflowNotSync
|
||||||
from controllers.console.app.workflow_run import workflow_run_node_execution_model
|
from controllers.console.app.workflow_run import workflow_run_node_execution_model
|
||||||
@ -37,11 +42,6 @@ from factories import file_factory, variable_factory
|
|||||||
from fields.member_fields import simple_account_fields
|
from fields.member_fields import simple_account_fields
|
||||||
from fields.online_user_fields import online_user_list_fields
|
from fields.online_user_fields import online_user_list_fields
|
||||||
from fields.workflow_fields import workflow_fields, workflow_pagination_fields
|
from fields.workflow_fields import workflow_fields, workflow_pagination_fields
|
||||||
from graphon.enums import NodeType
|
|
||||||
from graphon.file import File
|
|
||||||
from graphon.file import helpers as file_helpers
|
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from libs.helper import TimestampField, uuid_value
|
from libs.helper import TimestampField, uuid_value
|
||||||
@ -171,7 +171,6 @@ class WorkflowTypeConvertQuery(BaseModel):
|
|||||||
target_type: Literal["workflow", "evaluation"]
|
target_type: Literal["workflow", "evaluation"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WorkflowFeaturesPayload(BaseModel):
|
class WorkflowFeaturesPayload(BaseModel):
|
||||||
features: dict[str, Any] = Field(..., description="Workflow feature configuration")
|
features: dict[str, Any] = Field(..., description="Workflow feature configuration")
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from typing import Any
|
|||||||
from dateutil.parser import isoparse
|
from dateutil.parser import isoparse
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.enums import WorkflowExecutionStatus
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
@ -15,7 +16,6 @@ from extensions.ext_database import db
|
|||||||
from fields.base import ResponseModel
|
from fields.base import ResponseModel
|
||||||
from fields.end_user_fields import SimpleEndUser
|
from fields.end_user_fields import SimpleEndUser
|
||||||
from fields.member_fields import SimpleAccount
|
from fields.member_fields import SimpleAccount
|
||||||
from graphon.enums import WorkflowExecutionStatus
|
|
||||||
from libs.login import login_required
|
from libs.login import login_required
|
||||||
from models import App
|
from models import App
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|||||||
@ -3,6 +3,8 @@ from typing import Literal, TypedDict, cast
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource, fields, marshal_with
|
from flask_restx import Resource, fields, marshal_with
|
||||||
|
from graphon.entities.pause_reason import HumanInputRequired
|
||||||
|
from graphon.enums import WorkflowExecutionStatus
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
@ -26,8 +28,6 @@ from fields.workflow_run_fields import (
|
|||||||
workflow_run_node_execution_list_fields,
|
workflow_run_node_execution_list_fields,
|
||||||
workflow_run_pagination_fields,
|
workflow_run_pagination_fields,
|
||||||
)
|
)
|
||||||
from graphon.entities.pause_reason import HumanInputRequired
|
|
||||||
from graphon.enums import WorkflowExecutionStatus
|
|
||||||
from libs.archive_storage import ArchiveStorageNotConfiguredError, get_archive_storage
|
from libs.archive_storage import ArchiveStorageNotConfiguredError, get_archive_storage
|
||||||
from libs.custom_inputs import time_duration
|
from libs.custom_inputs import time_duration
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
|
|||||||
@ -5,11 +5,11 @@ from typing import Concatenate
|
|||||||
from flask import jsonify, request
|
from flask import jsonify, request
|
||||||
from flask.typing import ResponseReturnValue
|
from flask.typing import ResponseReturnValue
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from werkzeug.exceptions import BadRequest, NotFound
|
from werkzeug.exceptions import BadRequest, NotFound
|
||||||
|
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.model import OAuthProviderApp
|
from models.model import OAuthProviderApp
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from urllib.parse import quote
|
|||||||
|
|
||||||
from flask import Response, request
|
from flask import Response, request
|
||||||
from flask_restx import Resource, fields, marshal, marshal_with
|
from flask_restx import Resource, fields, marshal, marshal_with
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import func, select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
@ -53,7 +54,6 @@ from fields.dataset_fields import (
|
|||||||
weighted_score_fields,
|
weighted_score_fields,
|
||||||
)
|
)
|
||||||
from fields.document_fields import document_status_fields
|
from fields.document_fields import document_status_fields
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import ApiToken, Dataset, Document, DocumentSegment, EvaluationRun, EvaluationTargetType, UploadFile
|
from models import ApiToken, Dataset, Document, DocumentSegment, EvaluationRun, EvaluationTargetType, UploadFile
|
||||||
from models.dataset import DatasetPermission, DatasetPermissionEnum
|
from models.dataset import DatasetPermission, DatasetPermissionEnum
|
||||||
|
|||||||
@ -3,19 +3,20 @@ import logging
|
|||||||
from argparse import ArgumentTypeError
|
from argparse import ArgumentTypeError
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from contextlib import ExitStack
|
from contextlib import ExitStack
|
||||||
from datetime import datetime
|
|
||||||
from typing import Any, Literal, cast
|
from typing import Any, Literal, cast
|
||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from flask import request, send_file
|
from flask import request, send_file
|
||||||
from flask_restx import Resource, marshal
|
from flask_restx import Resource, fields, marshal, marshal_with
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy import asc, desc, func, select
|
from sqlalchemy import asc, desc, func, select
|
||||||
from werkzeug.exceptions import Forbidden, NotFound
|
from werkzeug.exceptions import Forbidden, NotFound
|
||||||
|
|
||||||
import services
|
import services
|
||||||
from controllers.common.controller_schemas import DocumentBatchDownloadZipPayload
|
from controllers.common.controller_schemas import DocumentBatchDownloadZipPayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import get_or_create_model, register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from core.errors.error import (
|
from core.errors.error import (
|
||||||
LLMBadRequestError,
|
LLMBadRequestError,
|
||||||
@ -30,14 +31,14 @@ from core.rag.extractor.entity.datasource_type import DatasourceType
|
|||||||
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
||||||
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.base import ResponseModel
|
from fields.dataset_fields import dataset_fields
|
||||||
from fields.document_fields import (
|
from fields.document_fields import (
|
||||||
|
dataset_and_document_fields,
|
||||||
document_fields,
|
document_fields,
|
||||||
|
document_metadata_fields,
|
||||||
document_status_fields,
|
document_status_fields,
|
||||||
document_with_segments_fields,
|
document_with_segments_fields,
|
||||||
)
|
)
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import DatasetProcessRule, Document, DocumentSegment, UploadFile
|
from models import DatasetProcessRule, Document, DocumentSegment, UploadFile
|
||||||
@ -71,100 +72,27 @@ from ..wraps import (
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _to_timestamp(value: datetime | int | None) -> int | None:
|
# Register models for flask_restx to avoid dict type issues in Swagger
|
||||||
if isinstance(value, datetime):
|
dataset_model = get_or_create_model("Dataset", dataset_fields)
|
||||||
return int(value.timestamp())
|
|
||||||
return value
|
|
||||||
|
|
||||||
|
document_metadata_model = get_or_create_model("DocumentMetadata", document_metadata_fields)
|
||||||
|
|
||||||
def _normalize_enum(value: Any) -> Any:
|
document_fields_copy = document_fields.copy()
|
||||||
if isinstance(value, str) or value is None:
|
document_fields_copy["doc_metadata"] = fields.List(
|
||||||
return value
|
fields.Nested(document_metadata_model), attribute="doc_metadata_details"
|
||||||
return getattr(value, "value", value)
|
)
|
||||||
|
document_model = get_or_create_model("Document", document_fields_copy)
|
||||||
|
|
||||||
|
document_with_segments_fields_copy = document_with_segments_fields.copy()
|
||||||
|
document_with_segments_fields_copy["doc_metadata"] = fields.List(
|
||||||
|
fields.Nested(document_metadata_model), attribute="doc_metadata_details"
|
||||||
|
)
|
||||||
|
document_with_segments_model = get_or_create_model("DocumentWithSegments", document_with_segments_fields_copy)
|
||||||
|
|
||||||
class DatasetResponse(ResponseModel):
|
dataset_and_document_fields_copy = dataset_and_document_fields.copy()
|
||||||
id: str
|
dataset_and_document_fields_copy["dataset"] = fields.Nested(dataset_model)
|
||||||
name: str
|
dataset_and_document_fields_copy["documents"] = fields.List(fields.Nested(document_model))
|
||||||
description: str | None = None
|
dataset_and_document_model = get_or_create_model("DatasetAndDocument", dataset_and_document_fields_copy)
|
||||||
permission: str | None = None
|
|
||||||
data_source_type: str | None = None
|
|
||||||
indexing_technique: str | None = None
|
|
||||||
created_by: str | None = None
|
|
||||||
created_at: int | None = None
|
|
||||||
|
|
||||||
@field_validator("data_source_type", "indexing_technique", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def _normalize_enum_fields(cls, value: Any) -> Any:
|
|
||||||
return _normalize_enum(value)
|
|
||||||
|
|
||||||
@field_validator("created_at", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
|
|
||||||
return _to_timestamp(value)
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentMetadataResponse(ResponseModel):
|
|
||||||
id: str
|
|
||||||
name: str
|
|
||||||
type: str
|
|
||||||
value: str | None = None
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentResponse(ResponseModel):
|
|
||||||
id: str
|
|
||||||
position: int | None = None
|
|
||||||
data_source_type: str | None = None
|
|
||||||
data_source_info: Any = Field(default=None, validation_alias="data_source_info_dict")
|
|
||||||
data_source_detail_dict: Any = None
|
|
||||||
dataset_process_rule_id: str | None = None
|
|
||||||
name: str
|
|
||||||
created_from: str | None = None
|
|
||||||
created_by: str | None = None
|
|
||||||
created_at: int | None = None
|
|
||||||
tokens: int | None = None
|
|
||||||
indexing_status: str | None = None
|
|
||||||
error: str | None = None
|
|
||||||
enabled: bool | None = None
|
|
||||||
disabled_at: int | None = None
|
|
||||||
disabled_by: str | None = None
|
|
||||||
archived: bool | None = None
|
|
||||||
display_status: str | None = None
|
|
||||||
word_count: int | None = None
|
|
||||||
hit_count: int | None = None
|
|
||||||
doc_form: str | None = None
|
|
||||||
doc_metadata: list[DocumentMetadataResponse] = Field(default_factory=list, validation_alias="doc_metadata_details")
|
|
||||||
summary_index_status: str | None = None
|
|
||||||
need_summary: bool | None = None
|
|
||||||
|
|
||||||
@field_validator("data_source_type", "indexing_status", "display_status", "doc_form", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def _normalize_enum_fields(cls, value: Any) -> Any:
|
|
||||||
return _normalize_enum(value)
|
|
||||||
|
|
||||||
@field_validator("doc_metadata", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def _normalize_doc_metadata(cls, value: Any) -> list[Any]:
|
|
||||||
if value is None:
|
|
||||||
return []
|
|
||||||
return value
|
|
||||||
|
|
||||||
@field_validator("created_at", "disabled_at", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
|
|
||||||
return _to_timestamp(value)
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentWithSegmentsResponse(DocumentResponse):
|
|
||||||
process_rule_dict: Any = None
|
|
||||||
completed_segments: int | None = None
|
|
||||||
total_segments: int | None = None
|
|
||||||
|
|
||||||
|
|
||||||
class DatasetAndDocumentResponse(ResponseModel):
|
|
||||||
dataset: DatasetResponse
|
|
||||||
documents: list[DocumentResponse]
|
|
||||||
batch: str
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentRetryPayload(BaseModel):
|
class DocumentRetryPayload(BaseModel):
|
||||||
@ -179,11 +107,6 @@ class GenerateSummaryPayload(BaseModel):
|
|||||||
document_list: list[str]
|
document_list: list[str]
|
||||||
|
|
||||||
|
|
||||||
class DocumentMetadataUpdatePayload(BaseModel):
|
|
||||||
doc_type: str | None = None
|
|
||||||
doc_metadata: Any = None
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentDatasetListParam(BaseModel):
|
class DocumentDatasetListParam(BaseModel):
|
||||||
page: int = Field(1, title="Page", description="Page number.")
|
page: int = Field(1, title="Page", description="Page number.")
|
||||||
limit: int = Field(20, title="Limit", description="Page size.")
|
limit: int = Field(20, title="Limit", description="Page size.")
|
||||||
@ -201,13 +124,7 @@ register_schema_models(
|
|||||||
DocumentRetryPayload,
|
DocumentRetryPayload,
|
||||||
DocumentRenamePayload,
|
DocumentRenamePayload,
|
||||||
GenerateSummaryPayload,
|
GenerateSummaryPayload,
|
||||||
DocumentMetadataUpdatePayload,
|
|
||||||
DocumentBatchDownloadZipPayload,
|
DocumentBatchDownloadZipPayload,
|
||||||
DatasetResponse,
|
|
||||||
DocumentMetadataResponse,
|
|
||||||
DocumentResponse,
|
|
||||||
DocumentWithSegmentsResponse,
|
|
||||||
DatasetAndDocumentResponse,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -440,10 +357,10 @@ class DatasetDocumentListApi(Resource):
|
|||||||
@setup_required
|
@setup_required
|
||||||
@login_required
|
@login_required
|
||||||
@account_initialization_required
|
@account_initialization_required
|
||||||
|
@marshal_with(dataset_and_document_model)
|
||||||
@cloud_edition_billing_resource_check("vector_space")
|
@cloud_edition_billing_resource_check("vector_space")
|
||||||
@cloud_edition_billing_rate_limit_check("knowledge")
|
@cloud_edition_billing_rate_limit_check("knowledge")
|
||||||
@console_ns.expect(console_ns.models[KnowledgeConfig.__name__])
|
@console_ns.expect(console_ns.models[KnowledgeConfig.__name__])
|
||||||
@console_ns.response(200, "Documents created successfully", console_ns.models[DatasetAndDocumentResponse.__name__])
|
|
||||||
def post(self, dataset_id):
|
def post(self, dataset_id):
|
||||||
current_user, _ = current_account_with_tenant()
|
current_user, _ = current_account_with_tenant()
|
||||||
dataset_id = str(dataset_id)
|
dataset_id = str(dataset_id)
|
||||||
@ -481,9 +398,7 @@ class DatasetDocumentListApi(Resource):
|
|||||||
except ModelCurrentlyNotSupportError:
|
except ModelCurrentlyNotSupportError:
|
||||||
raise ProviderModelCurrentlyNotSupportError()
|
raise ProviderModelCurrentlyNotSupportError()
|
||||||
|
|
||||||
return DatasetAndDocumentResponse.model_validate(
|
return {"dataset": dataset, "documents": documents, "batch": batch}
|
||||||
{"dataset": dataset, "documents": documents, "batch": batch}, from_attributes=True
|
|
||||||
).model_dump(mode="json")
|
|
||||||
|
|
||||||
@setup_required
|
@setup_required
|
||||||
@login_required
|
@login_required
|
||||||
@ -511,13 +426,12 @@ class DatasetInitApi(Resource):
|
|||||||
@console_ns.doc("init_dataset")
|
@console_ns.doc("init_dataset")
|
||||||
@console_ns.doc(description="Initialize dataset with documents")
|
@console_ns.doc(description="Initialize dataset with documents")
|
||||||
@console_ns.expect(console_ns.models[KnowledgeConfig.__name__])
|
@console_ns.expect(console_ns.models[KnowledgeConfig.__name__])
|
||||||
@console_ns.response(
|
@console_ns.response(201, "Dataset initialized successfully", dataset_and_document_model)
|
||||||
201, "Dataset initialized successfully", console_ns.models[DatasetAndDocumentResponse.__name__]
|
|
||||||
)
|
|
||||||
@console_ns.response(400, "Invalid request parameters")
|
@console_ns.response(400, "Invalid request parameters")
|
||||||
@setup_required
|
@setup_required
|
||||||
@login_required
|
@login_required
|
||||||
@account_initialization_required
|
@account_initialization_required
|
||||||
|
@marshal_with(dataset_and_document_model)
|
||||||
@cloud_edition_billing_resource_check("vector_space")
|
@cloud_edition_billing_resource_check("vector_space")
|
||||||
@cloud_edition_billing_rate_limit_check("knowledge")
|
@cloud_edition_billing_rate_limit_check("knowledge")
|
||||||
def post(self):
|
def post(self):
|
||||||
@ -565,9 +479,9 @@ class DatasetInitApi(Resource):
|
|||||||
except ModelCurrentlyNotSupportError:
|
except ModelCurrentlyNotSupportError:
|
||||||
raise ProviderModelCurrentlyNotSupportError()
|
raise ProviderModelCurrentlyNotSupportError()
|
||||||
|
|
||||||
return DatasetAndDocumentResponse.model_validate(
|
response = {"dataset": dataset, "documents": documents, "batch": batch}
|
||||||
{"dataset": dataset, "documents": documents, "batch": batch}, from_attributes=True
|
|
||||||
).model_dump(mode="json")
|
return response
|
||||||
|
|
||||||
|
|
||||||
@console_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/indexing-estimate")
|
@console_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/indexing-estimate")
|
||||||
@ -1074,7 +988,15 @@ class DocumentMetadataApi(DocumentResource):
|
|||||||
@console_ns.doc("update_document_metadata")
|
@console_ns.doc("update_document_metadata")
|
||||||
@console_ns.doc(description="Update document metadata")
|
@console_ns.doc(description="Update document metadata")
|
||||||
@console_ns.doc(params={"dataset_id": "Dataset ID", "document_id": "Document ID"})
|
@console_ns.doc(params={"dataset_id": "Dataset ID", "document_id": "Document ID"})
|
||||||
@console_ns.expect(console_ns.models[DocumentMetadataUpdatePayload.__name__])
|
@console_ns.expect(
|
||||||
|
console_ns.model(
|
||||||
|
"UpdateDocumentMetadataRequest",
|
||||||
|
{
|
||||||
|
"doc_type": fields.String(description="Document type"),
|
||||||
|
"doc_metadata": fields.Raw(description="Document metadata"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
)
|
||||||
@console_ns.response(200, "Document metadata updated successfully")
|
@console_ns.response(200, "Document metadata updated successfully")
|
||||||
@console_ns.response(404, "Document not found")
|
@console_ns.response(404, "Document not found")
|
||||||
@console_ns.response(403, "Permission denied")
|
@console_ns.response(403, "Permission denied")
|
||||||
@ -1087,10 +1009,10 @@ class DocumentMetadataApi(DocumentResource):
|
|||||||
document_id = str(document_id)
|
document_id = str(document_id)
|
||||||
document = self.get_document(dataset_id, document_id)
|
document = self.get_document(dataset_id, document_id)
|
||||||
|
|
||||||
req_data = DocumentMetadataUpdatePayload.model_validate(request.get_json() or {})
|
req_data = request.get_json()
|
||||||
|
|
||||||
doc_type = req_data.doc_type
|
doc_type = req_data.get("doc_type")
|
||||||
doc_metadata = req_data.doc_metadata
|
doc_metadata = req_data.get("doc_metadata")
|
||||||
|
|
||||||
# The role of the current user in the ta table must be admin, owner, dataset_operator, or editor
|
# The role of the current user in the ta table must be admin, owner, dataset_operator, or editor
|
||||||
if not current_user.is_dataset_editor:
|
if not current_user.is_dataset_editor:
|
||||||
@ -1272,7 +1194,7 @@ class DocumentRenameApi(DocumentResource):
|
|||||||
@setup_required
|
@setup_required
|
||||||
@login_required
|
@login_required
|
||||||
@account_initialization_required
|
@account_initialization_required
|
||||||
@console_ns.response(200, "Document renamed successfully", console_ns.models[DocumentResponse.__name__])
|
@marshal_with(document_model)
|
||||||
@console_ns.expect(console_ns.models[DocumentRenamePayload.__name__])
|
@console_ns.expect(console_ns.models[DocumentRenamePayload.__name__])
|
||||||
def post(self, dataset_id, document_id):
|
def post(self, dataset_id, document_id):
|
||||||
# The role of the current user in the ta table must be admin, owner, editor, or dataset_operator
|
# The role of the current user in the ta table must be admin, owner, editor, or dataset_operator
|
||||||
@ -1290,7 +1212,7 @@ class DocumentRenameApi(DocumentResource):
|
|||||||
except services.errors.document.DocumentIndexingError:
|
except services.errors.document.DocumentIndexingError:
|
||||||
raise DocumentIndexingError("Cannot delete document during indexing.")
|
raise DocumentIndexingError("Cannot delete document during indexing.")
|
||||||
|
|
||||||
return DocumentResponse.model_validate(document, from_attributes=True).model_dump(mode="json")
|
return document
|
||||||
|
|
||||||
|
|
||||||
@console_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/website-sync")
|
@console_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/website-sync")
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import uuid
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource, marshal
|
from flask_restx import Resource, marshal
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy import String, cast, func, or_, select
|
from sqlalchemy import String, cast, func, or_, select
|
||||||
from sqlalchemy.dialects.postgresql import JSONB
|
from sqlalchemy.dialects.postgresql import JSONB
|
||||||
@ -31,7 +32,6 @@ from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
|||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from fields.segment_fields import child_chunk_fields, segment_fields
|
from fields.segment_fields import child_chunk_fields, segment_fields
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from libs.helper import escape_like_pattern
|
from libs.helper import escape_like_pattern
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.dataset import ChildChunk, DocumentSegment
|
from models.dataset import ChildChunk, DocumentSegment
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from flask_restx import marshal
|
from flask_restx import marshal
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
|
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
|
||||||
|
|
||||||
@ -20,7 +21,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from fields.hit_testing_fields import hit_testing_record_fields
|
from fields.hit_testing_fields import hit_testing_record_fields
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
from services.dataset_service import DatasetService
|
from services.dataset_service import DatasetService
|
||||||
|
|||||||
@ -2,6 +2,8 @@ from typing import Any
|
|||||||
|
|
||||||
from flask import make_response, redirect, request
|
from flask import make_response, redirect, request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from werkzeug.exceptions import Forbidden, NotFound
|
from werkzeug.exceptions import Forbidden, NotFound
|
||||||
|
|
||||||
@ -10,8 +12,6 @@ from controllers.common.schema import register_schema_models
|
|||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
||||||
from core.plugin.impl.oauth import OAuthHandler
|
from core.plugin.impl.oauth import OAuthHandler
|
||||||
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.provider_ids import DatasourceProviderID
|
from models.provider_ids import DatasourceProviderID
|
||||||
from services.datasource_provider_service import DatasourceProviderService
|
from services.datasource_provider_service import DatasourceProviderService
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from typing import Any, NoReturn
|
|||||||
|
|
||||||
from flask import Response, request
|
from flask import Response, request
|
||||||
from flask_restx import Resource, marshal, marshal_with
|
from flask_restx import Resource, marshal, marshal_with
|
||||||
|
from graphon.variables.types import SegmentType
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import Forbidden
|
from werkzeug.exceptions import Forbidden
|
||||||
@ -27,7 +28,6 @@ from core.workflow.variable_prefixes import CONVERSATION_VARIABLE_NODE_ID, SYSTE
|
|||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories.file_factory import build_from_mapping, build_from_mappings
|
from factories.file_factory import build_from_mapping, build_from_mappings
|
||||||
from factories.variable_factory import build_segment_with_type
|
from factories.variable_factory import build_segment_with_type
|
||||||
from graphon.variables.types import SegmentType
|
|
||||||
from libs.login import current_user, login_required
|
from libs.login import current_user, login_required
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.dataset import Pipeline
|
from models.dataset import Pipeline
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from typing import Any, Literal, cast
|
|||||||
|
|
||||||
from flask import abort, request
|
from flask import abort, request
|
||||||
from flask_restx import Resource, marshal_with # type: ignore
|
from flask_restx import Resource, marshal_with # type: ignore
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, ValidationError
|
from pydantic import BaseModel, Field, ValidationError
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, Forbidden, InternalServerError, NotFound
|
from werkzeug.exceptions import BadRequest, Forbidden, InternalServerError, NotFound
|
||||||
@ -40,7 +41,6 @@ from core.app.apps.pipeline.pipeline_generator import PipelineGenerator
|
|||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import variable_factory
|
from factories import variable_factory
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import TimestampField, UUIDStrOrEmpty
|
from libs.helper import TimestampField, UUIDStrOrEmpty
|
||||||
from libs.login import current_account_with_tenant, current_user, login_required
|
from libs.login import current_account_with_tenant, current_user, login_required
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
import services
|
import services
|
||||||
@ -19,7 +20,6 @@ from controllers.console.app.error import (
|
|||||||
)
|
)
|
||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
from services.errors.audio import (
|
from services.errors.audio import (
|
||||||
AudioTooLargeServiceError,
|
AudioTooLargeServiceError,
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
from typing import Any, Literal
|
from typing import Any, Literal
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
@ -25,7 +26,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, TypeAdapter
|
from pydantic import BaseModel, TypeAdapter
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
@ -24,7 +25,6 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
|||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
from models.enums import FeedbackRating
|
from models.enums import FeedbackRating
|
||||||
|
|||||||
@ -3,6 +3,8 @@ from typing import Any, Literal, cast
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource, fields, marshal, marshal_with
|
from flask_restx import Resource, fields, marshal, marshal_with
|
||||||
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
|
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
|
||||||
@ -59,8 +61,6 @@ from fields.workflow_fields import (
|
|||||||
workflow_fields,
|
workflow_fields,
|
||||||
workflow_partial_fields,
|
workflow_partial_fields,
|
||||||
)
|
)
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
from controllers.common.controller_schemas import WorkflowRunPayload
|
from controllers.common.controller_schemas import WorkflowRunPayload
|
||||||
@ -21,8 +23,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
from models.model import AppMode, InstalledApp
|
from models.model import AppMode, InstalledApp
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import urllib.parse
|
|||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.file import helpers as file_helpers
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
import services
|
import services
|
||||||
@ -15,7 +16,6 @@ from controllers.console import console_ns
|
|||||||
from core.helper import ssrf_proxy
|
from core.helper import ssrf_proxy
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
||||||
from graphon.file import helpers as file_helpers
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.file_service import FileService
|
from services.file_service import FileService
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
from flask_restx import Resource, fields
|
from flask_restx import Resource, fields
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.agent_service import AgentService
|
from services.agent_service import AgentService
|
||||||
|
|
||||||
|
|||||||
@ -2,13 +2,13 @@ from typing import Any
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.plugin.impl.exc import PluginPermissionDeniedError
|
from core.plugin.impl.exc import PluginPermissionDeniedError
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.plugin.endpoint_service import EndpointService
|
from services.plugin.endpoint_service import EndpointService
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from werkzeug.exceptions import Forbidden
|
from werkzeug.exceptions import Forbidden
|
||||||
|
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import TenantAccountRole
|
from models import TenantAccountRole
|
||||||
from services.model_load_balancing_service import ModelLoadBalancingService
|
from services.model_load_balancing_service import ModelLoadBalancingService
|
||||||
|
|||||||
@ -3,13 +3,13 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request, send_file
|
from flask import request, send_file
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
|
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.billing_service import BillingService
|
from services.billing_service import BillingService
|
||||||
|
|||||||
@ -3,14 +3,14 @@ from typing import Any, cast
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
|
|
||||||
from controllers.common.schema import register_enum_models, register_schema_models
|
from controllers.common.schema import register_enum_models, register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from graphon.model_runtime.errors.validate import CredentialsValidateFailedError
|
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.model_load_balancing_service import ModelLoadBalancingService
|
from services.model_load_balancing_service import ModelLoadBalancingService
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request, send_file
|
from flask import request, send_file
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from werkzeug.datastructures import FileStorage
|
from werkzeug.datastructures import FileStorage
|
||||||
from werkzeug.exceptions import Forbidden
|
from werkzeug.exceptions import Forbidden
|
||||||
@ -14,7 +15,6 @@ from controllers.console import console_ns
|
|||||||
from controllers.console.workspace import plugin_permission_required
|
from controllers.console.workspace import plugin_permission_required
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.plugin.impl.exc import PluginDaemonClientSideError
|
from core.plugin.impl.exc import PluginDaemonClientSideError
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
|
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
|
||||||
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
|
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
|
||||||
|
|||||||
@ -5,6 +5,7 @@ from urllib.parse import urlparse
|
|||||||
|
|
||||||
from flask import make_response, redirect, request, send_file
|
from flask import make_response, redirect, request, send_file
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, HttpUrl, field_validator, model_validator
|
from pydantic import BaseModel, Field, HttpUrl, field_validator, model_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import Forbidden
|
from werkzeug.exceptions import Forbidden
|
||||||
@ -27,7 +28,6 @@ from core.plugin.entities.plugin_daemon import CredentialType
|
|||||||
from core.plugin.impl.oauth import OAuthHandler
|
from core.plugin.impl.oauth import OAuthHandler
|
||||||
from core.tools.entities.tool_entities import ApiProviderSchemaType, WorkflowToolParameterConfiguration
|
from core.tools.entities.tool_entities import ApiProviderSchemaType, WorkflowToolParameterConfiguration
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.helper import alphanumeric, uuid_value
|
from libs.helper import alphanumeric, uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.provider_ids import ToolProviderID
|
from models.provider_ids import ToolProviderID
|
||||||
|
|||||||
@ -3,6 +3,7 @@ from typing import Any
|
|||||||
|
|
||||||
from flask import make_response, redirect, request
|
from flask import make_response, redirect, request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, model_validator
|
from pydantic import BaseModel, model_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, Forbidden
|
from werkzeug.exceptions import BadRequest, Forbidden
|
||||||
@ -15,7 +16,6 @@ from core.plugin.impl.oauth import OAuthHandler
|
|||||||
from core.trigger.entities.entities import SubscriptionBuilderUpdater
|
from core.trigger.entities.entities import SubscriptionBuilderUpdater
|
||||||
from core.trigger.trigger_manager import TriggerManager
|
from core.trigger.trigger_manager import TriggerManager
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.login import current_user, login_required
|
from libs.login import current_user, login_required
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
from models.provider_ids import TriggerProviderID
|
from models.provider_ids import TriggerProviderID
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
from controllers.console.wraps import setup_required
|
from controllers.console.wraps import setup_required
|
||||||
from controllers.inner_api import inner_api_ns
|
from controllers.inner_api import inner_api_ns
|
||||||
@ -29,7 +30,6 @@ from core.plugin.entities.request import (
|
|||||||
)
|
)
|
||||||
from core.tools.entities.tool_entities import ToolProviderType
|
from core.tools.entities.tool_entities import ToolProviderType
|
||||||
from core.tools.signature import get_signed_file_url_for_plugin
|
from core.tools.signature import get_signed_file_url_for_plugin
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from libs.helper import length_prefixed_response
|
from libs.helper import length_prefixed_response
|
||||||
from models import Account, Tenant
|
from models import Account, Tenant
|
||||||
from models.model import EndUser
|
from models.model import EndUser
|
||||||
|
|||||||
@ -20,13 +20,10 @@ class TenantUserPayload(BaseModel):
|
|||||||
|
|
||||||
def get_user(tenant_id: str, user_id: str | None) -> EndUser:
|
def get_user(tenant_id: str, user_id: str | None) -> EndUser:
|
||||||
"""
|
"""
|
||||||
Get current user.
|
Get current user
|
||||||
|
|
||||||
NOTE: user_id is not trusted, it could be maliciously set to any value.
|
NOTE: user_id is not trusted, it could be maliciously set to any value.
|
||||||
As a result, it could only be considered as an end user id. Even when a
|
As a result, it could only be considered as an end user id.
|
||||||
concrete end-user ID is supplied, lookups must stay tenant-scoped so one
|
|
||||||
tenant cannot bind another tenant's user record into the plugin request
|
|
||||||
context.
|
|
||||||
"""
|
"""
|
||||||
if not user_id:
|
if not user_id:
|
||||||
user_id = DefaultEndUserSessionID.DEFAULT_SESSION_ID
|
user_id = DefaultEndUserSessionID.DEFAULT_SESSION_ID
|
||||||
@ -45,14 +42,7 @@ def get_user(tenant_id: str, user_id: str | None) -> EndUser:
|
|||||||
.limit(1)
|
.limit(1)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
user_model = session.scalar(
|
user_model = session.get(EndUser, user_id)
|
||||||
select(EndUser)
|
|
||||||
.where(
|
|
||||||
EndUser.id == user_id,
|
|
||||||
EndUser.tenant_id == tenant_id,
|
|
||||||
)
|
|
||||||
.limit(1)
|
|
||||||
)
|
|
||||||
|
|
||||||
if not user_model:
|
if not user_model:
|
||||||
user_model = EndUser(
|
user_model = EndUser(
|
||||||
|
|||||||
@ -2,6 +2,7 @@ from typing import Any, Union
|
|||||||
|
|
||||||
from flask import Response
|
from flask import Response
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.variables.input_entities import VariableEntity, VariableEntityType
|
||||||
from pydantic import BaseModel, Field, ValidationError
|
from pydantic import BaseModel, Field, ValidationError
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
@ -11,7 +12,6 @@ from controllers.mcp import mcp_ns
|
|||||||
from core.mcp import types as mcp_types
|
from core.mcp import types as mcp_types
|
||||||
from core.mcp.server.streamable_http import handle_mcp_request
|
from core.mcp.server.streamable_http import handle_mcp_request
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.variables.input_entities import VariableEntity, VariableEntityType
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from models.enums import AppMCPServerStatus
|
from models.enums import AppMCPServerStatus
|
||||||
from models.model import App, AppMCPServer, AppMode, EndUser
|
from models.model import App, AppMCPServer, AppMode, EndUser
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
import services
|
import services
|
||||||
@ -21,7 +22,6 @@ from controllers.service_api.app.error import (
|
|||||||
)
|
)
|
||||||
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from models.model import App, EndUser
|
from models.model import App, EndUser
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
from services.errors.audio import (
|
from services.errors.audio import (
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from uuid import UUID
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import UUIDStrOrEmpty
|
from libs.helper import UUIDStrOrEmpty
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
|
|||||||
@ -3,6 +3,7 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.variables.types import SegmentType
|
||||||
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, NotFound
|
from werkzeug.exceptions import BadRequest, NotFound
|
||||||
@ -21,7 +22,6 @@ from fields.conversation_fields import (
|
|||||||
ConversationInfiniteScrollPagination,
|
ConversationInfiniteScrollPagination,
|
||||||
SimpleConversation,
|
SimpleConversation,
|
||||||
)
|
)
|
||||||
from graphon.variables.types import SegmentType
|
|
||||||
from libs.helper import UUIDStrOrEmpty
|
from libs.helper import UUIDStrOrEmpty
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
from services.conversation_service import ConversationService
|
from services.conversation_service import ConversationService
|
||||||
|
|||||||
@ -2,6 +2,7 @@ from typing import Any, Literal, cast
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import marshal
|
from flask_restx import marshal
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
||||||
from werkzeug.exceptions import Forbidden, NotFound
|
from werkzeug.exceptions import Forbidden, NotFound
|
||||||
|
|
||||||
@ -18,7 +19,6 @@ from core.plugin.impl.model_runtime_factory import create_plugin_provider_manage
|
|||||||
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
||||||
from fields.dataset_fields import dataset_detail_fields
|
from fields.dataset_fields import dataset_detail_fields
|
||||||
from fields.tag_fields import DataSetTag
|
from fields.tag_fields import DataSetTag
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
from models.dataset import DatasetPermissionEnum
|
from models.dataset import DatasetPermissionEnum
|
||||||
|
|||||||
@ -2,6 +2,7 @@ from typing import Any
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import marshal
|
from flask_restx import marshal
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
@ -22,7 +23,6 @@ from core.model_manager import ModelManager
|
|||||||
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
from core.rag.index_processor.constant.index_type import IndexTechniqueType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.segment_fields import child_chunk_fields, segment_fields
|
from fields.segment_fields import child_chunk_fields, segment_fields
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
from models.dataset import Dataset
|
from models.dataset import Dataset
|
||||||
from services.dataset_service import DatasetService, DocumentService, SegmentService
|
from services.dataset_service import DatasetService, DocumentService, SegmentService
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.wraps import validate_dataset_token
|
from controllers.service_api.wraps import validate_dataset_token
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from services.model_provider_service import ModelProviderService
|
from services.model_provider_service import ModelProviderService
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import fields, marshal_with
|
from flask_restx import fields, marshal_with
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import field_validator
|
from pydantic import field_validator
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
@ -21,7 +22,6 @@ from controllers.web.error import (
|
|||||||
)
|
)
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import App
|
from models.model import App
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Any, Literal
|
from typing import Any, Literal
|
||||||
|
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
@ -25,7 +26,6 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, TypeAdapter
|
from pydantic import BaseModel, Field, TypeAdapter
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
@ -23,7 +24,6 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
|||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import SuggestedQuestionsResponse, WebMessageInfiniteScrollPagination, WebMessageListItem
|
from fields.message_fields import SuggestedQuestionsResponse, WebMessageInfiniteScrollPagination, WebMessageListItem
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from models.enums import FeedbackRating
|
from models.enums import FeedbackRating
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
|
from graphon.file import helpers as file_helpers
|
||||||
from pydantic import BaseModel, Field, HttpUrl
|
from pydantic import BaseModel, Field, HttpUrl
|
||||||
|
|
||||||
import services
|
import services
|
||||||
@ -13,7 +14,6 @@ from controllers.common.errors import (
|
|||||||
from core.helper import ssrf_proxy
|
from core.helper import ssrf_proxy
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
||||||
from graphon.file import helpers as file_helpers
|
|
||||||
from services.file_service import FileService
|
from services.file_service import FileService
|
||||||
|
|
||||||
from ..common.schema import register_schema_models
|
from ..common.schema import register_schema_models
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
from controllers.common.controller_schemas import WorkflowRunPayload
|
from controllers.common.controller_schemas import WorkflowRunPayload
|
||||||
@ -22,8 +24,6 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
from services.app_generate_service import AppGenerateService
|
from services.app_generate_service import AppGenerateService
|
||||||
|
|||||||
@ -4,6 +4,20 @@ import uuid
|
|||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from typing import Union, cast
|
from typing import Union, cast
|
||||||
|
|
||||||
|
from graphon.file import file_manager
|
||||||
|
from graphon.model_runtime.entities import (
|
||||||
|
AssistantPromptMessage,
|
||||||
|
LLMUsage,
|
||||||
|
PromptMessage,
|
||||||
|
PromptMessageTool,
|
||||||
|
SystemPromptMessage,
|
||||||
|
TextPromptMessageContent,
|
||||||
|
ToolPromptMessage,
|
||||||
|
UserPromptMessage,
|
||||||
|
)
|
||||||
|
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelFeature
|
||||||
|
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import func, select
|
||||||
|
|
||||||
from core.agent.entities import AgentEntity, AgentToolEntity
|
from core.agent.entities import AgentEntity, AgentToolEntity
|
||||||
@ -29,20 +43,6 @@ from core.tools.tool_manager import ToolManager
|
|||||||
from core.tools.utils.dataset_retriever_tool import DatasetRetrieverTool
|
from core.tools.utils.dataset_retriever_tool import DatasetRetrieverTool
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.file import file_manager
|
|
||||||
from graphon.model_runtime.entities import (
|
|
||||||
AssistantPromptMessage,
|
|
||||||
LLMUsage,
|
|
||||||
PromptMessage,
|
|
||||||
PromptMessageTool,
|
|
||||||
SystemPromptMessage,
|
|
||||||
TextPromptMessageContent,
|
|
||||||
ToolPromptMessage,
|
|
||||||
UserPromptMessage,
|
|
||||||
)
|
|
||||||
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
|
||||||
from graphon.model_runtime.entities.model_entities import ModelFeature
|
|
||||||
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
from models.model import Conversation, Message, MessageAgentThought, MessageFile
|
from models.model import Conversation, Message, MessageAgentThought, MessageFile
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,15 @@ from abc import ABC, abstractmethod
|
|||||||
from collections.abc import Generator, Mapping, Sequence
|
from collections.abc import Generator, Mapping, Sequence
|
||||||
from typing import Any, TypedDict
|
from typing import Any, TypedDict
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
||||||
|
from graphon.model_runtime.entities.message_entities import (
|
||||||
|
AssistantPromptMessage,
|
||||||
|
PromptMessage,
|
||||||
|
PromptMessageTool,
|
||||||
|
ToolPromptMessage,
|
||||||
|
UserPromptMessage,
|
||||||
|
)
|
||||||
|
|
||||||
from core.agent.base_agent_runner import BaseAgentRunner
|
from core.agent.base_agent_runner import BaseAgentRunner
|
||||||
from core.agent.entities import AgentScratchpadUnit
|
from core.agent.entities import AgentScratchpadUnit
|
||||||
from core.agent.errors import AgentMaxIterationError
|
from core.agent.errors import AgentMaxIterationError
|
||||||
@ -15,14 +24,6 @@ from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransfo
|
|||||||
from core.tools.__base.tool import Tool
|
from core.tools.__base.tool import Tool
|
||||||
from core.tools.entities.tool_entities import ToolInvokeMeta
|
from core.tools.entities.tool_entities import ToolInvokeMeta
|
||||||
from core.tools.tool_engine import ToolEngine
|
from core.tools.tool_engine import ToolEngine
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
|
||||||
from graphon.model_runtime.entities.message_entities import (
|
|
||||||
AssistantPromptMessage,
|
|
||||||
PromptMessage,
|
|
||||||
PromptMessageTool,
|
|
||||||
ToolPromptMessage,
|
|
||||||
UserPromptMessage,
|
|
||||||
)
|
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from core.agent.cot_agent_runner import CotAgentRunner
|
|
||||||
from graphon.file import file_manager
|
from graphon.file import file_manager
|
||||||
from graphon.model_runtime.entities import (
|
from graphon.model_runtime.entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
@ -12,6 +11,8 @@ from graphon.model_runtime.entities import (
|
|||||||
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
|
from core.agent.cot_agent_runner import CotAgentRunner
|
||||||
|
|
||||||
|
|
||||||
class CotChatAgentRunner(CotAgentRunner):
|
class CotChatAgentRunner(CotAgentRunner):
|
||||||
def _organize_system_prompt(self) -> SystemPromptMessage:
|
def _organize_system_prompt(self) -> SystemPromptMessage:
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from core.agent.cot_agent_runner import CotAgentRunner
|
|
||||||
from graphon.model_runtime.entities.message_entities import (
|
from graphon.model_runtime.entities.message_entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
PromptMessage,
|
PromptMessage,
|
||||||
@ -9,6 +8,8 @@ from graphon.model_runtime.entities.message_entities import (
|
|||||||
)
|
)
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
|
from core.agent.cot_agent_runner import CotAgentRunner
|
||||||
|
|
||||||
|
|
||||||
class CotCompletionAgentRunner(CotAgentRunner):
|
class CotCompletionAgentRunner(CotAgentRunner):
|
||||||
def _organize_instruction_prompt(self) -> str:
|
def _organize_instruction_prompt(self) -> str:
|
||||||
|
|||||||
@ -4,13 +4,6 @@ from collections.abc import Generator
|
|||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
from core.agent.base_agent_runner import BaseAgentRunner
|
|
||||||
from core.agent.errors import AgentMaxIterationError
|
|
||||||
from core.app.apps.base_app_queue_manager import PublishFrom
|
|
||||||
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
|
||||||
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
|
||||||
from core.tools.entities.tool_entities import ToolInvokeMeta
|
|
||||||
from core.tools.tool_engine import ToolEngine
|
|
||||||
from graphon.file import file_manager
|
from graphon.file import file_manager
|
||||||
from graphon.model_runtime.entities import (
|
from graphon.model_runtime.entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
@ -26,6 +19,14 @@ from graphon.model_runtime.entities import (
|
|||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
|
|
||||||
|
from core.agent.base_agent_runner import BaseAgentRunner
|
||||||
|
from core.agent.errors import AgentMaxIterationError
|
||||||
|
from core.app.apps.base_app_queue_manager import PublishFrom
|
||||||
|
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
||||||
|
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
||||||
|
from core.tools.entities.tool_entities import ToolInvokeMeta
|
||||||
|
from core.tools.tool_engine import ToolEngine
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -3,9 +3,10 @@ import re
|
|||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
from core.agent.entities import AgentScratchpadUnit
|
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMResultChunk
|
from graphon.model_runtime.entities.llm_entities import LLMResultChunk
|
||||||
|
|
||||||
|
from core.agent.entities import AgentScratchpadUnit
|
||||||
|
|
||||||
|
|
||||||
class CotAgentOutputParser:
|
class CotAgentOutputParser:
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.llm_entities import LLMMode
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
||||||
|
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
|
|
||||||
from core.app.app_config.entities import EasyUIBasedAppConfig
|
from core.app.app_config.entities import EasyUIBasedAppConfig
|
||||||
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
||||||
from core.entities.model_entities import ModelStatus
|
from core.entities.model_entities import ModelStatus
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.plugin.impl.model_runtime_factory import create_plugin_provider_manager
|
from core.plugin.impl.model_runtime_factory import create_plugin_provider_manager
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMMode
|
|
||||||
from graphon.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
|
||||||
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
|
|
||||||
|
|
||||||
class ModelConfigConverter:
|
class ModelConfigConverter:
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
||||||
|
|
||||||
from core.app.app_config.entities import ModelConfigEntity
|
from core.app.app_config.entities import ModelConfigEntity
|
||||||
from core.plugin.impl.model_runtime_factory import create_plugin_model_assembly
|
from core.plugin.impl.model_runtime_factory import create_plugin_model_assembly
|
||||||
from graphon.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
|
||||||
from models.model import AppModelConfigDict
|
from models.model import AppModelConfigDict
|
||||||
from models.provider_ids import ModelProviderID
|
from models.provider_ids import ModelProviderID
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.message_entities import PromptMessageRole
|
||||||
|
|
||||||
from core.app.app_config.entities import (
|
from core.app.app_config.entities import (
|
||||||
AdvancedChatMessageEntity,
|
AdvancedChatMessageEntity,
|
||||||
AdvancedChatPromptTemplateEntity,
|
AdvancedChatPromptTemplateEntity,
|
||||||
@ -7,7 +9,6 @@ from core.app.app_config.entities import (
|
|||||||
PromptTemplateEntity,
|
PromptTemplateEntity,
|
||||||
)
|
)
|
||||||
from core.prompt.simple_prompt_transform import ModelMode
|
from core.prompt.simple_prompt_transform import ModelMode
|
||||||
from graphon.model_runtime.entities.message_entities import PromptMessageRole
|
|
||||||
from models.model import AppMode, AppModelConfigDict
|
from models.model import AppMode, AppModelConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
from enum import StrEnum, auto
|
from enum import StrEnum, auto
|
||||||
from typing import Any, Literal
|
from typing import Any, Literal
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
|
||||||
|
|
||||||
from core.rag.data_post_processor.data_post_processor import RerankingModelDict, WeightsDict
|
|
||||||
from core.rag.entities import MetadataFilteringCondition
|
|
||||||
from graphon.file import FileUploadConfig
|
from graphon.file import FileUploadConfig
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMMode
|
from graphon.model_runtime.entities.llm_entities import LLMMode
|
||||||
from graphon.model_runtime.entities.message_entities import PromptMessageRole
|
from graphon.model_runtime.entities.message_entities import PromptMessageRole
|
||||||
from graphon.variables.input_entities import VariableEntity as WorkflowVariableEntity
|
from graphon.variables.input_entities import VariableEntity as WorkflowVariableEntity
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
from core.rag.data_post_processor.data_post_processor import RerankingModelDict, WeightsDict
|
||||||
|
from core.rag.entities import MetadataFilteringCondition
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from constants import DEFAULT_FILE_NUMBER_LIMITS
|
|
||||||
from graphon.file import FileUploadConfig
|
from graphon.file import FileUploadConfig
|
||||||
|
|
||||||
|
from constants import DEFAULT_FILE_NUMBER_LIMITS
|
||||||
|
|
||||||
|
|
||||||
class FileUploadConfigManager:
|
class FileUploadConfigManager:
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from core.app.app_config.entities import RagPipelineVariableEntity
|
|
||||||
from graphon.variables.input_entities import VariableEntity
|
from graphon.variables.input_entities import VariableEntity
|
||||||
|
|
||||||
|
from core.app.app_config.entities import RagPipelineVariableEntity
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,11 @@ from constants import UUID_NIL
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from controllers.console.app.workflow import LoopNodeRunPayload
|
from controllers.console.app.workflow import LoopNodeRunPayload
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
|
from graphon.runtime import GraphRuntimeState
|
||||||
|
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
|
|
||||||
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
|
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
|
||||||
from core.app.apps.advanced_chat.app_config_manager import AdvancedChatAppConfigManager
|
from core.app.apps.advanced_chat.app_config_manager import AdvancedChatAppConfigManager
|
||||||
from core.app.apps.advanced_chat.app_runner import AdvancedChatAppRunner
|
from core.app.apps.advanced_chat.app_runner import AdvancedChatAppRunner
|
||||||
@ -43,10 +48,6 @@ from core.repositories import DifyCoreRepositoryFactory
|
|||||||
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from graphon.runtime import GraphRuntimeState
|
|
||||||
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
from models import Account, App, Conversation, EndUser, Message, Workflow, WorkflowNodeExecutionTriggeredFrom
|
from models import Account, App, Conversation, EndUser, Message, Workflow, WorkflowNodeExecutionTriggeredFrom
|
||||||
from models.enums import WorkflowRunTriggeredFrom
|
from models.enums import WorkflowRunTriggeredFrom
|
||||||
|
|||||||
@ -3,6 +3,12 @@ import time
|
|||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
|
from graphon.enums import WorkflowType
|
||||||
|
from graphon.graph_engine.command_channels import RedisChannel
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from graphon.variable_loader import VariableLoader
|
||||||
|
from graphon.variables.variables import Variable
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
|
|
||||||
@ -37,12 +43,6 @@ from core.workflow.workflow_entry import WorkflowEntry
|
|||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
||||||
from graphon.enums import WorkflowType
|
|
||||||
from graphon.graph_engine.command_channels import RedisChannel
|
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from graphon.variable_loader import VariableLoader
|
|
||||||
from graphon.variables.variables import Variable
|
|
||||||
from models import Workflow
|
from models import Workflow
|
||||||
from models.model import App, Conversation, Message, MessageAnnotation
|
from models.model import App, Conversation, Message, MessageAnnotation
|
||||||
from models.workflow import ConversationVariable
|
from models.workflow import ConversationVariable
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from collections.abc import Generator, Mapping
|
|||||||
from typing import Any, Literal, overload
|
from typing import Any, Literal, overload
|
||||||
|
|
||||||
from flask import Flask, current_app
|
from flask import Flask, current_app
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
@ -23,7 +24,6 @@ from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity, In
|
|||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
from models import Account, App, EndUser
|
from models import Account, App, EndUser
|
||||||
from services.conversation_service import ConversationService
|
from services.conversation_service import ConversationService
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.llm_entities import LLMMode
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
|
||||||
|
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from core.agent.cot_chat_agent_runner import CotChatAgentRunner
|
from core.agent.cot_chat_agent_runner import CotChatAgentRunner
|
||||||
@ -16,9 +19,6 @@ from core.memory.token_buffer_memory import TokenBufferMemory
|
|||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMMode
|
|
||||||
from graphon.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
|
|
||||||
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from models.model import App, Conversation, Message
|
from models.model import App, Conversation, Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -3,10 +3,11 @@ from abc import ABC, abstractmethod
|
|||||||
from collections.abc import Generator, Mapping
|
from collections.abc import Generator, Mapping
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.app.entities.task_entities import AppBlockingResponse, AppStreamResponse
|
from core.app.entities.task_entities import AppBlockingResponse, AppStreamResponse
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ from enum import IntEnum, auto
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from cachetools import TTLCache, cachedmethod
|
from cachetools import TTLCache, cachedmethod
|
||||||
|
from graphon.runtime import GraphRuntimeState
|
||||||
from redis.exceptions import RedisError
|
from redis.exceptions import RedisError
|
||||||
from sqlalchemy.orm import DeclarativeMeta
|
from sqlalchemy.orm import DeclarativeMeta
|
||||||
|
|
||||||
@ -21,7 +22,6 @@ from core.app.entities.queue_entities import (
|
|||||||
WorkflowQueueMessage,
|
WorkflowQueueMessage,
|
||||||
)
|
)
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from graphon.runtime import GraphRuntimeState
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,17 @@ from collections.abc import Generator, Mapping, Sequence
|
|||||||
from mimetypes import guess_extension
|
from mimetypes import guess_extension
|
||||||
from typing import TYPE_CHECKING, Any, Union
|
from typing import TYPE_CHECKING, Any, Union
|
||||||
|
|
||||||
|
from graphon.file import FileTransferMethod, FileType
|
||||||
|
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
||||||
|
from graphon.model_runtime.entities.message_entities import (
|
||||||
|
AssistantPromptMessage,
|
||||||
|
ImagePromptMessageContent,
|
||||||
|
PromptMessage,
|
||||||
|
TextPromptMessageContent,
|
||||||
|
)
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelPropertyKey
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeBadRequestError
|
||||||
|
|
||||||
from core.app.app_config.entities import ExternalDataVariableEntity, PromptTemplateEntity
|
from core.app.app_config.entities import ExternalDataVariableEntity, PromptTemplateEntity
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
||||||
from core.app.entities.app_invoke_entities import (
|
from core.app.entities.app_invoke_entities import (
|
||||||
@ -30,16 +41,6 @@ from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, Comp
|
|||||||
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
|
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.file import FileTransferMethod, FileType
|
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
|
||||||
from graphon.model_runtime.entities.message_entities import (
|
|
||||||
AssistantPromptMessage,
|
|
||||||
ImagePromptMessageContent,
|
|
||||||
PromptMessage,
|
|
||||||
TextPromptMessageContent,
|
|
||||||
)
|
|
||||||
from graphon.model_runtime.entities.model_entities import ModelPropertyKey
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeBadRequestError
|
|
||||||
from models.enums import CreatorUserRole, MessageFileBelongsTo
|
from models.enums import CreatorUserRole, MessageFileBelongsTo
|
||||||
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile
|
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from collections.abc import Generator, Mapping
|
|||||||
from typing import Any, Literal, overload
|
from typing import Any, Literal, overload
|
||||||
|
|
||||||
from flask import Flask, copy_current_request_context, current_app
|
from flask import Flask, copy_current_request_context, current_app
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
@ -23,7 +24,6 @@ from core.app.entities.app_invoke_entities import ChatAppGenerateEntity, InvokeF
|
|||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.model import App, EndUser
|
from models.model import App, EndUser
|
||||||
from services.conversation_service import ConversationService
|
from services.conversation_service import ConversationService
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.file import File
|
||||||
|
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
||||||
@ -16,8 +18,6 @@ from core.model_manager import ModelInstance
|
|||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.file import File
|
|
||||||
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
|
|
||||||
from models.model import App, Conversation, Message
|
from models.model import App, Conversation, Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -4,9 +4,10 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
|
||||||
from graphon.runtime import GraphRuntimeState
|
from graphon.runtime import GraphRuntimeState
|
||||||
|
|
||||||
|
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,19 @@ from dataclasses import dataclass
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, NewType, TypedDict, Union
|
from typing import Any, NewType, TypedDict, Union
|
||||||
|
|
||||||
|
from graphon.entities import WorkflowStartReason
|
||||||
|
from graphon.entities.pause_reason import HumanInputRequired
|
||||||
|
from graphon.enums import (
|
||||||
|
BuiltinNodeTypes,
|
||||||
|
WorkflowExecutionStatus,
|
||||||
|
WorkflowNodeExecutionMetadataKey,
|
||||||
|
WorkflowNodeExecutionStatus,
|
||||||
|
)
|
||||||
|
from graphon.file import FILE_MODEL_IDENTITY, File
|
||||||
|
from graphon.runtime import GraphRuntimeState
|
||||||
|
from graphon.variables.segments import ArrayFileSegment, FileSegment, Segment
|
||||||
|
from graphon.variables.variables import Variable
|
||||||
|
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
@ -55,19 +68,6 @@ from core.workflow.human_input_forms import load_form_tokens_by_form_id
|
|||||||
from core.workflow.system_variables import SystemVariableKey, system_variables_to_mapping
|
from core.workflow.system_variables import SystemVariableKey, system_variables_to_mapping
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.entities import WorkflowStartReason
|
|
||||||
from graphon.entities.pause_reason import HumanInputRequired
|
|
||||||
from graphon.enums import (
|
|
||||||
BuiltinNodeTypes,
|
|
||||||
WorkflowExecutionStatus,
|
|
||||||
WorkflowNodeExecutionMetadataKey,
|
|
||||||
WorkflowNodeExecutionStatus,
|
|
||||||
)
|
|
||||||
from graphon.file import FILE_MODEL_IDENTITY, File
|
|
||||||
from graphon.runtime import GraphRuntimeState
|
|
||||||
from graphon.variables.segments import ArrayFileSegment, FileSegment, Segment
|
|
||||||
from graphon.variables.variables import Variable
|
|
||||||
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
|
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models import Account, EndUser
|
from models import Account, EndUser
|
||||||
from models.human_input import HumanInputForm
|
from models.human_input import HumanInputForm
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from collections.abc import Generator, Mapping
|
|||||||
from typing import Any, Literal, overload
|
from typing import Any, Literal, overload
|
||||||
|
|
||||||
from flask import Flask, copy_current_request_context, current_app
|
from flask import Flask, copy_current_request_context, current_app
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
@ -23,7 +24,6 @@ from core.app.entities.app_invoke_entities import CompletionAppGenerateEntity, I
|
|||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from models import Account, App, EndUser, Message
|
from models import Account, App, EndUser, Message
|
||||||
from services.errors.app import MoreLikeThisDisabledError
|
from services.errors.app import MoreLikeThisDisabledError
|
||||||
from services.errors.message import MessageNotExistsError
|
from services.errors.message import MessageNotExistsError
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.file import File
|
||||||
|
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager
|
from core.app.apps.base_app_queue_manager import AppQueueManager
|
||||||
@ -14,8 +16,6 @@ from core.model_manager import ModelInstance
|
|||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.file import File
|
|
||||||
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
|
|
||||||
from models.model import App, Message
|
from models.model import App, Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -10,6 +10,8 @@ from collections.abc import Generator, Mapping
|
|||||||
from typing import Any, Literal, cast, overload
|
from typing import Any, Literal, cast, overload
|
||||||
|
|
||||||
from flask import Flask, current_app
|
from flask import Flask, current_app
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
|
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
@ -41,8 +43,6 @@ from core.repositories.factory import (
|
|||||||
WorkflowNodeExecutionRepository,
|
WorkflowNodeExecutionRepository,
|
||||||
)
|
)
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
from models import Account, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom
|
from models import Account, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom
|
||||||
from models.dataset import Document, DocumentPipelineExecutionLog, Pipeline
|
from models.dataset import Document, DocumentPipelineExecutionLog, Pipeline
|
||||||
|
|||||||
@ -2,6 +2,12 @@ import logging
|
|||||||
import time
|
import time
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.enums import WorkflowType
|
||||||
|
from graphon.graph import Graph
|
||||||
|
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
||||||
|
from graphon.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from graphon.variable_loader import VariableLoader
|
||||||
|
from graphon.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager
|
from core.app.apps.base_app_queue_manager import AppQueueManager
|
||||||
@ -20,12 +26,6 @@ from core.workflow.system_variables import build_bootstrap_variables, build_syst
|
|||||||
from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add_variables_to_pool
|
from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add_variables_to_pool
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.enums import WorkflowType
|
|
||||||
from graphon.graph import Graph
|
|
||||||
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
|
||||||
from graphon.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from graphon.variable_loader import VariableLoader
|
|
||||||
from graphon.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
|
||||||
from models.dataset import Document, Pipeline
|
from models.dataset import Document, Pipeline
|
||||||
from models.model import EndUser
|
from models.model import EndUser
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|||||||
@ -8,6 +8,10 @@ from collections.abc import Generator, Mapping, Sequence
|
|||||||
from typing import TYPE_CHECKING, Any, Literal, overload
|
from typing import TYPE_CHECKING, Any, Literal, overload
|
||||||
|
|
||||||
from flask import Flask, current_app
|
from flask import Flask, current_app
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
|
from graphon.runtime import GraphRuntimeState
|
||||||
|
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
@ -34,10 +38,6 @@ from core.repositories import DifyCoreRepositoryFactory
|
|||||||
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from graphon.runtime import GraphRuntimeState
|
|
||||||
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
from models.enums import WorkflowRunTriggeredFrom
|
from models.enums import WorkflowRunTriggeredFrom
|
||||||
|
|||||||
@ -3,6 +3,12 @@ import time
|
|||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
|
from graphon.enums import WorkflowType
|
||||||
|
from graphon.graph_engine.command_channels import RedisChannel
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from graphon.variable_loader import VariableLoader
|
||||||
|
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager
|
from core.app.apps.base_app_queue_manager import AppQueueManager
|
||||||
from core.app.apps.workflow.app_config_manager import WorkflowAppConfig
|
from core.app.apps.workflow.app_config_manager import WorkflowAppConfig
|
||||||
from core.app.apps.workflow_app_runner import WorkflowBasedAppRunner
|
from core.app.apps.workflow_app_runner import WorkflowBasedAppRunner
|
||||||
@ -15,11 +21,6 @@ from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add
|
|||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
||||||
from graphon.enums import WorkflowType
|
|
||||||
from graphon.graph_engine.command_channels import RedisChannel
|
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from graphon.variable_loader import VariableLoader
|
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,9 @@ from collections.abc import Callable, Generator
|
|||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
|
from graphon.entities import WorkflowStartReason
|
||||||
|
from graphon.enums import WorkflowExecutionStatus
|
||||||
|
from graphon.runtime import GraphRuntimeState
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
|
|
||||||
from constants.tts_auto_play_timeout import TTS_AUTO_PLAY_TIMEOUT, TTS_AUTO_PLAY_YIELD_CPU_TIME
|
from constants.tts_auto_play_timeout import TTS_AUTO_PLAY_TIMEOUT, TTS_AUTO_PLAY_YIELD_CPU_TIME
|
||||||
@ -58,9 +61,6 @@ from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
|||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.workflow.system_variables import build_system_variables
|
from core.workflow.system_variables import build_system_variables
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.entities import WorkflowStartReason
|
|
||||||
from graphon.enums import WorkflowExecutionStatus
|
|
||||||
from graphon.runtime import GraphRuntimeState
|
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
from models.model import EndUser
|
from models.model import EndUser
|
||||||
|
|||||||
@ -3,6 +3,39 @@ import time
|
|||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
|
from graphon.entities.graph_config import NodeConfigDictAdapter
|
||||||
|
from graphon.entities.pause_reason import HumanInputRequired
|
||||||
|
from graphon.graph import Graph
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.graph_events import (
|
||||||
|
GraphEngineEvent,
|
||||||
|
GraphRunAbortedEvent,
|
||||||
|
GraphRunFailedEvent,
|
||||||
|
GraphRunPartialSucceededEvent,
|
||||||
|
GraphRunPausedEvent,
|
||||||
|
GraphRunStartedEvent,
|
||||||
|
GraphRunSucceededEvent,
|
||||||
|
NodeRunAgentLogEvent,
|
||||||
|
NodeRunExceptionEvent,
|
||||||
|
NodeRunFailedEvent,
|
||||||
|
NodeRunHumanInputFormFilledEvent,
|
||||||
|
NodeRunHumanInputFormTimeoutEvent,
|
||||||
|
NodeRunIterationFailedEvent,
|
||||||
|
NodeRunIterationNextEvent,
|
||||||
|
NodeRunIterationStartedEvent,
|
||||||
|
NodeRunIterationSucceededEvent,
|
||||||
|
NodeRunLoopFailedEvent,
|
||||||
|
NodeRunLoopNextEvent,
|
||||||
|
NodeRunLoopStartedEvent,
|
||||||
|
NodeRunLoopSucceededEvent,
|
||||||
|
NodeRunRetrieverResourceEvent,
|
||||||
|
NodeRunRetryEvent,
|
||||||
|
NodeRunStartedEvent,
|
||||||
|
NodeRunStreamChunkEvent,
|
||||||
|
NodeRunSucceededEvent,
|
||||||
|
)
|
||||||
|
from graphon.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
from core.app.apps.base_app_queue_manager import AppQueueManager, PublishFrom
|
||||||
@ -49,39 +82,6 @@ from core.workflow.system_variables import (
|
|||||||
from core.workflow.variable_pool_initializer import add_variables_to_pool
|
from core.workflow.variable_pool_initializer import add_variables_to_pool
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
|
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
|
||||||
from graphon.entities.graph_config import NodeConfigDictAdapter
|
|
||||||
from graphon.entities.pause_reason import HumanInputRequired
|
|
||||||
from graphon.graph import Graph
|
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.graph_events import (
|
|
||||||
GraphEngineEvent,
|
|
||||||
GraphRunAbortedEvent,
|
|
||||||
GraphRunFailedEvent,
|
|
||||||
GraphRunPartialSucceededEvent,
|
|
||||||
GraphRunPausedEvent,
|
|
||||||
GraphRunStartedEvent,
|
|
||||||
GraphRunSucceededEvent,
|
|
||||||
NodeRunAgentLogEvent,
|
|
||||||
NodeRunExceptionEvent,
|
|
||||||
NodeRunFailedEvent,
|
|
||||||
NodeRunHumanInputFormFilledEvent,
|
|
||||||
NodeRunHumanInputFormTimeoutEvent,
|
|
||||||
NodeRunIterationFailedEvent,
|
|
||||||
NodeRunIterationNextEvent,
|
|
||||||
NodeRunIterationStartedEvent,
|
|
||||||
NodeRunIterationSucceededEvent,
|
|
||||||
NodeRunLoopFailedEvent,
|
|
||||||
NodeRunLoopNextEvent,
|
|
||||||
NodeRunLoopStartedEvent,
|
|
||||||
NodeRunLoopSucceededEvent,
|
|
||||||
NodeRunRetrieverResourceEvent,
|
|
||||||
NodeRunRetryEvent,
|
|
||||||
NodeRunStartedEvent,
|
|
||||||
NodeRunStreamChunkEvent,
|
|
||||||
NodeRunSucceededEvent,
|
|
||||||
)
|
|
||||||
from graphon.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
||||||
|
|
||||||
|
|||||||
@ -2,13 +2,13 @@ from collections.abc import Mapping, Sequence
|
|||||||
from enum import StrEnum
|
from enum import StrEnum
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from graphon.file import File, FileUploadConfig
|
||||||
|
from graphon.model_runtime.entities.model_entities import AIModelEntity
|
||||||
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
|
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
|
||||||
|
|
||||||
from constants import UUID_NIL
|
from constants import UUID_NIL
|
||||||
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
||||||
from core.entities.provider_configuration import ProviderModelBundle
|
from core.entities.provider_configuration import ProviderModelBundle
|
||||||
from graphon.file import File, FileUploadConfig
|
|
||||||
from graphon.model_runtime.entities.model_entities import AIModelEntity
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
|||||||
@ -3,14 +3,14 @@ from datetime import datetime
|
|||||||
from enum import StrEnum, auto
|
from enum import StrEnum, auto
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
|
||||||
|
|
||||||
from core.app.entities.agent_strategy import AgentStrategyInfo
|
|
||||||
from core.rag.entities import RetrievalSourceMetadata
|
|
||||||
from graphon.entities import WorkflowStartReason
|
from graphon.entities import WorkflowStartReason
|
||||||
from graphon.entities.pause_reason import PauseReason
|
from graphon.entities.pause_reason import PauseReason
|
||||||
from graphon.enums import NodeType, WorkflowNodeExecutionMetadataKey
|
from graphon.enums import NodeType, WorkflowNodeExecutionMetadataKey
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
|
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
|
||||||
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
|
from core.app.entities.agent_strategy import AgentStrategyInfo
|
||||||
|
from core.rag.entities import RetrievalSourceMetadata
|
||||||
|
|
||||||
|
|
||||||
class QueueEvent(StrEnum):
|
class QueueEvent(StrEnum):
|
||||||
|
|||||||
@ -2,14 +2,14 @@ from collections.abc import Mapping, Sequence
|
|||||||
from enum import StrEnum
|
from enum import StrEnum
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
|
||||||
|
|
||||||
from core.app.entities.agent_strategy import AgentStrategyInfo
|
|
||||||
from core.rag.entities import RetrievalSourceMetadata
|
|
||||||
from graphon.entities import WorkflowStartReason
|
from graphon.entities import WorkflowStartReason
|
||||||
from graphon.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
from graphon.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMUsage
|
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMUsage
|
||||||
from graphon.nodes.human_input.entities import FormInput, UserAction
|
from graphon.nodes.human_input.entities import FormInput, UserAction
|
||||||
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
|
from core.app.entities.agent_strategy import AgentStrategyInfo
|
||||||
|
from core.rag.entities import RetrievalSourceMetadata
|
||||||
|
|
||||||
|
|
||||||
class AnnotationReplyAccount(BaseModel):
|
class AnnotationReplyAccount(BaseModel):
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.message_entities import PromptMessage
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import EasyUIBasedAppGenerateEntity
|
from core.app.entities.app_invoke_entities import EasyUIBasedAppGenerateEntity
|
||||||
from core.helper import moderation
|
from core.helper import moderation
|
||||||
from graphon.model_runtime.entities.message_entities import PromptMessage
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Annotated, Literal, Self
|
from typing import Annotated, Literal, Self
|
||||||
|
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.graph_events import GraphEngineEvent, GraphRunPausedEvent
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy import Engine
|
from sqlalchemy import Engine
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
||||||
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.graph_events import GraphEngineEvent, GraphRunPausedEvent
|
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
from repositories.api_workflow_run_repository import APIWorkflowRunRepository
|
from repositories.api_workflow_run_repository import APIWorkflowRunRepository
|
||||||
from repositories.factory import DifyAPIRepositoryFactory
|
from repositories.factory import DifyAPIRepositoryFactory
|
||||||
|
|||||||
@ -3,10 +3,10 @@ import uuid
|
|||||||
from typing import ClassVar
|
from typing import ClassVar
|
||||||
|
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler # type: ignore
|
from apscheduler.schedulers.background import BackgroundScheduler # type: ignore
|
||||||
|
|
||||||
from graphon.graph_engine.entities.commands import CommandType, GraphEngineCommand
|
from graphon.graph_engine.entities.commands import CommandType, GraphEngineCommand
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
from graphon.graph_events import GraphEngineEvent
|
from graphon.graph_events import GraphEngineEvent
|
||||||
|
|
||||||
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
|
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
|
||||||
from services.workflow.scheduler import CFSPlanScheduler, SchedulerCommand
|
from services.workflow.scheduler import CFSPlanScheduler, SchedulerCommand
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,12 @@ import logging
|
|||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
from typing import Any, ClassVar
|
from typing import Any, ClassVar
|
||||||
|
|
||||||
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
|
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
|
||||||
from pydantic import TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
|
|
||||||
from core.db.session_factory import session_factory
|
from core.db.session_factory import session_factory
|
||||||
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
from core.workflow.system_variables import SystemVariableKey, get_system_text
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
|
||||||
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
|
|
||||||
from models.enums import WorkflowTriggerStatus
|
from models.enums import WorkflowTriggerStatus
|
||||||
from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository
|
from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository
|
||||||
from tasks.workflow_cfs_scheduler.cfs_scheduler import AsyncWorkflowCFSPlanEntity
|
from tasks.workflow_cfs_scheduler.cfs_scheduler import AsyncWorkflowCFSPlanEntity
|
||||||
|
|||||||
@ -2,15 +2,16 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
from graphon.nodes.llm.entities import ModelConfig
|
||||||
|
from graphon.nodes.llm.exc import LLMModeRequiredError, ModelNotExistError
|
||||||
|
from graphon.nodes.llm.protocols import CredentialsProvider
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import DifyRunContext, ModelConfigWithCredentialsEntity
|
from core.app.entities.app_invoke_entities import DifyRunContext, ModelConfigWithCredentialsEntity
|
||||||
from core.errors.error import ProviderTokenNotInitError
|
from core.errors.error import ProviderTokenNotInitError
|
||||||
from core.model_manager import ModelInstance, ModelManager
|
from core.model_manager import ModelInstance, ModelManager
|
||||||
from core.plugin.impl.model_runtime_factory import create_plugin_provider_manager
|
from core.plugin.impl.model_runtime_factory import create_plugin_provider_manager
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
from graphon.nodes.llm.entities import ModelConfig
|
|
||||||
from graphon.nodes.llm.exc import LLMModeRequiredError, ModelNotExistError
|
|
||||||
from graphon.nodes.llm.protocols import CredentialsProvider
|
|
||||||
|
|
||||||
|
|
||||||
class DifyCredentialsProvider:
|
class DifyCredentialsProvider:
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
from graphon.model_runtime.entities.llm_entities import LLMUsage
|
||||||
from sqlalchemy import update
|
from sqlalchemy import update
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
@ -7,7 +8,6 @@ from core.entities.provider_entities import ProviderQuotaType, QuotaUnit
|
|||||||
from core.errors.error import QuotaExceededError
|
from core.errors.error import QuotaExceededError
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from graphon.model_runtime.entities.llm_entities import LLMUsage
|
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.provider import Provider, ProviderType
|
from models.provider import Provider, ProviderType
|
||||||
from models.provider_ids import ModelProviderID
|
from models.provider_ids import ModelProviderID
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
@ -17,7 +18,6 @@ from core.app.entities.task_entities import (
|
|||||||
)
|
)
|
||||||
from core.errors.error import QuotaExceededError
|
from core.errors.error import QuotaExceededError
|
||||||
from core.moderation.output_moderation import ModerationRule, OutputModeration
|
from core.moderation.output_moderation import ModerationRule, OutputModeration
|
||||||
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
|
|
||||||
from models.enums import MessageStatus
|
from models.enums import MessageStatus
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
|
|||||||
@ -7,16 +7,17 @@ This layer centralizes model-quota deduction outside node implementations.
|
|||||||
import logging
|
import logging
|
||||||
from typing import TYPE_CHECKING, cast, final, override
|
from typing import TYPE_CHECKING, cast, final, override
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import DIFY_RUN_CONTEXT_KEY, DifyRunContext
|
|
||||||
from core.app.llm import deduct_llm_quota, ensure_llm_quota_available
|
|
||||||
from core.errors.error import QuotaExceededError
|
|
||||||
from core.model_manager import ModelInstance
|
|
||||||
from graphon.enums import BuiltinNodeTypes
|
from graphon.enums import BuiltinNodeTypes
|
||||||
from graphon.graph_engine.entities.commands import AbortCommand, CommandType
|
from graphon.graph_engine.entities.commands import AbortCommand, CommandType
|
||||||
from graphon.graph_engine.layers import GraphEngineLayer
|
from graphon.graph_engine.layers import GraphEngineLayer
|
||||||
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, NodeRunSucceededEvent
|
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, NodeRunSucceededEvent
|
||||||
from graphon.nodes.base.node import Node
|
from graphon.nodes.base.node import Node
|
||||||
|
|
||||||
|
from core.app.entities.app_invoke_entities import DIFY_RUN_CONTEXT_KEY, DifyRunContext
|
||||||
|
from core.app.llm import deduct_llm_quota, ensure_llm_quota_available
|
||||||
|
from core.errors.error import QuotaExceededError
|
||||||
|
from core.model_manager import ModelInstance
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from graphon.nodes.llm.node import LLMNode
|
from graphon.nodes.llm.node import LLMNode
|
||||||
from graphon.nodes.parameter_extractor.parameter_extractor_node import ParameterExtractorNode
|
from graphon.nodes.parameter_extractor.parameter_extractor_node import ParameterExtractorNode
|
||||||
|
|||||||
@ -14,13 +14,6 @@ from dataclasses import dataclass
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
|
||||||
from core.ops.entities.trace_entity import TraceTaskName
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
|
|
||||||
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
|
||||||
from core.workflow.system_variables import SystemVariableKey
|
|
||||||
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
|
|
||||||
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
|
|
||||||
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
|
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
|
||||||
from graphon.enums import (
|
from graphon.enums import (
|
||||||
WorkflowExecutionStatus,
|
WorkflowExecutionStatus,
|
||||||
@ -45,6 +38,14 @@ from graphon.graph_events import (
|
|||||||
NodeRunSucceededEvent,
|
NodeRunSucceededEvent,
|
||||||
)
|
)
|
||||||
from graphon.node_events import NodeRunResult
|
from graphon.node_events import NodeRunResult
|
||||||
|
|
||||||
|
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
||||||
|
from core.ops.entities.trace_entity import TraceTaskName
|
||||||
|
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
|
||||||
|
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
|
||||||
|
from core.workflow.system_variables import SystemVariableKey
|
||||||
|
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
|
||||||
|
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,9 @@ import re
|
|||||||
import threading
|
import threading
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.message_entities import TextPromptMessageContent
|
||||||
|
from graphon.model_runtime.entities.model_entities import ModelType
|
||||||
|
|
||||||
from core.app.entities.queue_entities import (
|
from core.app.entities.queue_entities import (
|
||||||
MessageQueueMessage,
|
MessageQueueMessage,
|
||||||
QueueAgentMessageEvent,
|
QueueAgentMessageEvent,
|
||||||
@ -15,8 +18,6 @@ from core.app.entities.queue_entities import (
|
|||||||
WorkflowQueueMessage,
|
WorkflowQueueMessage,
|
||||||
)
|
)
|
||||||
from core.model_manager import ModelInstance, ModelManager
|
from core.model_manager import ModelInstance, ModelManager
|
||||||
from graphon.model_runtime.entities.message_entities import TextPromptMessageContent
|
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType
|
|
||||||
|
|
||||||
|
|
||||||
class AudioTrunk:
|
class AudioTrunk:
|
||||||
|
|||||||
@ -3,6 +3,9 @@ from collections.abc import Generator
|
|||||||
from threading import Lock
|
from threading import Lock
|
||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
|
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
||||||
|
from graphon.file import File, FileTransferMethod, FileType, get_file_type_by_mime_type
|
||||||
|
from graphon.node_events import NodeRunResult, StreamChunkEvent, StreamCompletedEvent
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
import contexts
|
import contexts
|
||||||
@ -28,9 +31,6 @@ from core.plugin.impl.datasource import PluginDatasourceManager
|
|||||||
from core.workflow.file_reference import build_file_reference
|
from core.workflow.file_reference import build_file_reference
|
||||||
from core.workflow.nodes.datasource.entities import DatasourceParameter, OnlineDriveDownloadFileParam
|
from core.workflow.nodes.datasource.entities import DatasourceParameter, OnlineDriveDownloadFileParam
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
|
||||||
from graphon.file import File, FileTransferMethod, FileType, get_file_type_by_mime_type
|
|
||||||
from graphon.node_events import NodeRunResult, StreamChunkEvent, StreamCompletedEvent
|
|
||||||
from models.model import UploadFile
|
from models.model import UploadFile
|
||||||
from models.tools import ToolFile
|
from models.tools import ToolFile
|
||||||
from services.datasource_provider_service import DatasourceProviderService
|
from services.datasource_provider_service import DatasourceProviderService
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
from typing import Any, Literal, TypedDict
|
from typing import Any, Literal, TypedDict
|
||||||
|
|
||||||
|
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
|
|
||||||
from core.datasource.entities.datasource_entities import DatasourceParameter
|
from core.datasource.entities.datasource_entities import DatasourceParameter
|
||||||
from core.tools.entities.common_entities import I18nObject, I18nObjectDict
|
from core.tools.entities.common_entities import I18nObject, I18nObjectDict
|
||||||
from graphon.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
|
|
||||||
|
|
||||||
class DatasourceApiEntity(BaseModel):
|
class DatasourceApiEntity(BaseModel):
|
||||||
|
|||||||
@ -2,10 +2,11 @@ import logging
|
|||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from mimetypes import guess_extension, guess_type
|
from mimetypes import guess_extension, guess_type
|
||||||
|
|
||||||
|
from graphon.file import File, FileTransferMethod, FileType
|
||||||
|
|
||||||
from core.datasource.entities.datasource_entities import DatasourceMessage
|
from core.datasource.entities.datasource_entities import DatasourceMessage
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from core.workflow.file_reference import parse_file_reference
|
from core.workflow.file_reference import parse_file_reference
|
||||||
from graphon.file import File, FileTransferMethod, FileType
|
|
||||||
from models.tools import ToolFile
|
from models.tools import ToolFile
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -3,9 +3,9 @@ from __future__ import annotations
|
|||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from typing import Any, TypeAlias
|
from typing import Any, TypeAlias
|
||||||
|
|
||||||
|
from graphon.nodes.human_input.entities import FormInput, UserAction
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
from graphon.nodes.human_input.entities import FormInput, UserAction
|
|
||||||
from models.execution_extra_content import ExecutionContentType
|
from models.execution_extra_content import ExecutionContentType
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from enum import StrEnum
|
|||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
from graphon.file import helpers as file_helpers
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
@ -15,7 +16,6 @@ from core.helper.provider_cache import NoOpProviderCredentialCache
|
|||||||
from core.mcp.types import OAuthClientInformation, OAuthClientMetadata, OAuthTokens
|
from core.mcp.types import OAuthClientInformation, OAuthClientMetadata, OAuthTokens
|
||||||
from core.tools.entities.common_entities import I18nObject
|
from core.tools.entities.common_entities import I18nObject
|
||||||
from core.tools.entities.tool_entities import ToolProviderType
|
from core.tools.entities.tool_entities import ToolProviderType
|
||||||
from graphon.file import helpers as file_helpers
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from models.tools import MCPToolProvider
|
from models.tools import MCPToolProvider
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from enum import StrEnum, auto
|
from enum import StrEnum, auto
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
|
||||||
|
|
||||||
from graphon.model_runtime.entities.common_entities import I18nObject
|
from graphon.model_runtime.entities.common_entities import I18nObject
|
||||||
from graphon.model_runtime.entities.model_entities import ModelType, ProviderModel
|
from graphon.model_runtime.entities.model_entities import ModelType, ProviderModel
|
||||||
from graphon.model_runtime.entities.provider_entities import ProviderEntity
|
from graphon.model_runtime.entities.provider_entities import ProviderEntity
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
class ModelStatus(StrEnum):
|
class ModelStatus(StrEnum):
|
||||||
|
|||||||
@ -8,6 +8,16 @@ from collections.abc import Iterator, Sequence
|
|||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from graphon.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
|
||||||
|
from graphon.model_runtime.entities.provider_entities import (
|
||||||
|
ConfigurateMethod,
|
||||||
|
CredentialFormSchema,
|
||||||
|
FormType,
|
||||||
|
ProviderEntity,
|
||||||
|
)
|
||||||
|
from graphon.model_runtime.model_providers.__base.ai_model import AIModel
|
||||||
|
from graphon.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
|
||||||
|
from graphon.model_runtime.runtime import ModelRuntime
|
||||||
from pydantic import BaseModel, ConfigDict, Field, PrivateAttr, model_validator
|
from pydantic import BaseModel, ConfigDict, Field, PrivateAttr, model_validator
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import func, select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
@ -24,16 +34,6 @@ from core.entities.provider_entities import (
|
|||||||
from core.helper import encrypter
|
from core.helper import encrypter
|
||||||
from core.helper.model_provider_cache import ProviderCredentialsCache, ProviderCredentialsCacheType
|
from core.helper.model_provider_cache import ProviderCredentialsCache, ProviderCredentialsCacheType
|
||||||
from core.plugin.impl.model_runtime_factory import create_plugin_model_provider_factory
|
from core.plugin.impl.model_runtime_factory import create_plugin_model_provider_factory
|
||||||
from graphon.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
|
|
||||||
from graphon.model_runtime.entities.provider_entities import (
|
|
||||||
ConfigurateMethod,
|
|
||||||
CredentialFormSchema,
|
|
||||||
FormType,
|
|
||||||
ProviderEntity,
|
|
||||||
)
|
|
||||||
from graphon.model_runtime.model_providers.__base.ai_model import AIModel
|
|
||||||
from graphon.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
|
|
||||||
from graphon.model_runtime.runtime import ModelRuntime
|
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.engine import db
|
from models.engine import db
|
||||||
from models.enums import CredentialSourceType
|
from models.enums import CredentialSourceType
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user