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
3a343704
Unverified
Commit
3a343704
authored
Feb 27, 2024
by
Yeuoly
Committed by
GitHub
Feb 27, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: convert tool messages into user messages in react mode and fill … (#2584)
parent
29ab244d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
33 deletions
+46
-33
assistant_base_runner.py
api/core/features/assistant_base_runner.py
+36
-30
assistant_cot_runner.py
api/core/features/assistant_cot_runner.py
+10
-3
No files found.
api/core/features/assistant_base_runner.py
View file @
3a343704
...
@@ -606,36 +606,42 @@ class BaseAssistantApplicationRunner(AppRunner):
...
@@ -606,36 +606,42 @@ class BaseAssistantApplicationRunner(AppRunner):
for
message
in
messages
:
for
message
in
messages
:
result
.
append
(
UserPromptMessage
(
content
=
message
.
query
))
result
.
append
(
UserPromptMessage
(
content
=
message
.
query
))
agent_thoughts
:
list
[
MessageAgentThought
]
=
message
.
agent_thoughts
agent_thoughts
:
list
[
MessageAgentThought
]
=
message
.
agent_thoughts
for
agent_thought
in
agent_thoughts
:
if
agent_thoughts
:
tools
=
agent_thought
.
tool
for
agent_thought
in
agent_thoughts
:
if
tools
:
tools
=
agent_thought
.
tool
tools
=
tools
.
split
(
';'
)
if
tools
:
tool_calls
:
list
[
AssistantPromptMessage
.
ToolCall
]
=
[]
tools
=
tools
.
split
(
';'
)
tool_call_response
:
list
[
ToolPromptMessage
]
=
[]
tool_calls
:
list
[
AssistantPromptMessage
.
ToolCall
]
=
[]
tool_inputs
=
json
.
loads
(
agent_thought
.
tool_input
)
tool_call_response
:
list
[
ToolPromptMessage
]
=
[]
for
tool
in
tools
:
tool_inputs
=
json
.
loads
(
agent_thought
.
tool_input
)
# generate a uuid for tool call
for
tool
in
tools
:
tool_call_id
=
str
(
uuid
.
uuid4
())
# generate a uuid for tool call
tool_calls
.
append
(
AssistantPromptMessage
.
ToolCall
(
tool_call_id
=
str
(
uuid
.
uuid4
())
id
=
tool_call_id
,
tool_calls
.
append
(
AssistantPromptMessage
.
ToolCall
(
type
=
'function'
,
id
=
tool_call_id
,
function
=
AssistantPromptMessage
.
ToolCall
.
ToolCallFunction
(
type
=
'function'
,
function
=
AssistantPromptMessage
.
ToolCall
.
ToolCallFunction
(
name
=
tool
,
arguments
=
json
.
dumps
(
tool_inputs
.
get
(
tool
,
{})),
)
))
tool_call_response
.
append
(
ToolPromptMessage
(
content
=
agent_thought
.
observation
,
name
=
tool
,
name
=
tool
,
arguments
=
json
.
dumps
(
tool_inputs
.
get
(
tool
,
{})),
tool_call_id
=
tool_call_id
,
)
))
))
tool_call_response
.
append
(
ToolPromptMessage
(
result
.
extend
([
content
=
agent_thought
.
observation
,
AssistantPromptMessage
(
name
=
tool
,
content
=
agent_thought
.
thought
,
tool_call_id
=
tool_call_id
,
tool_calls
=
tool_calls
,
))
),
*
tool_call_response
result
.
extend
([
])
AssistantPromptMessage
(
if
not
tools
:
content
=
agent_thought
.
thought
,
result
.
append
(
AssistantPromptMessage
(
content
=
agent_thought
.
thought
))
tool_calls
=
tool_calls
,
else
:
),
if
message
.
answer
:
*
tool_call_response
result
.
append
(
AssistantPromptMessage
(
content
=
message
.
answer
))
])
return
result
return
result
\ No newline at end of file
api/core/features/assistant_cot_runner.py
View file @
3a343704
...
@@ -154,7 +154,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
...
@@ -154,7 +154,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
thought
=
''
,
thought
=
''
,
action_str
=
''
,
action_str
=
''
,
observation
=
''
,
observation
=
''
,
action
=
None
action
=
None
,
)
)
# publish agent thought if it's first iteration
# publish agent thought if it's first iteration
...
@@ -469,7 +469,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
...
@@ -469,7 +469,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
thought
=
message
.
content
,
thought
=
message
.
content
,
action_str
=
''
,
action_str
=
''
,
action
=
None
,
action
=
None
,
observation
=
None
observation
=
None
,
)
)
if
message
.
tool_calls
:
if
message
.
tool_calls
:
try
:
try
:
...
@@ -484,7 +484,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
...
@@ -484,7 +484,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
elif
isinstance
(
message
,
ToolPromptMessage
):
elif
isinstance
(
message
,
ToolPromptMessage
):
if
current_scratchpad
:
if
current_scratchpad
:
current_scratchpad
.
observation
=
message
.
content
current_scratchpad
.
observation
=
message
.
content
return
agent_scratchpad
return
agent_scratchpad
def
_check_cot_prompt_messages
(
self
,
mode
:
Literal
[
"completion"
,
"chat"
],
def
_check_cot_prompt_messages
(
self
,
mode
:
Literal
[
"completion"
,
"chat"
],
...
@@ -607,6 +607,13 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
...
@@ -607,6 +607,13 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
prompt_message
.
content
=
system_message
prompt_message
.
content
=
system_message
overridden
=
True
overridden
=
True
break
break
# convert tool prompt messages to user prompt messages
for
idx
,
prompt_message
in
enumerate
(
prompt_messages
):
if
isinstance
(
prompt_message
,
ToolPromptMessage
):
prompt_messages
[
idx
]
=
UserPromptMessage
(
content
=
prompt_message
.
content
)
if
not
overridden
:
if
not
overridden
:
prompt_messages
.
insert
(
0
,
SystemPromptMessage
(
prompt_messages
.
insert
(
0
,
SystemPromptMessage
(
...
...
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