Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
b75cd251
Commit
b75cd251
authored
Mar 10, 2024
by
takatost
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
optimize db connections
parent
7693ba87
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
123 additions
and
115 deletions
+123
-115
app.py
api/controllers/console/app/app.py
+36
-32
model_config.py
api/controllers/console/app/model_config.py
+72
-71
manager.py
api/core/app/app_config/easy_ui_based_app/dataset/manager.py
+2
-1
app_generator.py
api/core/app/apps/advanced_chat/app_generator.py
+0
-2
app_runner.py
api/core/app/apps/advanced_chat/app_runner.py
+2
-0
app_generator.py
api/core/app/apps/agent_chat/app_generator.py
+1
-1
app_runner.py
api/core/app/apps/agent_chat/app_runner.py
+2
-2
app_generator.py
api/core/app/apps/chat/app_generator.py
+1
-1
app_generator.py
api/core/app/apps/completion/app_generator.py
+1
-1
app_runner.py
api/core/app/apps/completion/app_runner.py
+2
-0
message_based_app_generator.py
api/core/app/apps/message_based_app_generator.py
+0
-2
app_runner.py
api/core/app/apps/workflow/app_runner.py
+2
-0
tool_manager.py
api/core/tools/tool_manager.py
+1
-1
model.py
api/models/model.py
+1
-1
No files found.
api/controllers/console/app/app.py
View file @
b75cd251
import
json
from
flask_login
import
current_user
from
flask_login
import
current_user
from
flask_restful
import
Resource
,
inputs
,
marshal_with
,
reqparse
from
flask_restful
import
Resource
,
inputs
,
marshal_with
,
reqparse
from
werkzeug.exceptions
import
Forbidden
,
BadRequest
from
werkzeug.exceptions
import
Forbidden
,
BadRequest
...
@@ -6,6 +8,8 @@ from controllers.console import api
...
@@ -6,6 +8,8 @@ from controllers.console import api
from
controllers.console.app.wraps
import
get_app_model
from
controllers.console.app.wraps
import
get_app_model
from
controllers.console.setup
import
setup_required
from
controllers.console.setup
import
setup_required
from
controllers.console.wraps
import
account_initialization_required
,
cloud_edition_billing_resource_check
from
controllers.console.wraps
import
account_initialization_required
,
cloud_edition_billing_resource_check
from
core.agent.entities
import
AgentToolEntity
from
extensions.ext_database
import
db
from
fields.app_fields
import
(
from
fields.app_fields
import
(
app_detail_fields
,
app_detail_fields
,
app_detail_fields_with_site
,
app_detail_fields_with_site
,
...
@@ -14,10 +18,8 @@ from fields.app_fields import (
...
@@ -14,10 +18,8 @@ from fields.app_fields import (
from
libs.login
import
login_required
from
libs.login
import
login_required
from
services.app_service
import
AppService
from
services.app_service
import
AppService
from
models.model
import
App
,
AppModelConfig
,
AppMode
from
models.model
import
App
,
AppModelConfig
,
AppMode
from
services.workflow_service
import
WorkflowService
from
core.tools.utils.configuration
import
ToolParameterConfigurationManager
from
core.tools.utils.configuration
import
ToolParameterConfigurationManager
from
core.tools.tool_manager
import
ToolManager
from
core.tools.tool_manager
import
ToolManager
from
core.entities.application_entities
import
AgentToolEntity
ALLOW_CREATE_APP_MODES
=
[
'chat'
,
'agent-chat'
,
'advanced-chat'
,
'workflow'
]
ALLOW_CREATE_APP_MODES
=
[
'chat'
,
'agent-chat'
,
'advanced-chat'
,
'workflow'
]
...
@@ -108,6 +110,7 @@ class AppApi(Resource):
...
@@ -108,6 +110,7 @@ class AppApi(Resource):
def
get
(
self
,
app_model
):
def
get
(
self
,
app_model
):
"""Get app detail"""
"""Get app detail"""
# get original app model config
# get original app model config
if
app_model
.
mode
==
AppMode
.
AGENT_CHAT
.
value
or
app_model
.
is_agent
:
model_config
:
AppModelConfig
=
app_model
.
app_model_config
model_config
:
AppModelConfig
=
app_model
.
app_model_config
agent_mode
=
model_config
.
agent_mode_dict
agent_mode
=
model_config
.
agent_mode_dict
# decrypt agent tool parameters if it's secret-input
# decrypt agent tool parameters if it's secret-input
...
@@ -138,6 +141,7 @@ class AppApi(Resource):
...
@@ -138,6 +141,7 @@ class AppApi(Resource):
# override agent mode
# override agent mode
model_config
.
agent_mode
=
json
.
dumps
(
agent_mode
)
model_config
.
agent_mode
=
json
.
dumps
(
agent_mode
)
db
.
session
.
commit
()
return
app_model
return
app_model
...
...
api/controllers/console/app/model_config.py
View file @
b75cd251
...
@@ -8,7 +8,7 @@ from controllers.console import api
...
@@ -8,7 +8,7 @@ from controllers.console import api
from
controllers.console.app.wraps
import
get_app_model
from
controllers.console.app.wraps
import
get_app_model
from
controllers.console.setup
import
setup_required
from
controllers.console.setup
import
setup_required
from
controllers.console.wraps
import
account_initialization_required
from
controllers.console.wraps
import
account_initialization_required
from
core.
entities.application_
entities
import
AgentToolEntity
from
core.
agent.
entities
import
AgentToolEntity
from
core.tools.tool_manager
import
ToolManager
from
core.tools.tool_manager
import
ToolManager
from
core.tools.utils.configuration
import
ToolParameterConfigurationManager
from
core.tools.utils.configuration
import
ToolParameterConfigurationManager
from
events.app_event
import
app_model_config_was_updated
from
events.app_event
import
app_model_config_was_updated
...
@@ -38,9 +38,10 @@ class ModelConfigResource(Resource):
...
@@ -38,9 +38,10 @@ class ModelConfigResource(Resource):
)
)
new_app_model_config
=
new_app_model_config
.
from_model_config_dict
(
model_configuration
)
new_app_model_config
=
new_app_model_config
.
from_model_config_dict
(
model_configuration
)
if
app_model
.
mode
==
AppMode
.
AGENT_CHAT
.
value
or
app_model
.
is_agent
:
# get original app model config
# get original app model config
original_app_model_config
:
AppModelConfig
=
db
.
session
.
query
(
AppModelConfig
)
.
filter
(
original_app_model_config
:
AppModelConfig
=
db
.
session
.
query
(
AppModelConfig
)
.
filter
(
AppModelConfig
.
id
==
app
.
app_model_config_id
AppModelConfig
.
id
==
app_model
.
app_model_config_id
)
.
first
()
)
.
first
()
agent_mode
=
original_app_model_config
.
agent_mode_dict
agent_mode
=
original_app_model_config
.
agent_mode_dict
# decrypt agent tool parameters if it's secret-input
# decrypt agent tool parameters if it's secret-input
...
...
api/core/app/app_config/easy_ui_based_app/dataset/manager.py
View file @
b75cd251
...
@@ -123,7 +123,8 @@ class DatasetConfigManager:
...
@@ -123,7 +123,8 @@ class DatasetConfigManager:
if
not
isinstance
(
config
[
"dataset_configs"
],
dict
):
if
not
isinstance
(
config
[
"dataset_configs"
],
dict
):
raise
ValueError
(
"dataset_configs must be of object type"
)
raise
ValueError
(
"dataset_configs must be of object type"
)
need_manual_query_datasets
=
config
.
get
(
"dataset_configs"
)
and
config
[
"dataset_configs"
]
.
get
(
"datasets"
)
need_manual_query_datasets
=
(
config
.
get
(
"dataset_configs"
)
and
config
[
"dataset_configs"
]
.
get
(
"datasets"
,
{})
.
get
(
"datasets"
))
if
need_manual_query_datasets
and
app_mode
==
AppMode
.
COMPLETION
:
if
need_manual_query_datasets
and
app_mode
==
AppMode
.
COMPLETION
:
# Only check when mode is completion
# Only check when mode is completion
...
...
api/core/app/apps/advanced_chat/app_generator.py
View file @
b75cd251
...
@@ -153,8 +153,6 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator):
...
@@ -153,8 +153,6 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator):
conversation
=
self
.
_get_conversation
(
conversation_id
)
conversation
=
self
.
_get_conversation
(
conversation_id
)
message
=
self
.
_get_message
(
message_id
)
message
=
self
.
_get_message
(
message_id
)
db
.
session
.
close
()
# chatbot app
# chatbot app
runner
=
AdvancedChatAppRunner
()
runner
=
AdvancedChatAppRunner
()
runner
.
run
(
runner
.
run
(
...
...
api/core/app/apps/advanced_chat/app_runner.py
View file @
b75cd251
...
@@ -72,6 +72,8 @@ class AdvancedChatAppRunner(AppRunner):
...
@@ -72,6 +72,8 @@ class AdvancedChatAppRunner(AppRunner):
):
):
return
return
db
.
session
.
close
()
# RUN WORKFLOW
# RUN WORKFLOW
workflow_engine_manager
=
WorkflowEngineManager
()
workflow_engine_manager
=
WorkflowEngineManager
()
workflow_engine_manager
.
run_workflow
(
workflow_engine_manager
.
run_workflow
(
...
...
api/core/app/apps/agent_chat/app_generator.py
View file @
b75cd251
...
@@ -193,4 +193,4 @@ class AgentChatAppGenerator(MessageBasedAppGenerator):
...
@@ -193,4 +193,4 @@ class AgentChatAppGenerator(MessageBasedAppGenerator):
logger
.
exception
(
"Unknown Error when generating"
)
logger
.
exception
(
"Unknown Error when generating"
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
finally
:
finally
:
db
.
session
.
remov
e
()
db
.
session
.
clos
e
()
api/core/app/apps/agent_chat/app_runner.py
View file @
b75cd251
...
@@ -201,8 +201,8 @@ class AgentChatAppRunner(AppRunner):
...
@@ -201,8 +201,8 @@ class AgentChatAppRunner(AppRunner):
if
set
([
ModelFeature
.
MULTI_TOOL_CALL
,
ModelFeature
.
TOOL_CALL
])
.
intersection
(
model_schema
.
features
or
[]):
if
set
([
ModelFeature
.
MULTI_TOOL_CALL
,
ModelFeature
.
TOOL_CALL
])
.
intersection
(
model_schema
.
features
or
[]):
agent_entity
.
strategy
=
AgentEntity
.
Strategy
.
FUNCTION_CALLING
agent_entity
.
strategy
=
AgentEntity
.
Strategy
.
FUNCTION_CALLING
db
.
session
.
refresh
(
conversation
)
conversation
=
db
.
session
.
query
(
Conversation
)
.
filter
(
Conversation
.
id
==
conversation
.
id
)
.
first
(
)
db
.
session
.
refresh
(
message
)
message
=
db
.
session
.
query
(
Message
)
.
filter
(
Message
.
id
==
message
.
id
)
.
first
(
)
db
.
session
.
close
()
db
.
session
.
close
()
# start agent runner
# start agent runner
...
...
api/core/app/apps/chat/app_generator.py
View file @
b75cd251
...
@@ -193,4 +193,4 @@ class ChatAppGenerator(MessageBasedAppGenerator):
...
@@ -193,4 +193,4 @@ class ChatAppGenerator(MessageBasedAppGenerator):
logger
.
exception
(
"Unknown Error when generating"
)
logger
.
exception
(
"Unknown Error when generating"
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
finally
:
finally
:
db
.
session
.
remov
e
()
db
.
session
.
clos
e
()
api/core/app/apps/completion/app_generator.py
View file @
b75cd251
...
@@ -182,7 +182,7 @@ class CompletionAppGenerator(MessageBasedAppGenerator):
...
@@ -182,7 +182,7 @@ class CompletionAppGenerator(MessageBasedAppGenerator):
logger
.
exception
(
"Unknown Error when generating"
)
logger
.
exception
(
"Unknown Error when generating"
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
queue_manager
.
publish_error
(
e
,
PublishFrom
.
APPLICATION_MANAGER
)
finally
:
finally
:
db
.
session
.
remov
e
()
db
.
session
.
clos
e
()
def
generate_more_like_this
(
self
,
app_model
:
App
,
def
generate_more_like_this
(
self
,
app_model
:
App
,
message_id
:
str
,
message_id
:
str
,
...
...
api/core/app/apps/completion/app_runner.py
View file @
b75cd251
...
@@ -160,6 +160,8 @@ class CompletionAppRunner(AppRunner):
...
@@ -160,6 +160,8 @@ class CompletionAppRunner(AppRunner):
model
=
application_generate_entity
.
model_config
.
model
model
=
application_generate_entity
.
model_config
.
model
)
)
db
.
session
.
close
()
invoke_result
=
model_instance
.
invoke_llm
(
invoke_result
=
model_instance
.
invoke_llm
(
prompt_messages
=
prompt_messages
,
prompt_messages
=
prompt_messages
,
model_parameters
=
application_generate_entity
.
model_config
.
parameters
,
model_parameters
=
application_generate_entity
.
model_config
.
parameters
,
...
...
api/core/app/apps/message_based_app_generator.py
View file @
b75cd251
...
@@ -64,8 +64,6 @@ class MessageBasedAppGenerator(BaseAppGenerator):
...
@@ -64,8 +64,6 @@ class MessageBasedAppGenerator(BaseAppGenerator):
else
:
else
:
logger
.
exception
(
e
)
logger
.
exception
(
e
)
raise
e
raise
e
finally
:
db
.
session
.
remove
()
def
_get_conversation_by_user
(
self
,
app_model
:
App
,
conversation_id
:
str
,
def
_get_conversation_by_user
(
self
,
app_model
:
App
,
conversation_id
:
str
,
user
:
Union
[
Account
,
EndUser
])
->
Conversation
:
user
:
Union
[
Account
,
EndUser
])
->
Conversation
:
...
...
api/core/app/apps/workflow/app_runner.py
View file @
b75cd251
...
@@ -57,6 +57,8 @@ class WorkflowAppRunner:
...
@@ -57,6 +57,8 @@ class WorkflowAppRunner:
):
):
return
return
db
.
session
.
close
()
# RUN WORKFLOW
# RUN WORKFLOW
workflow_engine_manager
=
WorkflowEngineManager
()
workflow_engine_manager
=
WorkflowEngineManager
()
workflow_engine_manager
.
run_workflow
(
workflow_engine_manager
.
run_workflow
(
...
...
api/core/tools/tool_manager.py
View file @
b75cd251
...
@@ -5,8 +5,8 @@ import mimetypes
...
@@ -5,8 +5,8 @@ import mimetypes
from
os
import
listdir
,
path
from
os
import
listdir
,
path
from
typing
import
Any
,
Union
from
typing
import
Any
,
Union
from
core.agent.entities
import
AgentToolEntity
from
core.callback_handler.agent_tool_callback_handler
import
DifyAgentCallbackHandler
from
core.callback_handler.agent_tool_callback_handler
import
DifyAgentCallbackHandler
from
core.entities.application_entities
import
AgentToolEntity
from
core.model_runtime.entities.message_entities
import
PromptMessage
from
core.model_runtime.entities.message_entities
import
PromptMessage
from
core.provider_manager
import
ProviderManager
from
core.provider_manager
import
ProviderManager
from
core.tools.entities.common_entities
import
I18nObject
from
core.tools.entities.common_entities
import
I18nObject
...
...
api/models/model.py
View file @
b75cd251
...
@@ -322,7 +322,7 @@ class AppModelConfig(db.Model):
...
@@ -322,7 +322,7 @@ class AppModelConfig(db.Model):
}
}
def
from_model_config_dict
(
self
,
model_config
:
dict
):
def
from_model_config_dict
(
self
,
model_config
:
dict
):
self
.
opening_statement
=
model_config
[
'opening_statement'
]
self
.
opening_statement
=
model_config
.
get
(
'opening_statement'
)
self
.
suggested_questions
=
json
.
dumps
(
model_config
[
'suggested_questions'
])
\
self
.
suggested_questions
=
json
.
dumps
(
model_config
[
'suggested_questions'
])
\
if
model_config
.
get
(
'suggested_questions'
)
else
None
if
model_config
.
get
(
'suggested_questions'
)
else
None
self
.
suggested_questions_after_answer
=
json
.
dumps
(
model_config
[
'suggested_questions_after_answer'
])
\
self
.
suggested_questions_after_answer
=
json
.
dumps
(
model_config
[
'suggested_questions_after_answer'
])
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment