Skip to content

Commit 5e35000

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents cfb6992 + ff3dec2 commit 5e35000

File tree

63 files changed

+990
-127
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+990
-127
lines changed

.github/workflows/build-and-push-python-pg.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ on:
1414
- linux/amd64,linux/arm64
1515
jobs:
1616
build-and-push-python-pg-to-ghcr:
17-
runs-on: ubuntu-latest
17+
runs-on: ubuntu-22.04
1818
steps:
1919
- name: Check Disk Space
2020
run: df -h
@@ -50,6 +50,9 @@ jobs:
5050
${DOCKER_IMAGE_TAGS} .
5151
- name: Set up QEMU
5252
uses: docker/setup-qemu-action@v3
53+
with:
54+
# Until https://github.com/tonistiigi/binfmt/issues/215
55+
image: tonistiigi/binfmt:qemu-v7.0.0-28
5356
- name: Set up Docker Buildx
5457
uses: docker/setup-buildx-action@v3
5558
- name: Login to GitHub Container Registry

.github/workflows/build-and-push-vector-model.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ on:
1919

2020
jobs:
2121
build-and-push-vector-model-to-ghcr:
22-
runs-on: ubuntu-latest
22+
runs-on: ubuntu-22.04
2323
steps:
2424
- name: Check Disk Space
2525
run: df -h
@@ -55,6 +55,9 @@ jobs:
5555
${DOCKER_IMAGE_TAGS} .
5656
- name: Set up QEMU
5757
uses: docker/setup-qemu-action@v3
58+
with:
59+
# Until https://github.com/tonistiigi/binfmt/issues/215
60+
image: tonistiigi/binfmt:qemu-v7.0.0-28
5861
- name: Set up Docker Buildx
5962
uses: docker/setup-buildx-action@v3
6063
- name: Login to GitHub Container Registry

.github/workflows/build-and-push.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ on:
3636
jobs:
3737
build-and-push-to-fit2cloud-registry:
3838
if: ${{ contains(github.event.inputs.registry, 'fit2cloud') }}
39-
runs-on: ubuntu-latest
39+
runs-on: ubuntu-22.04
4040
steps:
4141
- name: Check Disk Space
4242
run: df -h
@@ -73,6 +73,9 @@ jobs:
7373
${DOCKER_IMAGE_TAGS} .
7474
- name: Set up QEMU
7575
uses: docker/setup-qemu-action@v3
76+
with:
77+
# Until https://github.com/tonistiigi/binfmt/issues/215
78+
image: tonistiigi/binfmt:qemu-v7.0.0-28
7679
- name: Set up Docker Buildx
7780
uses: docker/setup-buildx-action@v3
7881
- name: Login to GitHub Container Registry
@@ -93,7 +96,7 @@ jobs:
9396
9497
build-and-push-to-dockerhub:
9598
if: ${{ contains(github.event.inputs.registry, 'dockerhub') }}
96-
runs-on: ubuntu-latest
99+
runs-on: ubuntu-22.04
97100
steps:
98101
- name: Check Disk Space
99102
run: df -h
@@ -130,6 +133,9 @@ jobs:
130133
${DOCKER_IMAGE_TAGS} .
131134
- name: Set up QEMU
132135
uses: docker/setup-qemu-action@v3
136+
with:
137+
# Until https://github.com/tonistiigi/binfmt/issues/215
138+
image: tonistiigi/binfmt:qemu-v7.0.0-28
133139
- name: Set up Docker Buildx
134140
uses: docker/setup-buildx-action@v3
135141
- name: Login to GitHub Container Registry

apps/application/flow/step_node/application_node/i_application_node.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111

1212
class ApplicationNodeSerializer(serializers.Serializer):
1313
application_id = serializers.CharField(required=True, error_messages=ErrMessage.char(_("Application ID")))
14-
question_reference_address = serializers.ListField(required=True, error_messages=ErrMessage.list(_("User Questions")))
14+
question_reference_address = serializers.ListField(required=True,
15+
error_messages=ErrMessage.list(_("User Questions")))
1516
api_input_field_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("API Input Fields")))
16-
user_input_field_list = serializers.ListField(required=False, error_messages=ErrMessage.uuid(_("User Input Fields")))
17+
user_input_field_list = serializers.ListField(required=False,
18+
error_messages=ErrMessage.uuid(_("User Input Fields")))
1719
image_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("picture")))
1820
document_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("document")))
1921
audio_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("Audio")))
20-
child_node = serializers.DictField(required=False, allow_null=True, error_messages=ErrMessage.dict(_("Child Nodes")))
22+
child_node = serializers.DictField(required=False, allow_null=True,
23+
error_messages=ErrMessage.dict(_("Child Nodes")))
2124
node_data = serializers.DictField(required=False, allow_null=True, error_messages=ErrMessage.dict(_("Form Data")))
2225

2326

@@ -33,11 +36,16 @@ def _run(self):
3336
self.node_params_serializer.data.get('question_reference_address')[1:])
3437
kwargs = {}
3538
for api_input_field in self.node_params_serializer.data.get('api_input_field_list', []):
36-
kwargs[api_input_field['variable']] = self.workflow_manage.get_reference_field(api_input_field['value'][0],
37-
api_input_field['value'][1:])
39+
value = api_input_field.get('value', [''])[0] if api_input_field.get('value') else ''
40+
kwargs[api_input_field['variable']] = self.workflow_manage.get_reference_field(value,
41+
api_input_field['value'][
42+
1:]) if value != '' else ''
43+
3844
for user_input_field in self.node_params_serializer.data.get('user_input_field_list', []):
39-
kwargs[user_input_field['field']] = self.workflow_manage.get_reference_field(user_input_field['value'][0],
40-
user_input_field['value'][1:])
45+
value = user_input_field.get('value', [''])[0] if user_input_field.get('value') else ''
46+
kwargs[user_input_field['field']] = self.workflow_manage.get_reference_field(value,
47+
user_input_field['value'][
48+
1:]) if value != '' else ''
4149
# 判断是否包含这个属性
4250
app_document_list = self.node_params_serializer.data.get('document_list', [])
4351
if app_document_list and len(app_document_list) > 0:
@@ -46,15 +54,17 @@ def _run(self):
4654
app_document_list[1:])
4755
for document in app_document_list:
4856
if 'file_id' not in document:
49-
raise ValueError(_("Parameter value error: The uploaded document lacks file_id, and the document upload fails"))
57+
raise ValueError(
58+
_("Parameter value error: The uploaded document lacks file_id, and the document upload fails"))
5059
app_image_list = self.node_params_serializer.data.get('image_list', [])
5160
if app_image_list and len(app_image_list) > 0:
5261
app_image_list = self.workflow_manage.get_reference_field(
5362
app_image_list[0],
5463
app_image_list[1:])
5564
for image in app_image_list:
5665
if 'file_id' not in image:
57-
raise ValueError(_("Parameter value error: The uploaded image lacks file_id, and the image upload fails"))
66+
raise ValueError(
67+
_("Parameter value error: The uploaded image lacks file_id, and the image upload fails"))
5868

5969
app_audio_list = self.node_params_serializer.data.get('audio_list', [])
6070
if app_audio_list and len(app_audio_list) > 0:
@@ -63,7 +73,8 @@ def _run(self):
6373
app_audio_list[1:])
6474
for audio in app_audio_list:
6575
if 'file_id' not in audio:
66-
raise ValueError(_("Parameter value error: The uploaded audio lacks file_id, and the audio upload fails."))
76+
raise ValueError(
77+
_("Parameter value error: The uploaded audio lacks file_id, and the audio upload fails."))
6778
return self.execute(**self.node_params_serializer.data, **self.flow_params_serializer.data,
6879
app_document_list=app_document_list, app_image_list=app_image_list,
6980
app_audio_list=app_audio_list,

apps/application/flow/step_node/application_node/impl/base_application_node.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,20 +220,25 @@ def execute(self, application_id, message, chat_id, chat_record_id, stream, re_c
220220
def get_details(self, index: int, **kwargs):
221221
global_fields = []
222222
for api_input_field in self.node_params_serializer.data.get('api_input_field_list', []):
223+
value = api_input_field.get('value', [''])[0] if api_input_field.get('value') else ''
223224
global_fields.append({
224225
'label': api_input_field['variable'],
225226
'key': api_input_field['variable'],
226227
'value': self.workflow_manage.get_reference_field(
227-
api_input_field['value'][0],
228-
api_input_field['value'][1:])
228+
value,
229+
api_input_field['value'][1:]
230+
) if value != '' else ''
229231
})
232+
230233
for user_input_field in self.node_params_serializer.data.get('user_input_field_list', []):
234+
value = user_input_field.get('value', [''])[0] if user_input_field.get('value') else ''
231235
global_fields.append({
232236
'label': user_input_field['label'],
233237
'key': user_input_field['field'],
234238
'value': self.workflow_manage.get_reference_field(
235-
user_input_field['value'][0],
236-
user_input_field['value'][1:])
239+
value,
240+
user_input_field['value'][1:]
241+
) if value != '' else ''
237242
})
238243
return {
239244
'name': self.node.properties.get('stepName'),

apps/application/flow/step_node/condition_node/impl/base_condition_node.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ def branch_assertion(self, branch):
3636
return all(condition_list) if condition == 'and' else any(condition_list)
3737

3838
def assertion(self, field_list: List[str], compare: str, value):
39+
try:
40+
value = self.workflow_manage.generate_prompt(value)
41+
except Exception as e:
42+
pass
3943
field_value = self.workflow_manage.get_reference_field(field_list[0], field_list[1:])
4044
for compare_handler in compare_handle_list:
4145
if compare_handler.support(field_list[0], field_list[1:], field_value, compare, value):

apps/application/serializers/application_serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ def edit(self, instance: Dict, with_valid=True):
374374
application_access_token.show_source = instance.get('show_source')
375375
if 'language' in instance and instance.get('language') is not None:
376376
application_access_token.language = instance.get('language')
377+
if 'language' not in instance or instance.get('language') is None:
378+
application_access_token.language = None
377379
application_access_token.save()
378380
application_setting_model = DBModelManage.get_model('application_setting')
379381
xpack_cache = DBModelManage.get_model('xpack_cache')

apps/application/serializers/chat_message_serializers.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,13 +222,19 @@ def chat(self, instance: Dict, with_valid=True):
222222
client_type = self.data.get('client_type')
223223
chat_id = self.generate_chat(chat_id, application_id, message, client_id)
224224
return ChatMessageSerializer(
225-
data={'chat_id': chat_id, 'message': message,
226-
're_chat': re_chat,
227-
'stream': stream,
228-
'application_id': application_id,
229-
'client_id': client_id,
230-
'client_type': client_type, 'form_data': instance.get('form_data', {})}).chat(
231-
base_to_response=OpenaiToResponse())
225+
data={
226+
'chat_id': chat_id, 'message': message,
227+
're_chat': re_chat,
228+
'stream': stream,
229+
'application_id': application_id,
230+
'client_id': client_id,
231+
'client_type': client_type,
232+
'form_data': instance.get('form_data', {}),
233+
'image_list': instance.get('image_list', []),
234+
'document_list': instance.get('document_list', []),
235+
'audio_list': instance.get('audio_list', []),
236+
}
237+
).chat(base_to_response=OpenaiToResponse())
232238

233239

234240
class ChatMessageSerializer(serializers.Serializer):

0 commit comments

Comments
 (0)