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
5e97eb18
Unverified
Commit
5e97eb18
authored
Jan 11, 2024
by
takatost
Committed by
GitHub
Jan 11, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: azure openai stream response usage missing (#1998)
parent
c9e4147b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
41 additions
and
32 deletions
+41
-32
app_runner.py
api/core/app_runner/app_runner.py
+3
-0
llm.py
...ore/model_runtime/model_providers/azure_openai/llm/llm.py
+38
-31
test_llm.py
.../integration_tests/model_runtime/azure_openai/test_llm.py
+0
-1
No files found.
api/core/app_runner/app_runner.py
View file @
5e97eb18
...
@@ -257,6 +257,9 @@ class AppRunner:
...
@@ -257,6 +257,9 @@ class AppRunner:
if
not
usage
and
result
.
delta
.
usage
:
if
not
usage
and
result
.
delta
.
usage
:
usage
=
result
.
delta
.
usage
usage
=
result
.
delta
.
usage
if
not
usage
:
usage
=
LLMUsage
.
empty_usage
()
llm_result
=
LLMResult
(
llm_result
=
LLMResult
(
model
=
model
,
model
=
model
,
prompt_messages
=
prompt_messages
,
prompt_messages
=
prompt_messages
,
...
...
api/core/model_runtime/model_providers/azure_openai/llm/llm.py
View file @
5e97eb18
...
@@ -322,8 +322,11 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
...
@@ -322,8 +322,11 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
response
:
Stream
[
ChatCompletionChunk
],
response
:
Stream
[
ChatCompletionChunk
],
prompt_messages
:
list
[
PromptMessage
],
prompt_messages
:
list
[
PromptMessage
],
tools
:
Optional
[
list
[
PromptMessageTool
]]
=
None
)
->
Generator
:
tools
:
Optional
[
list
[
PromptMessageTool
]]
=
None
)
->
Generator
:
index
=
0
full_assistant_content
=
''
full_assistant_content
=
''
real_model
=
model
system_fingerprint
=
None
completion
=
''
for
chunk
in
response
:
for
chunk
in
response
:
if
len
(
chunk
.
choices
)
==
0
:
if
len
(
chunk
.
choices
)
==
0
:
continue
continue
...
@@ -349,40 +352,44 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
...
@@ -349,40 +352,44 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
full_assistant_content
+=
delta
.
delta
.
content
if
delta
.
delta
.
content
else
''
full_assistant_content
+=
delta
.
delta
.
content
if
delta
.
delta
.
content
else
''
if
delta
.
finish_reason
is
not
None
:
real_model
=
chunk
.
model
# calculate num tokens
system_fingerprint
=
chunk
.
system_fingerprint
prompt_tokens
=
self
.
_num_tokens_from_messages
(
credentials
,
prompt_messages
,
tools
)
completion
+=
delta
.
delta
.
content
if
delta
.
delta
.
content
else
''
full_assistant_prompt_message
=
AssistantPromptMessage
(
yield
LLMResultChunk
(
content
=
full_assistant_content
,
model
=
real_model
,
tool_calls
=
tool_calls
prompt_messages
=
prompt_messages
,
system_fingerprint
=
system_fingerprint
,
delta
=
LLMResultChunkDelta
(
index
=
index
,
message
=
assistant_prompt_message
,
)
)
completion_tokens
=
self
.
_num_tokens_from_messages
(
credentials
,
[
full_assistant_prompt_message
]
)
)
# transform usage
index
+=
0
usage
=
self
.
_calc_response_usage
(
model
,
credentials
,
prompt_tokens
,
completion_tokens
)
yield
LLMResultChunk
(
# calculate num tokens
model
=
chunk
.
model
,
prompt_tokens
=
self
.
_num_tokens_from_messages
(
credentials
,
prompt_messages
,
tools
)
prompt_messages
=
prompt_messages
,
system_fingerprint
=
chunk
.
system_fingerprint
,
full_assistant_prompt_message
=
AssistantPromptMessage
(
delta
=
LLMResultChunkDelta
(
content
=
completion
index
=
delta
.
index
,
)
message
=
assistant_prompt_message
,
completion_tokens
=
self
.
_num_tokens_from_messages
(
credentials
,
[
full_assistant_prompt_message
])
finish_reason
=
delta
.
finish_reason
,
usage
=
usage
# transform usage
)
usage
=
self
.
_calc_response_usage
(
model
,
credentials
,
prompt_tokens
,
completion_tokens
)
)
else
:
yield
LLMResultChunk
(
yield
LLMResultChunk
(
model
=
real_model
,
model
=
chunk
.
model
,
prompt_messages
=
prompt_messages
,
prompt_messages
=
prompt_messages
,
system_fingerprint
=
system_fingerprint
,
system_fingerprint
=
chunk
.
system_fingerprint
,
delta
=
LLMResultChunkDelta
(
delta
=
LLMResultChunkDelta
(
index
=
index
,
index
=
delta
.
index
,
message
=
AssistantPromptMessage
(
content
=
''
),
message
=
assistant_prompt_message
,
finish_reason
=
'stop'
,
)
usage
=
usage
)
)
)
@
staticmethod
@
staticmethod
def
_extract_response_tool_calls
(
response_tool_calls
:
list
[
ChatCompletionMessageToolCall
|
ChoiceDeltaToolCall
])
\
def
_extract_response_tool_calls
(
response_tool_calls
:
list
[
ChatCompletionMessageToolCall
|
ChoiceDeltaToolCall
])
\
...
...
api/tests/integration_tests/model_runtime/azure_openai/test_llm.py
View file @
5e97eb18
...
@@ -190,7 +190,6 @@ def test_invoke_stream_chat_model(setup_openai_mock):
...
@@ -190,7 +190,6 @@ def test_invoke_stream_chat_model(setup_openai_mock):
assert
isinstance
(
chunk
,
LLMResultChunk
)
assert
isinstance
(
chunk
,
LLMResultChunk
)
assert
isinstance
(
chunk
.
delta
,
LLMResultChunkDelta
)
assert
isinstance
(
chunk
.
delta
,
LLMResultChunkDelta
)
assert
isinstance
(
chunk
.
delta
.
message
,
AssistantPromptMessage
)
assert
isinstance
(
chunk
.
delta
.
message
,
AssistantPromptMessage
)
assert
len
(
chunk
.
delta
.
message
.
content
)
>
0
if
chunk
.
delta
.
finish_reason
is
None
else
True
if
chunk
.
delta
.
finish_reason
is
not
None
:
if
chunk
.
delta
.
finish_reason
is
not
None
:
assert
chunk
.
delta
.
usage
is
not
None
assert
chunk
.
delta
.
usage
is
not
None
assert
chunk
.
delta
.
usage
.
completion_tokens
>
0
assert
chunk
.
delta
.
usage
.
completion_tokens
>
0
...
...
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