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
055d2c45
Commit
055d2c45
authored
Jul 15, 2023
by
John Wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add universal app apis
parent
e6690e6c
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
526 additions
and
0 deletions
+526
-0
__init__.py
api/controllers/console/__init__.py
+3
-0
audio.py
api/controllers/console/universal_chat/audio.py
+66
-0
chat.py
api/controllers/console/universal_chat/chat.py
+116
-0
conversation.py
api/controllers/console/universal_chat/conversation.py
+113
-0
message.py
api/controllers/console/universal_chat/message.py
+116
-0
parameter.py
api/controllers/console/universal_chat/parameter.py
+31
-0
wraps.py
api/controllers/console/universal_chat/wraps.py
+80
-0
completion.py
api/core/completion.py
+1
-0
No files found.
api/controllers/console/__init__.py
View file @
055d2c45
...
...
@@ -22,3 +22,6 @@ from .workspace import workspace, members, model_providers, account, tool_provid
# Import explore controllers
from
.explore
import
installed_app
,
recommended_app
,
completion
,
conversation
,
message
,
parameter
,
saved_message
,
audio
# Import universal chat controllers
from
.universal_chat
import
chat
,
conversation
,
message
,
parameter
,
audio
api/controllers/console/universal_chat/audio.py
0 → 100644
View file @
055d2c45
# -*- coding:utf-8 -*-
import
logging
from
flask
import
request
from
werkzeug.exceptions
import
InternalServerError
import
services
from
controllers.console
import
api
from
controllers.console.app.error
import
AppUnavailableError
,
ProviderNotInitializeError
,
\
ProviderQuotaExceededError
,
ProviderModelCurrentlyNotSupportError
,
CompletionRequestError
,
\
NoAudioUploadedError
,
AudioTooLargeError
,
\
UnsupportedAudioTypeError
,
ProviderNotSupportSpeechToTextError
from
controllers.console.universal_chat.wraps
import
UniversalChatResource
from
core.llm.error
import
LLMBadRequestError
,
LLMAPIUnavailableError
,
LLMAuthorizationError
,
LLMAPIConnectionError
,
\
LLMRateLimitError
,
ProviderTokenNotInitError
,
QuotaExceededError
,
ModelCurrentlyNotSupportError
from
services.audio_service
import
AudioService
from
services.errors.audio
import
NoAudioUploadedServiceError
,
AudioTooLargeServiceError
,
\
UnsupportedAudioTypeServiceError
,
ProviderNotSupportSpeechToTextServiceError
from
models.model
import
AppModelConfig
class
UniversalChatAudioApi
(
UniversalChatResource
):
def
post
(
self
,
universal_app
):
app_model
=
universal_app
app_model_config
:
AppModelConfig
=
app_model
.
app_model_config
if
not
app_model_config
.
speech_to_text_dict
[
'enabled'
]:
raise
AppUnavailableError
()
file
=
request
.
files
[
'file'
]
try
:
response
=
AudioService
.
transcript
(
tenant_id
=
app_model
.
tenant_id
,
file
=
file
,
)
return
response
except
services
.
errors
.
app_model_config
.
AppModelConfigBrokenError
:
logging
.
exception
(
"App model config broken."
)
raise
AppUnavailableError
()
except
NoAudioUploadedServiceError
:
raise
NoAudioUploadedError
()
except
AudioTooLargeServiceError
as
e
:
raise
AudioTooLargeError
(
str
(
e
))
except
UnsupportedAudioTypeServiceError
:
raise
UnsupportedAudioTypeError
()
except
ProviderNotSupportSpeechToTextServiceError
:
raise
ProviderNotSupportSpeechToTextError
()
except
ProviderTokenNotInitError
:
raise
ProviderNotInitializeError
()
except
QuotaExceededError
:
raise
ProviderQuotaExceededError
()
except
ModelCurrentlyNotSupportError
:
raise
ProviderModelCurrentlyNotSupportError
()
except
(
LLMBadRequestError
,
LLMAPIConnectionError
,
LLMAPIUnavailableError
,
LLMRateLimitError
,
LLMAuthorizationError
)
as
e
:
raise
CompletionRequestError
(
str
(
e
))
except
ValueError
as
e
:
raise
e
except
Exception
as
e
:
logging
.
exception
(
"internal server error."
)
raise
InternalServerError
()
api
.
add_resource
(
UniversalChatAudioApi
,
'/universal-chat/audio-to-text'
)
\ No newline at end of file
api/controllers/console/universal_chat/chat.py
0 → 100644
View file @
055d2c45
import
json
import
logging
from
typing
import
Generator
,
Union
from
flask
import
Response
,
stream_with_context
from
flask_login
import
current_user
from
flask_restful
import
reqparse
from
werkzeug.exceptions
import
InternalServerError
,
NotFound
import
services
from
controllers.console
import
api
from
controllers.console.app.error
import
ConversationCompletedError
,
AppUnavailableError
,
ProviderNotInitializeError
,
\
ProviderQuotaExceededError
,
ProviderModelCurrentlyNotSupportError
,
CompletionRequestError
from
controllers.console.universal_chat.wraps
import
UniversalChatResource
from
core.conversation_message_task
import
PubHandler
from
core.llm.error
import
ProviderTokenNotInitError
,
QuotaExceededError
,
ModelCurrentlyNotSupportError
,
\
LLMBadRequestError
,
LLMAPIConnectionError
,
LLMAPIUnavailableError
,
LLMRateLimitError
,
LLMAuthorizationError
from
libs.helper
import
uuid_value
from
services.completion_service
import
CompletionService
class
UniversalChatApi
(
UniversalChatResource
):
def
post
(
self
,
universal_app
):
app_model
=
universal_app
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'query'
,
type
=
str
,
required
=
True
,
location
=
'json'
)
parser
.
add_argument
(
'conversation_id'
,
type
=
uuid_value
,
location
=
'json'
)
parser
.
add_argument
(
'model'
,
type
=
str
,
required
=
True
,
location
=
'json'
)
parser
.
add_argument
(
'tools'
,
type
=
list
,
required
=
True
,
location
=
'json'
)
args
=
parser
.
parse_args
()
# todo update app model config
args
[
'model_config'
]
=
{}
args
[
'inputs'
]
=
{}
del
args
[
'model'
]
del
args
[
'tools'
]
try
:
response
=
CompletionService
.
completion
(
app_model
=
app_model
,
user
=
current_user
,
args
=
args
,
from_source
=
'console'
,
streaming
=
True
)
return
compact_response
(
response
)
except
services
.
errors
.
conversation
.
ConversationNotExistsError
:
raise
NotFound
(
"Conversation Not Exists."
)
except
services
.
errors
.
conversation
.
ConversationCompletedError
:
raise
ConversationCompletedError
()
except
services
.
errors
.
app_model_config
.
AppModelConfigBrokenError
:
logging
.
exception
(
"App model config broken."
)
raise
AppUnavailableError
()
except
ProviderTokenNotInitError
:
raise
ProviderNotInitializeError
()
except
QuotaExceededError
:
raise
ProviderQuotaExceededError
()
except
ModelCurrentlyNotSupportError
:
raise
ProviderModelCurrentlyNotSupportError
()
except
(
LLMBadRequestError
,
LLMAPIConnectionError
,
LLMAPIUnavailableError
,
LLMRateLimitError
,
LLMAuthorizationError
)
as
e
:
raise
CompletionRequestError
(
str
(
e
))
except
ValueError
as
e
:
raise
e
except
Exception
as
e
:
logging
.
exception
(
"internal server error."
)
raise
InternalServerError
()
class
UniversalChatStopApi
(
UniversalChatResource
):
def
post
(
self
,
universal_app
,
task_id
):
PubHandler
.
stop
(
current_user
,
task_id
)
return
{
'result'
:
'success'
},
200
def
compact_response
(
response
:
Union
[
dict
|
Generator
])
->
Response
:
if
isinstance
(
response
,
dict
):
return
Response
(
response
=
json
.
dumps
(
response
),
status
=
200
,
mimetype
=
'application/json'
)
else
:
def
generate
()
->
Generator
:
try
:
for
chunk
in
response
:
yield
chunk
except
services
.
errors
.
conversation
.
ConversationNotExistsError
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
NotFound
(
"Conversation Not Exists."
))
.
get_json
())
+
"
\n\n
"
except
services
.
errors
.
conversation
.
ConversationCompletedError
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
ConversationCompletedError
())
.
get_json
())
+
"
\n\n
"
except
services
.
errors
.
app_model_config
.
AppModelConfigBrokenError
:
logging
.
exception
(
"App model config broken."
)
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
AppUnavailableError
())
.
get_json
())
+
"
\n\n
"
except
ProviderTokenNotInitError
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
ProviderNotInitializeError
())
.
get_json
())
+
"
\n\n
"
except
QuotaExceededError
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
ProviderQuotaExceededError
())
.
get_json
())
+
"
\n\n
"
except
ModelCurrentlyNotSupportError
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
ProviderModelCurrentlyNotSupportError
())
.
get_json
())
+
"
\n\n
"
except
(
LLMBadRequestError
,
LLMAPIConnectionError
,
LLMAPIUnavailableError
,
LLMRateLimitError
,
LLMAuthorizationError
)
as
e
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
CompletionRequestError
(
str
(
e
)))
.
get_json
())
+
"
\n\n
"
except
ValueError
as
e
:
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
e
)
.
get_json
())
+
"
\n\n
"
except
Exception
:
logging
.
exception
(
"internal server error."
)
yield
"data: "
+
json
.
dumps
(
api
.
handle_error
(
InternalServerError
())
.
get_json
())
+
"
\n\n
"
return
Response
(
stream_with_context
(
generate
()),
status
=
200
,
mimetype
=
'text/event-stream'
)
api
.
add_resource
(
UniversalChatApi
,
'/universal-chat/messages'
)
api
.
add_resource
(
UniversalChatStopApi
,
'universal-chat/messages/<string:task_id>/stop'
)
api/controllers/console/universal_chat/conversation.py
0 → 100644
View file @
055d2c45
# -*- coding:utf-8 -*-
from
flask_login
import
current_user
from
flask_restful
import
fields
,
reqparse
,
marshal_with
from
flask_restful.inputs
import
int_range
from
werkzeug.exceptions
import
NotFound
from
controllers.console
import
api
from
controllers.console.universal_chat.wraps
import
UniversalChatResource
from
libs.helper
import
TimestampField
,
uuid_value
from
services.conversation_service
import
ConversationService
from
services.errors.conversation
import
LastConversationNotExistsError
,
ConversationNotExistsError
from
services.web_conversation_service
import
WebConversationService
conversation_fields
=
{
'id'
:
fields
.
String
,
'name'
:
fields
.
String
,
'inputs'
:
fields
.
Raw
,
'status'
:
fields
.
String
,
'introduction'
:
fields
.
String
,
'created_at'
:
TimestampField
,
'agent_mode'
:
fields
.
Raw
,
# todo ADD AGENT MODE INFO
}
conversation_infinite_scroll_pagination_fields
=
{
'limit'
:
fields
.
Integer
,
'has_more'
:
fields
.
Boolean
,
'data'
:
fields
.
List
(
fields
.
Nested
(
conversation_fields
))
}
class
UniversalChatConversationListApi
(
UniversalChatResource
):
@
marshal_with
(
conversation_infinite_scroll_pagination_fields
)
def
get
(
self
,
universal_app
):
app_model
=
universal_app
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'last_id'
,
type
=
uuid_value
,
location
=
'args'
)
parser
.
add_argument
(
'limit'
,
type
=
int_range
(
1
,
100
),
required
=
False
,
default
=
20
,
location
=
'args'
)
parser
.
add_argument
(
'pinned'
,
type
=
str
,
choices
=
[
'true'
,
'false'
,
None
],
location
=
'args'
)
args
=
parser
.
parse_args
()
pinned
=
None
if
'pinned'
in
args
and
args
[
'pinned'
]
is
not
None
:
pinned
=
True
if
args
[
'pinned'
]
==
'true'
else
False
try
:
return
WebConversationService
.
pagination_by_last_id
(
app_model
=
app_model
,
user
=
current_user
,
last_id
=
args
[
'last_id'
],
limit
=
args
[
'limit'
],
pinned
=
pinned
)
except
LastConversationNotExistsError
:
raise
NotFound
(
"Last Conversation Not Exists."
)
class
UniversalChatConversationApi
(
UniversalChatResource
):
def
delete
(
self
,
universal_app
,
c_id
):
app_model
=
universal_app
conversation_id
=
str
(
c_id
)
ConversationService
.
delete
(
app_model
,
conversation_id
,
current_user
)
WebConversationService
.
unpin
(
app_model
,
conversation_id
,
current_user
)
return
{
"result"
:
"success"
},
204
class
UniversalChatConversationRenameApi
(
UniversalChatResource
):
@
marshal_with
(
conversation_fields
)
def
post
(
self
,
universal_app
,
c_id
):
app_model
=
universal_app
conversation_id
=
str
(
c_id
)
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'name'
,
type
=
str
,
required
=
True
,
location
=
'json'
)
args
=
parser
.
parse_args
()
try
:
return
ConversationService
.
rename
(
app_model
,
conversation_id
,
current_user
,
args
[
'name'
])
except
ConversationNotExistsError
:
raise
NotFound
(
"Conversation Not Exists."
)
class
UniversalChatConversationPinApi
(
UniversalChatResource
):
def
patch
(
self
,
universal_app
,
c_id
):
app_model
=
universal_app
conversation_id
=
str
(
c_id
)
try
:
WebConversationService
.
pin
(
app_model
,
conversation_id
,
current_user
)
except
ConversationNotExistsError
:
raise
NotFound
(
"Conversation Not Exists."
)
return
{
"result"
:
"success"
}
class
UniversalChatConversationUnPinApi
(
UniversalChatResource
):
def
patch
(
self
,
universal_app
,
c_id
):
app_model
=
universal_app
conversation_id
=
str
(
c_id
)
WebConversationService
.
unpin
(
app_model
,
conversation_id
,
current_user
)
return
{
"result"
:
"success"
}
api
.
add_resource
(
UniversalChatConversationRenameApi
,
'/universal-chat/conversations/<uuid:c_id>/name'
)
api
.
add_resource
(
UniversalChatConversationListApi
,
'/universal-chat/conversations'
)
api
.
add_resource
(
UniversalChatConversationApi
,
'/universal-chat/conversations/<uuid:c_id>'
)
api
.
add_resource
(
UniversalChatConversationPinApi
,
'/universal-chat/conversations/<uuid:c_id>/pin'
)
api
.
add_resource
(
UniversalChatConversationUnPinApi
,
'/universal-chat>/conversations/<uuid:c_id>/unpin'
)
api/controllers/console/universal_chat/message.py
0 → 100644
View file @
055d2c45
# -*- coding:utf-8 -*-
import
logging
from
flask_login
import
current_user
from
flask_restful
import
reqparse
,
fields
,
marshal_with
from
flask_restful.inputs
import
int_range
from
werkzeug.exceptions
import
NotFound
,
InternalServerError
import
services
from
controllers.console
import
api
from
controllers.console.app.error
import
ProviderNotInitializeError
,
\
ProviderQuotaExceededError
,
ProviderModelCurrentlyNotSupportError
,
CompletionRequestError
from
controllers.console.explore.error
import
AppSuggestedQuestionsAfterAnswerDisabledError
from
controllers.console.universal_chat.wraps
import
UniversalChatResource
from
core.llm.error
import
LLMRateLimitError
,
LLMBadRequestError
,
LLMAuthorizationError
,
LLMAPIConnectionError
,
\
ProviderTokenNotInitError
,
LLMAPIUnavailableError
,
QuotaExceededError
,
ModelCurrentlyNotSupportError
from
libs.helper
import
uuid_value
,
TimestampField
from
services.errors.conversation
import
ConversationNotExistsError
from
services.errors.message
import
MessageNotExistsError
,
SuggestedQuestionsAfterAnswerDisabledError
from
services.message_service
import
MessageService
class
UniversalChatMessageListApi
(
UniversalChatResource
):
feedback_fields
=
{
'rating'
:
fields
.
String
}
message_fields
=
{
'id'
:
fields
.
String
,
'conversation_id'
:
fields
.
String
,
'inputs'
:
fields
.
Raw
,
'query'
:
fields
.
String
,
'answer'
:
fields
.
String
,
'feedback'
:
fields
.
Nested
(
feedback_fields
,
attribute
=
'user_feedback'
,
allow_null
=
True
),
'created_at'
:
TimestampField
,
'agent_thought'
:
fields
.
Raw
,
# TODO ADD agent_thought
}
message_infinite_scroll_pagination_fields
=
{
'limit'
:
fields
.
Integer
,
'has_more'
:
fields
.
Boolean
,
'data'
:
fields
.
List
(
fields
.
Nested
(
message_fields
))
}
@
marshal_with
(
message_infinite_scroll_pagination_fields
)
def
get
(
self
,
universal_app
):
app_model
=
universal_app
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'conversation_id'
,
required
=
True
,
type
=
uuid_value
,
location
=
'args'
)
parser
.
add_argument
(
'first_id'
,
type
=
uuid_value
,
location
=
'args'
)
parser
.
add_argument
(
'limit'
,
type
=
int_range
(
1
,
100
),
required
=
False
,
default
=
20
,
location
=
'args'
)
args
=
parser
.
parse_args
()
try
:
return
MessageService
.
pagination_by_first_id
(
app_model
,
current_user
,
args
[
'conversation_id'
],
args
[
'first_id'
],
args
[
'limit'
])
except
services
.
errors
.
conversation
.
ConversationNotExistsError
:
raise
NotFound
(
"Conversation Not Exists."
)
except
services
.
errors
.
message
.
FirstMessageNotExistsError
:
raise
NotFound
(
"First Message Not Exists."
)
class
UniversalChatMessageFeedbackApi
(
UniversalChatResource
):
def
post
(
self
,
universal_app
,
message_id
):
app_model
=
universal_app
message_id
=
str
(
message_id
)
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'rating'
,
type
=
str
,
choices
=
[
'like'
,
'dislike'
,
None
],
location
=
'json'
)
args
=
parser
.
parse_args
()
try
:
MessageService
.
create_feedback
(
app_model
,
message_id
,
current_user
,
args
[
'rating'
])
except
services
.
errors
.
message
.
MessageNotExistsError
:
raise
NotFound
(
"Message Not Exists."
)
return
{
'result'
:
'success'
}
class
UniversalChatMessageSuggestedQuestionApi
(
UniversalChatResource
):
def
get
(
self
,
universal_app
,
message_id
):
app_model
=
universal_app
message_id
=
str
(
message_id
)
try
:
questions
=
MessageService
.
get_suggested_questions_after_answer
(
app_model
=
app_model
,
user
=
current_user
,
message_id
=
message_id
)
except
MessageNotExistsError
:
raise
NotFound
(
"Message not found"
)
except
ConversationNotExistsError
:
raise
NotFound
(
"Conversation not found"
)
except
SuggestedQuestionsAfterAnswerDisabledError
:
raise
AppSuggestedQuestionsAfterAnswerDisabledError
()
except
ProviderTokenNotInitError
:
raise
ProviderNotInitializeError
()
except
QuotaExceededError
:
raise
ProviderQuotaExceededError
()
except
ModelCurrentlyNotSupportError
:
raise
ProviderModelCurrentlyNotSupportError
()
except
(
LLMBadRequestError
,
LLMAPIConnectionError
,
LLMAPIUnavailableError
,
LLMRateLimitError
,
LLMAuthorizationError
)
as
e
:
raise
CompletionRequestError
(
str
(
e
))
except
Exception
:
logging
.
exception
(
"internal server error."
)
raise
InternalServerError
()
return
{
'data'
:
questions
}
api
.
add_resource
(
UniversalChatMessageListApi
,
'/universal-chat/messages'
)
api
.
add_resource
(
UniversalChatMessageFeedbackApi
,
'/universal-chat/messages/<uuid:message_id>/feedbacks'
)
api
.
add_resource
(
UniversalChatMessageSuggestedQuestionApi
,
'/universal-chat/messages/<uuid:message_id>/suggested-questions'
)
api/controllers/console/universal_chat/parameter.py
0 → 100644
View file @
055d2c45
# -*- coding:utf-8 -*-
from
flask_restful
import
marshal_with
,
fields
from
controllers.console
import
api
from
controllers.console.universal_chat.wraps
import
UniversalChatResource
class
UniversalChatParameterApi
(
UniversalChatResource
):
"""Resource for app variables."""
parameters_fields
=
{
'opening_statement'
:
fields
.
String
,
'suggested_questions'
:
fields
.
Raw
,
'suggested_questions_after_answer'
:
fields
.
Raw
,
'speech_to_text'
:
fields
.
Raw
,
}
@
marshal_with
(
parameters_fields
)
def
get
(
self
,
universal_app
):
"""Retrieve app parameters."""
app_model
=
universal_app
app_model_config
=
app_model
.
app_model_config
return
{
'opening_statement'
:
app_model_config
.
opening_statement
,
'suggested_questions'
:
app_model_config
.
suggested_questions_list
,
'suggested_questions_after_answer'
:
app_model_config
.
suggested_questions_after_answer_dict
,
'speech_to_text'
:
app_model_config
.
speech_to_text_dict
,
}
api
.
add_resource
(
UniversalChatParameterApi
,
'/universal-chat/parameters'
)
api/controllers/console/universal_chat/wraps.py
0 → 100644
View file @
055d2c45
import
json
from
functools
import
wraps
from
flask_login
import
login_required
,
current_user
from
flask_restful
import
Resource
from
controllers.console.setup
import
setup_required
from
controllers.console.wraps
import
account_initialization_required
from
extensions.ext_database
import
db
from
models.model
import
App
,
AppModelConfig
def
universal_chat_app_required
(
view
=
None
):
def
decorator
(
view
):
@
wraps
(
view
)
def
decorated
(
*
args
,
**
kwargs
):
# get universal chat app
universal_app
=
db
.
session
.
query
(
App
)
.
filter
(
App
.
tenant_id
==
current_user
.
current_tenant_id
,
App
.
is_universal
is
True
)
.
first
()
if
universal_app
is
None
:
# create universal app if not exists
universal_app
=
App
(
tenant_id
=
current_user
.
current_tenant_id
,
name
=
'Universal Chat'
,
mode
=
'chat'
,
is_universal
=
True
,
icon
=
''
,
icon_background
=
''
,
description
=
'Universal Chat'
,
api_rpm
=
0
,
api_rph
=
0
,
status
=
'normal'
)
db
.
session
.
add
(
universal_app
)
db
.
session
.
flush
()
app_model_config
=
AppModelConfig
(
provider
=
""
,
model_id
=
""
,
configs
=
{},
opening_statement
=
''
,
suggested_questions
=
json
.
dumps
([]),
suggested_questions_after_answer
=
json
.
dumps
({
'enabled'
:
True
}),
speech_to_text
=
json
.
dumps
({
'enabled'
:
True
}),
more_like_this
=
None
,
sensitive_word_avoidance
=
None
,
model
=
json
.
dumps
({
"provider"
:
"openai"
,
"name"
:
"gpt-3.5-turbo-16k"
,
"completion_params"
:
{
"max_tokens"
:
800
,
"temperature"
:
0.8
,
"top_p"
:
1
,
"presence_penalty"
:
0
,
"frequency_penalty"
:
0
}
}),
user_input_form
=
json
.
dumps
([]),
pre_prompt
=
None
,
agent_mode
=
json
.
dumps
({
"enabled"
:
True
,
"strategy"
:
None
,
"tools"
:
[]}),
)
app_model_config
.
app_id
=
universal_app
.
id
db
.
session
.
add
(
app_model_config
)
db
.
session
.
flush
()
return
view
(
universal_app
,
*
args
,
**
kwargs
)
return
decorated
if
view
:
return
decorator
(
view
)
return
decorator
class
UniversalChatResource
(
Resource
):
# must be reversed if there are multiple decorators
method_decorators
=
[
universal_chat_app_required
,
account_initialization_required
,
login_required
,
setup_required
]
api/core/completion.py
View file @
055d2c45
...
...
@@ -368,6 +368,7 @@ And answer according to the language of the user's question.
query
=
message
.
query
,
inputs
=
message
.
inputs
,
chain_output
=
None
,
agent_execute_result
=
None
,
memory
=
None
)
...
...
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