Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
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
Boards
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
zhouwei
dify
Commits
aba7f88c
Commit
aba7f88c
authored
May 28, 2025
by
zhouwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
ac430824
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
243 additions
and
0 deletions
+243
-0
JSON翻译-自定义节点-火山DP.V3.yml
JSON翻译-自定义节点-火山DP.V3.yml
+243
-0
No files found.
JSON翻译-自定义节点-火山DP.V3.yml
0 → 100644
View file @
aba7f88c
app
:
description
:
自定义节点翻译
icon
:
✉️
icon_background
:
'
#E0F2FE'
mode
:
workflow
name
:
JSON翻译-自定义节点-火山DP.V3
use_icon_as_answer_icon
:
false
dependencies
:
[]
kind
:
app
version
:
0.1.5
workflow
:
conversation_variables
:
[]
environment_variables
:
[]
features
:
file_upload
:
allowed_file_extensions
:
-
.JPG
-
.JPEG
-
.PNG
-
.GIF
-
.WEBP
-
.SVG
allowed_file_types
:
-
image
allowed_file_upload_methods
:
-
local_file
-
remote_url
enabled
:
false
fileUploadConfig
:
audio_file_size_limit
:
50
batch_count_limit
:
5
file_size_limit
:
15
image_file_size_limit
:
10
video_file_size_limit
:
100
workflow_file_upload_limit
:
10
image
:
enabled
:
false
number_limits
:
3
transfer_methods
:
-
local_file
-
remote_url
number_limits
:
3
opening_statement
:
'
'
retriever_resource
:
enabled
:
false
sensitive_word_avoidance
:
enabled
:
false
speech_to_text
:
enabled
:
false
suggested_questions
:
[]
suggested_questions_after_answer
:
enabled
:
false
text_to_speech
:
enabled
:
false
language
:
'
'
voice
:
'
'
graph
:
edges
:
-
data
:
isInIteration
:
false
sourceType
:
code
targetType
:
end
id
:
1727242813814-source-1727235861736-target
source
:
'
1727242813814'
sourceHandle
:
source
target
:
'
1727235861736'
targetHandle
:
target
type
:
custom
zIndex
:
0
-
data
:
isInIteration
:
false
sourceType
:
start
targetType
:
code
id
:
1727233123593-source-1727242813814-target
source
:
'
1727233123593'
sourceHandle
:
source
target
:
'
1727242813814'
targetHandle
:
target
type
:
custom
zIndex
:
0
nodes
:
-
data
:
desc
:
"
{
\n
\"
msg_info
\"
:
\"
DeryckWhibley坚称他'不是骗子',前经理否认了性胁迫指控
\"
,
\n
\"
sys.files
\"\
:
[],
\n
\"
sys.user_id
\"
:
\"
sl_backend_twitter
\"\n
}"
selected
:
false
title
:
开始
type
:
start
variables
:
-
label
:
record_json
max_length
:
2000
options
:
[]
required
:
true
type
:
paragraph
variable
:
record_json
-
label
:
language
max_length
:
48
options
:
[]
required
:
true
type
:
text-input
variable
:
language
height
:
223
id
:
'
1727233123593'
position
:
x
:
-105.5169855696115
y
:
291.69166477189617
positionAbsolute
:
x
:
-105.5169855696115
y
:
291.69166477189617
selected
:
false
sourcePosition
:
right
targetPosition
:
left
type
:
custom
width
:
243
-
data
:
desc
:
'
'
outputs
:
-
value_selector
:
-
'
1727242813814'
-
result
variable
:
result
selected
:
false
title
:
结束
type
:
end
height
:
89
id
:
'
1727235861736'
position
:
x
:
835.563046011431
y
:
300.9114449432623
positionAbsolute
:
x
:
835.563046011431
y
:
300.9114449432623
selected
:
false
sourcePosition
:
right
targetPosition
:
left
type
:
custom
width
:
243
-
data
:
code
:
"
import
json
\n
from
typing
import
List,
Dict,
Optional
\n\n
import
requests
\n\
\n
#
Constants
\n
DEEP_SEEK_URL
=
\"
https://ark.cn-beijing.volces.com/api/v3/chat/completions
\"\
\n\n\n
class
DeepSeekAIService:
\n
def
__init__(self,
api_translate_key:
\
\
str):
\n
self.api_translate_key
=
api_translate_key
\n\n
def
translate(self,
\
\
translate_dto:
Dict)
->
Optional[Dict]:
\n
chat_input_data
=
{
\n\
\
\"
model
\"
:
\"
deepseek-v3-250324
\"
,
\n
\"
stream
\"\
:
False,
\n
\"
messages
\"
:
[]
\n
}
\n
self._build_translate(chat_input_data,
\
\
translate_dto)
\n
chat_completion_response
=
self._ai_request(chat_input_data)
\n\
\n
if
chat_completion_response.get(
\"
choices
\"
):
\n
return
\
\
{
\n
\"
answer
\"
:
chat_completion_response[
\"
choices
\"
][0][
\"\
message
\"
][
\"
content
\"
]
\n
}
\n
return
None
\n\n
def
news_tags(self,
\
\
translate_dto:
Dict)
->
Optional[Dict]:
\n
chat_input_data
=
{
\n\
\
\"
model
\"
:
\"
deepseek-v3-250324
\"
,
\n
\"
stream
\"\
:
False,
\n
\"
messages
\"
:
[]
\n
}
\n
self._build_news_tag(chat_input_data,
\
\
translate_dto)
\n
chat_completion_response
=
self._ai_request(chat_input_data)
\n\
\n
if
chat_completion_response.get(
\"
choices
\"
):
\n
return
\
\
{
\n
\"
answer
\"
:
chat_completion_response[
\"
choices
\"
][0][
\"\
message
\"
][
\"
content
\"
]
\n
}
\n
return
None
\n\n
def
_build_news_tag(self,
\
\
chat_input_data:
Dict,
translate_dto:
Dict)
->
None:
\n
system_message
\
\
=
self._get_system_tag_deep_seek_message()
\n
user_message
=
self._get_user_tag_deep_seek_message(translate_dto)
\n\
\
chat_input_data[
\"
messages
\"
].extend([system_message,
user_message])
\n\
\n
def
_ai_request(self,
chat_input_data:
Dict)
->
Dict:
\n
json_data
\
\
=
json.dumps(chat_input_data,
ensure_ascii=False)
\n
headers
=
self._get_headers(self.api_translate_key)
\n\
\
response
=
requests.post(
\n
DEEP_SEEK_URL,
\n
\
\
headers=headers,
\n
json=chat_input_data,
\n
timeout=(3,
\
\
100)
\n
)
\n\n
if
response.status_code
==
200:
\n
\
\
return
response.json()
\n
raise
Exception(
\"
Translation
error
\"\
)
\n\n
def
_build_translate(self,
chat_input_data:
Dict,
translate_dto:
\
\
Dict)
->
None:
\n
system_message
=
self._get_deep_seek_message(translate_dto)
\n\
\
chat_input_data[
\"
messages
\"
].append(system_message)
\n\n
@staticmethod
\n\
\
def
_get_deep_seek_message(translate_dto:
Dict)
->
Dict:
\n
content
\
\
=
(
\n
f
\"
需要翻译的JSON:{translate_dto['inputs']['record_json']}
\\\
n
\\
n
\"\n
f
\"
你是一个
JSON
翻译员,能够将给定的
JSON
中的
value
值部分翻译成
`{translate_dto['inputs']['language']}`。
\\\
n
\\
n
\"\n
\"
##
限制
\\
n
\"\n
\"
-
严格按照要求进行翻译,不改变
JSON
的结构和无意义的
\
\
key
的
value。
\\
n
\"\n
\"
-
仅翻译有意义的
value
部分,确保翻译准确、通顺。
\"\n
\
\
\"
-
无需任何其他说明。
\"\n
\"
-
数字、特殊符号(@#%&等)连接的单词无需翻译,其他还需翻译。
\"\
\n
)
\n
return
{
\"
role
\"
:
\"
user
\"
,
\"
content
\"
:
content}
\n\
\n
@staticmethod
\n
def
_get_user_tag_deep_seek_message(translate_dto:
\
\
Dict)
->
Dict:
\n
return
{
\"
role
\"
:
\"
user
\"
,
\"
content
\"
:
translate_dto[
\"\
inputs
\"
][
\"
record_json
\"
]}
\n\n
@staticmethod
\n
def
_get_system_tag_deep_seek_message()
\
\
->
Dict:
\n
content
=
(
\n
\"
```xml
\\
n
\"\n
\
\ \"
<instruction>
\\
n
\"\n
\"
对多条新闻内容进行打标签,标签分别为枪击、抢劫、爆炸、恐怖袭击、纵火、大规模伤亡事件、人质事件、毒气泄漏、自然灾害、生物危害、交通意外、建筑物倒塌、食品安全、社会冲突、群体性事件等。请按照以下步骤完成任务:
\\\
n
\"\n
\"\\
n
\"\n
\"
1.
仔细阅读每条新闻内容,理解其核心事件。
\\
n
\"\n
\
\
\"
2.
根据新闻描述的事件类型,从给定的标签列表中选择最匹配的一个或多个标签。
\\
n
\"\n
\"\
3.
确保标签与新闻内容高度相关,避免主观臆断。
\\
n
\"\n
\"
4.
如果新闻内容涉及多个事件类型,可以分配多个标签,但需确保每个标签都准确反映新闻内容。
\\\
n
\"\n
\"
5.
输出结果时,仅列出标签名称,不要包含任何XML标签或其他无关内容。
\\
n
\"\n
\
\
\"\\
n
\"\n
\"
<examples>
\\
n
\"\n
\"
<example>
\\
n
\"\
\n
\"
<输入>
\\
n
\"\n
\"\\\"
昨日凌晨,某市一家银行发生持枪抢劫案,歹徒与警方交火后逃离现场,造成两名保安受伤。
\\\
\"\\
n
\"\n
\"
<输出>
\\
n
\"\n
\"
枪击,
抢劫
\\
n
\"\n
\
\
\"
</example>
\\
n
\"\n
\"\\
n
\"\n
\"
<example>
\\
n
\"\n\
\
\"
<输入>
\\
n
\"\n
\"\\\"
今日上午,某化工厂发生毒气泄漏事故,附近居民已被紧急疏散,暂无人员伤亡报告。
\\\
\"\\
n
\"\n
\"
<输出>
\\
n
\"\n
\"
毒气泄漏
\\
n
\"\n
\"\
</example>
\\
n
\"\n
\"\\
n
\"\n
\"
<example>
\\
n
\"\n
\
\
\"
<输入>
\\
n
\"\n
\"\\\"
近日,某地因征地问题引发大规模抗议活动,数百名民众与警方发生冲突,导致多人受伤。
\\\
\"\\
n
\"\n
\"
<输出>
\\
n
\"\n
\"
社会冲突,
群体性事件
\\
n
\"\n
\
\
\"
</example>
\\
n
\"\n
\"
</examples>
\\
n
\"\n
\"\
\\
n
\"\n
\"
注意事项:
\\
n
\"\n
\"
-
标签必须严格从给定的列表中选择,不得自行添加或修改标签名称。
\\\
n
\"\n
\"
-
如果新闻内容与任何标签都不匹配,则输出
\\\"\\\"
。
\\
n
\"\n
\"
-
\
\
输出时标签之间用逗号分隔,不要使用编号或项目符号。
\\
n
\"\n
\"
-
确保标签的准确性和一致性,避免歧义或模糊分类。
\\\
n
\"\n
\"\\
n
\"\n
\"
请严格按照上述要求完成任务,确保输出结果简洁、准确且符合规范。
\\\
n
\"\n
\"
</instruction>
\\
n
\"\n
\"
```
\"\n
)
\n\
\
return
{
\"
role
\"
:
\"
system
\"
,
\"
content
\"
:
content}
\n\n
@staticmethod
\n\
\
def
_get_headers(token:
str)
->
Dict[str,
str]:
\n
return
{
\n\
\
\"
Content-Type
\"
:
\"
application/json
\"
,
\n
\"
Authorization
\"\
:
f
\"
Bearer
{token}
\"\n
}
\n\n\n
def
main(record_json:
str,
language:
\
\
str)
->
dict:
\n
service
=
DeepSeekAIService(api_translate_key=
\"
b02a03e9-2bf9-467e-9cc0-5b94c80e2c79
\"\
)
\n\n
#
Example
translation
\n
translate_dto
=
{
\n
\"
inputs
\"\
:
{
\n
\"
record_json
\"
:record_json
,
\n
\"
language
\"\
:
language
\n
}
\n
}
\n
result
=
service.translate(translate_dto)
\n\
\
json_data
=
json.dumps(result,
ensure_ascii=False)
\n
return
{
\"\
result
\"
:result}"
code_language
:
python3
desc
:
'
'
outputs
:
result
:
children
:
null
type
:
object
selected
:
true
title
:
KnResult2Obj
type
:
code
variables
:
-
value_selector
:
-
'
1727233123593'
-
record_json
variable
:
record_json
-
value_selector
:
-
'
1727233123593'
-
language
variable
:
language
height
:
53
id
:
'
1727242813814'
position
:
x
:
313.7392513312235
y
:
315.98770119587266
positionAbsolute
:
x
:
313.7392513312235
y
:
315.98770119587266
selected
:
true
sourcePosition
:
right
targetPosition
:
left
type
:
custom
width
:
243
viewport
:
x
:
283.817091622728
y
:
107.90883079347005
zoom
:
0.519265922368533
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