forked from Tomatio13/DifyWorkFlowGenerator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworkflow_generator_prompt.yml
1592 lines (1477 loc) · 60.9 KB
/
workflow_generator_prompt.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
prompt:
metadata:
title: Difyワークフロー生成プロンプト
version: 1.0.0
description: Difyのワークフローファイルを生成するためのプロンプト定義
input_requirements: |
以下の情報を提供してください:
1. ワークフローの目的(例:本の要約生成、商品説明文作成など)
2. 入力として必要な情報(例:本のタイトル、商品名と特徴など)
3. 出力として期待する形式や内容
4. 特別な制約条件(文字数制限、トーンの指定など)
instructions:
workflow_overview: |
提供された要件に基づいて、以下の要素を含むDifyワークフローファイル(YAML形式)を生成します:
- ノード(開始、LLM、終了)で構成されるワークフロー
- ノード間は順次実行されるよう接続(但し、指定された場合は並列実行も可能)
- 入力から出力までの一連の処理を自動化
required_structure:
app_info:
- mode: workflowを指定
- name: 目的を表す名前を設定
- version: 0.1.3を使用
workflow_graph:
edges:
- source: 開始ノードのID(例:'1731228343114')
target: LLMノードのID(例:'1731229438627')
data:
sourceType: start
targetType: llm
- source: LLMノードのID(例:'1731229438627')
target: 終了ノードのID(例:'1731228345560')
data:
sourceType: llm
targetType: end
- source: 質問分類器ノードのID
sourceHandle: '1' # 質問分類1用
target: ターゲットノードID1
targetHandle: target
data:
sourceType: question-classifier
targetType: [ターゲットノードタイプ]
- source: 質問分類器ノードのID
sourceHandle: '2' # 質問分類2用
target: ターゲットノードID2
targetHandle: target
data:
sourceType: question-classifier
targetType: [ターゲットノードタイプ]
- source: [IF/ELSEノードID]
target: [ターゲットノードID]
data:
sourceType: if-else
targetType: [ターゲットノードタイプ]
sourceHandle: 'true' # IF条件成立時
- source: [IF/ELSEノードID]
target: [別のターゲットノードID]
data:
sourceType: if-else
targetType: [ターゲットノードタイプ]
sourceHandle: 'false' # ELSE条件時
- source: [ツールノードID]
target: [ターゲットノードID]
data:
sourceType: tool
targetType: [ターゲットノードタイプ]
nodes:
start_node:
- id: ユニークなID
- type: start
- variables:
# ファイル入力の例
- type: file
variable: input_document
label: ドキュメント
required: true
max_length: 48
allowed_file_types:
- document
allowed_file_upload_methods:
- local_file
- remote_url
# 数値入力の例
- type: number
variable: input_number
label: 数値
required: true
min: 0
max: 1000000
# 段落入力の例
- type: paragraph
variable: danraku
label: 段落
required: true
max_length: 48
options: []
# 短文入力の例
- type: text-input
variable: tanbun
label: 短文
required: true
max_length: 48
options: []
llm_node:
- id: ユニークなID
- type: llm
- model:
- provider: openai
- name: gpt-4o
- mode: chat
- completion_params:
- temperature: 生成時の温度設定
- prompt_template:
- id: ユニークなID(例'prompt1')
role: system
text: シングートで括ったプロンプトテキスト
- context:
- enabled: true
- variable_selector: 使用する変数の指定
- vision:
- enabled: false
end_node:
- id: ユニークなID
- type: end
- outputs: #出力変数の定義
- input_data: 入力データ
- generated_text: 生成されたテキスト
http_request_node:
- id: ユニークなID
- type: http-request
- data:
- authorization:
config: null
type: no-auth/basic/bearer # 認証タイプを指定
- body:
type: json/form-data/x-www-form-urlencoded
data: # JSONの場合の例
- id: [キーバリューID]
key: [キー名]
type: text
value: [JSON形式の値]
- headers: Content-Type:[content-type] # 例:application/json
- method: get/post/put/delete
- url: [APIエンドポイントURL]
- timeout:
max_connect_timeout: [接続タイムアウト秒数]
max_read_timeout: [読み取りタイムアウト秒数]
max_write_timeout: [書き込みタイムアウト秒数]
- title: HTTPリクエスト
- variables: [] # 必要に応じて変数を定義
json_parse_node:
- id: ユニークなID
- type: tool
- data:
- provider_id: json_process
- provider_name: json_process
- provider_type: builtin
- title: JSON Parse
- tool_configurations:
ensure_ascii: 1
- tool_name: parse
- tool_parameters:
content:
type: mixed
value: '{{#[入力ノードID].[変数名]#}}'
json_filter:
type: mixed
value: [抽出したいJSONキー]
question_classifier_node:
- id: ユニークなID
- type: question-classifier
- data:
- title: 質問分類器
- model:
provider: openai
name: gpt-4o
mode: chat
completion_params:
temperature: 0.7
- query_variable_selector:
- [入力ノードID]
- [変数名]
- classes:
- id: [クラスID]
name: [分類名]
knowledge_retrieval_node:
- id: ユニークなID
- type: knowledge-retrieval
- data:
- title: 知識取得
- dataset_ids:
- [データセットID]
- retrieval_mode: multiple
- multiple_retrieval_config:
reranking_enable: true
reranking_mode: weighted_score
top_k: 4
weights:
vector_setting:
embedding_model_name: text-embedding-3-large
embedding_provider_name: openai
vector_weight: 1
keyword_setting:
keyword_weight: 0
- query_variable_selector:
- [入力ノードID]
- [変数名]
code_node:
- id: ユニークなID
- type: code
- data:
- code_language: python3
- code: "def main(arg1: str) -> dict:\nreturn {\n\"task_url\": \"http://example.com/task/\"+arg1,\n}" # Pythonードを記述しダブルクォートで括る。
- title: Pythonコード実行
- variables: [] # 必要に応じて変数を定義
- outputs: # 出力変数の定義(必須)
task_url: # 変数名
children: null
type: string # 変数の型
- variables: # 入力変数の定義(必須)
- value_selector: # 他のノードからの入力
- [入力ノードID]
- [変数名]
variable: arg1 # 関数の引数名
if_else_node:
- id: ユニークなID
- type: if-else
- data:
title: 条件分岐
cases:
- case_id: 'true'
logical_operator: and
conditions:
- id: 5d3c1fa4-e26c-4f4b-a3a9-d4c32d63d5f8
varType: number
variable_selector:
- [入力ノードID]
- [変数名]
comparison_operator: 'contains' # ComparisonOperatorの列挙型に従う
value: '5'
numberVarType: constant
- id: f764d294-6b89-46a2-9486-8b2c067e58ff
varType: string
variable_selector:
- [入力ノードID]
- [変数名]
key: 'subKey'
comparison_operator: 'contains'
value: 'テスト'
sub_variable_condition:
case_id: 'sub1'
logical_operator: and
conditions:
- id: 'sub-condition-1'
varType: string
comparison_operator: 'start with'
value: 'prefix'
variable_aggregator_node:
- id: ユニークなID
- type: variable-aggregator
- data:
- title: 変数集約器
- output_type: string/number/boolean # 出力変数の型
- variables: # 集約する変数のリスト
- - [入力ノードID1]
- [変数名1]
- - [入力ノードID2]
- [変数名2]
document_extractor_node:
- id: ユニークなID
- type: document-extractor
- data:
- title: テキスト抽出ツール
- is_array_file: false
- variable_selector:
- [入力ノードID]
- [変数名]
template_transform_node:
- id: ユニークなID
- type: template-transform
- data:
title: テンプレート変換
template: テンプレート文字列(Jinja2形式)
variables:
- value_selector: # 入力変数の指定
- [入力ノードID]
- [変数名]
variable: [テンプレート内で使用する変数名]
outputs:
output: # 固定の出力変数名
type: string # 常にstring型
answer_node:
- id: ユニークなID
- type: answer
- data:
title: 応答ノード
answer: 応答テキストまたは変数参照
variables: [] # 必要に応じて変数定義
parameter_extractor_node:
- id: ユニークなID(必須)
- type: parameter-extractor(固定)
- data:
- title: パラメータ抽出
- query: # 入力変数の指定(必須)
- [入力ノードID]
- [変数名]
- model: # モデル設定(必須)
- provider: プロバイダー名
- name: モデル名
- mode: chat/completion
- completion_params:
- temperature: 0.0-1.0
- reasoning_mode: # 推論モード(必須)
- prompt: プロンプトベース
- function_call: 関数呼び出し
- parameters: # 抽出パラメータ定義(必須)
- name: パラメータ名
type: パラメータ型
description: 説明文
required: true/false
options: # select型の場合の選択肢
- オプション1
- オプション2
- instruction: プロンプト文字列
- memory: # メモリ設定(オプション)
- role_prefix:
- user: ユーザープレフィックス
- assistant: アシスタントプレフィックス
- vision: # 画像処理設定(オプション)
- enabled: true/false
- configs: 画像設定
youtube_transcript_node:
- id: ユニークなID
- data:
type: tool
title: Free YouTube Transcript API
provider_name: transcript
provider_id: transcript
provider_type: builtin
tool_label: Free YouTube Transcript API
tool_name: free_youtube_transcript
tool_configurations:
cookies: null
format: text
language: ja
preserve_formatting: 0
proxy: null
tool_parameters:
video_id:
type: mixed
value: YouTubeビデオID or 変数参照
outputs:
text: # 字幕テキストの出力変数
type: string
jina_reader_node:
- id: ユニークなID
- type: tool
- data:
- provider_id: jina
- provider_name: jina
- provider_type: builtin
- title: JinaReader
- tool_configurations:
gather_all_images_at_the_end: 0 # 画像収集設定
gather_all_links_at_the_end: 0 # リンク収集設定
image_caption: 0 # 画像キャプション設定
no_cache: 0 # キャッシュ無効化
proxy_server: null # プロキシサーバー設定
summary: 0 # 要約機能
target_selector: null # ターゲット要素セレクター
wait_for_selector: null # 待機要素セレクター
- tool_label: JinaReader
- tool_name: jina_reader
- tool_parameters:
url:
type: mixed
value: '{{#[入力ノードID].[変数名]#}}' # URL入力
tavily_search_node:
- id: ユニークなID
- type: tool
- data:
- provider_id: tavily
- provider_name: tavily
- provider_type: builtin
- title: TavilySearch
- tool_configurations:
exclude_domains: null # 除外ドメイン
include_domains: null # 含めるドメイン
include_answer: null # 回答を含める
include_images: null # 画像を含める
include_raw_content: null # 生コンテンツを含める
max_results: 3 # 最大結果数
search_depth: basic # 検索深度
- tool_label: TavilySearch
- tool_name: tavily_search
- tool_parameters:
query:
type: mixed
value: '{{#[入力ノードID].[変数名]#}}'
usage_guide: |
共通事項:
- ノードIDはユニークなIDである必要があります。
- ノードIDは1700000000000から始まる必要があります。
- ノードIDは1700000000000から1799999999999までの範囲である必要があります。
ワークフローの使用方法:
1. 開始ノード
ユースケース:
- ワークフローの開始点として機能
- ユーザーからの入力を受け付け
- 入力された情報を変数として保存
構造:
- id: ユニークなID(必須)
- type: start(固定)
- variables: 入力変数の配列(必須)
- type: 変数の型(必須)
- variable: 変数名(必須)
- label: 表示ラベル(必須)
- required: 必須入力かどうか(必須)
- その他設定(型に応じて必要)
変数型と固有設定:
- file(ファイル入力):
- allowed_file_types: 許可するファイルタイプ
- document: ドキュメントファイル
- image: 画像ファイル
- audio: 音声ファイル
- video: 動画ファイル
- allowed_file_upload_methods: アップロード方法
- local_file: ローカルファイル
- remote_url: リモートURL
- max_length: 最大ファイル名長
- required: 必須項目かどうか
- number(数値入力):
- min: 最小値(オプション)
- max: 最大値(オプション)
- paragraph(段落テキスト):
- max_length: 最大文字数(オプション)
- options: 選択肢(オプション)
- text-input(短文テキスト):
- max_length: 最大文字数(オプション)
- options: 選択肢(オプション)
2. LLMノード
ユースケース:
- テキスト生成や応答の作成
- 入力テキストの加工や変換
- 質問への回答生成
構造:
- id: ユニークなID(必須)
- type: llm(固定)
- model:(必須)
- provider: openai(固定)
- name: gpt-4o(固定)
- mode: chat(固定)
- completion_params:
- temperature: 0.0-1.0の値(必須)
- prompt_template:(必須)
- role: system(固定)
- text: プロンプトテキスト(必須)
- context:(必須)
- enabled: true(固定)
- variable_selector: 使用する変数の指定(必須)
- vision:
- enabled: false(固定)
特記事項:
- プロンプトはシングルクォートで括る必要あり
- システムロールのプロンプトのみ使用可能
- 変数参照形式: {{#ノードID.変数名#}}
- contextのvariable_selectorで指定した変数は、prompt_templateのtextでも使用して下さい。
3. 終了ノード
ユースケース:
- ワークフローの終了点として機能
- 処理結果の出力を定義
- 後続システムへのデータ受け渡し
構造:
- id: ユニークなID(必須)
- type: end(固定)
- outputs:(必須)
- value_selector:(必須)
- [ノードID]
- [変数名]
- variable: 出力変数名(必須)
特記事項:
- 少なくとも1つの出力変数が必要
- 複数の出力変数を定義可能
4. HTTPリクエストノード
ユースケース:
- 外部APIとの連携
- データの送受信
- Webhook通知の送信
- 外部サービスとの統合
構造:
- id: ユニークなID(必須)
- type: http-request(固定)
- data:(必須)
- authorization:(必須)
- config: 認証設定(オプション)
- type: 認証タイプ(必須)
- no-auth: 認証なし
- basic: Basic認証
- bearer: Bearer認証
- body:(必須)
- type: リクエストボディタイプ(必須)
- json: JSON形式
- form-data: マルチパートフォーム
- x-www-form-urlencoded: URLエンコード形式
- data: リクエストデータ(必須)
- headers: ヘッダー情報(必須)
- method: HTTPメソッド(必須)
- url: エンドポイントURL(必須)
- timeout:(オプション)
- max_connect_timeout: 接続タイムアウト秒数
- max_read_timeout: 読み取りタイムアウト秒数
- max_write_timeout: 書き込みタイムアウト秒数
- title: ノードのタイトル(必須)
- variables: 変数定義(オプション)
特記事項:
HTTPメソッド:
- GET: リソースの取得
- クエリパラメータによる検索
- キャッシュ可能
- POST: データの送信・作成
- リソースの規成
- 大容量データの送信
- PUT: リソースの更新・作成
- 完全な置き換え
- べき等性あり
- PATCH: リソースの部分更新
- 一部フィールドの更新
- べき等性なし
- DELETE: リソースの削除
- 指定リソースの削除
- HEAD: ヘッダー情報の取得
- レスポンスボディなし
変数参照:
- 形式: {{#[ノードID].[変数名]#}}
- 他のノードの出力を参照可能
- JSONパスによるネストされた値の参照可能
タイムアウト設定:
- 0は無制限を意味する
- ミリ秒単位で指定可能
- 各フェーズで個別に設定可能
5. JSON Parseノード
ユースケース:
- JSONデータの解析
- 特定のキーの抽出
- APIレスポンスの処理
- 構造化データの加工
構造:
- id: ユニークなID(必須)
- type: tool(固定)
- data:(必須)
- provider_id: json_process(固定)
- provider_name: json_process(固定)
- provider_type: builtin(固定)
- title: ノードのタイトル(必須)
- tool_configurations:(必須)
- ensure_ascii: 1または0(必須)
- tool_name: parse(固定)
- tool_parameters:(必須)
- content:(必須)
- type: mixed(固定)
- value: パース対象のJSON(必須)
- json_filter:(必須)
- type: mixed(固定)
- value: 抽出キー(必須)
特記事項:
データ形式:
- content: JSON文字列またはオブジェクト
- 他のノードの出力を参照可能
- 変数参照形式: {{#[ノードID].[変数名]#}}
文字エンコード:
- ensure_ascii:
- 1: ASCII文字のみ使用
- 0: Unicode文字を許可
フィルタリング:
- 単一キー: "key"
- ネトしたキー: "key1.key2"
- 配列インデックス: "array[0]"
- 複数キー: ["key1", "key2"]
- 条件付き: "key[?(@.field=='value')]"
6. 質問分類器ノード
ユースケース:
- 質問内容の自動分類
- インテントの判別
- 応答フローの最適化
- マルチパス処理の制御
構造:
- id: ユニークなID(必須)
- type: question-classifier(固定)
- data:(必須)
- title: ノードのタイトル(必須)
- model:(必須)
- provider: openai(固定)
- name: gpt-4o(固定)
- mode: chat(固定)
- completion_params:(必須)
- temperature: 0.0-1.0の値
- query_variable_selector:(必須)
- [入力ノードID]
- [変数名]
- classes:(必須)
- id: クラスID(必須)
- name: 分類名(必須)
特記事項:
分岐パターン:
1. 共通LLM使用パターン:
- クラス1の質問 → 知識取得1 → 共通LLM → 終了
- クラス2の質問 → 知識取得2 → 共通LLM → 終了
- その他の質問 → 直接終了ノードへ
2. 個別LLM使用パターン:
- クラス1の質問 → 知識取得1 → LLM1 → 終了1
- クラス2の質問 → 知識取得2 → LLM2 → 終了2
- その他の質問 → 直接終了ノードへ
エッジ接続設定:
- sourceHandle: 質問分類のID('1', '2'など)
- targetHandle: 'target'を指定
- sourceType: question-classifier
- targetType: 接続先のノードタイプ
分類結果の利用:
- 各クラスに応じた適切な知識ベースの選択
- クラスごとに異なるプロンプトの使用
- 分類結果に基づく条件分岐の実装
7. 知識取得ノード
ユースケース:
- データセットからの関連情報検索
- 質問に関連する知識の取得
- コンテキストベースの応答生成
- 複数ソースからの情報統合
構造:
- id: ユニークなID(必須)
- type: knowledge-retrieval(固定)
- data:(必須)
- title: ノードのタイトル(必須)
- dataset_ids: データセットIDの配列(必須)
- retrieval_mode: multiple(固定)
- multiple_retrieval_config:(必須)
- reranking_enable: true/false(必須)
- reranking_mode: weighted_score(必須)
- top_k: 取得件数(必須)
- weights:(必須)
- vector_setting:(必須)
- embedding_model_name: モデル名(必須)
- embedding_provider_name: プロバイダー名(須)
- vector_weight: ベクトル重み(必須)
- keyword_setting:(必須)
- keyword_weight: キーワード重み(必須)
- query_variable_selector:(必須)
- [入力ノードID]
- [変数名]
特記事項:
検索設定:
- embedding_model_name:
- text-embedding-3-large: 高精度モデル
- text-embedding-ada-002: 標準モデル
重み付け:
- vector_weight: 0.0-1.0
- 1.0: ベクトル検索のみ
- 0.0: キーワード検索のみ
- keyword_weight: 0.0-1.0
- 高値: キーワードマッチを重視
- 低値: セマンティック検索を重視
検索結果:
- top_k: 取得する結果数
- 推奨値: 3-5
- 最大値: 10
- reranking: 検索結果の再ランキング
- weighted_score: スコアによる重み付け
- 精度と応答時間のバランスを調整可能
8. コードノード
ユースケース:
- カスタムロジックの実装
- データの加工・変換
- 外部システムとの連携
- 条件分岐の制御
構造:
- id: ユニークなID(必須)
- type: code(固定)
- data:(必須)
- code_language: python3(固定)
- code: Pythonコード(必須、ダブルクォートで括る)
- title: ノードのタイトル(必須)
- outputs:(必須)
- [変数名]:
- type: 変数の型(必須)
- children: null(固定)
- variables:(必須)
- value_selector:(必須)
- [入力ノードID]
- [変数名]
- variable: 関数の引数名(必須)
特記事項:
- boolean型は利用できません。number型で0/1で代用してください。
使用可能なライブラリ:
- 基本ライブラリ:
- datetime: 日時処理
- math: 数学関数
- random: 乱数生成
- re: 正規表現
- string: 文字列操作
- システム関連:
- sys: システム操作
- os: OS操作
- time: 時間処理
- traceback: エラー追跡
- uuid: 一意識別子生成
- データ処理:
- json: JSON処理
- base64: エンコード/デコード
- collections: コレクション型
- itertools: イテレータ操作
- 暗号化/ハッシュ:
- hashlib: ハッシュ関数
- hmac: メッセージ認証
- binascii: バイナリ/ASCII変換
- 関数操作:
- functools: 関数ツール
- operator: 演算子インターフェース
出力変数の型:
- 基本型:
- string: 文字列型
- number: 数値型
- 特殊型:
- secret: 機密情報型
- object: オブジェクト型
- file: ファイル型
- 配列型:
- array: 基本配列型
- array[string]: 文字列配列
- array[number]: 数値配列
- array[object]: オブジェクト配列
- array[file]: ファイル配列
- その他:
- any: 任意の型
コード実装規則:
- main関数として実装(必須)
- 型アノテーション付与(必須)
- 戻り値は辞書形式(必須)
- ダブルクォートでコード全体を括る
- 内部のダブルクォートはエスケープ
- 改行は\nで表現
実装例:
```python
def main(arg1: str) -> dict:
return {
"result": arg1[7:-3],
}
```
9. IF/ELSEノード
ユースケース:
- 条件に基づくフロー制御
- 複数パスへの分岐処理
- データ値による処理の振り分け
- 条件付きロジックの実装
構造:
- id: ユニークなID(必須)
- type: if-else(固定)
- data:(必須)
- title: ノードのタイトル(必須)
- cases:(必須)
- case_id: 条件ID(必須)
- logical_operator: and/or(必須)
- conditions:(必須)
- id: 条件のID(必須)
- varType: 変数の型(必須)
- variable_selector:(必須)
- [入力ノードID]
- [変数名]
- comparison_operator: 比較演算子(必須)
- value: 比較値(必須)
- numberVarType: 数値比較タイプ(数値型の場合必須)
- key: サブ変数のキー(オプション)
- sub_variable_condition: サブ変数の条件(オプション)
特記事項:
比較演算子:
- 文字列比較:
- contains: 文字列に指定値が含まれる
- not contains: 文字列に指定値が含まれない
- start with: 指定値で始まる
- end with: 指定値で終わる
- is: 完全一致
- is not: 完全不一致
- 数値比較:
- =: 等しい
- ≠: 等しくない
- >: より大きい
- <: より小さい
- ≥: 以上
- ≤: 以下
- 存在チェック:
- empty: 空である
- not empty: 空でない
- is null: null値である
- is not null: null値でない
- リスト操作:
- in: リスト内に存在する
- not in: リスト内に存在しない
- all of: すべての条件を満たす
- その他:
- exists: 存在する
- not exists: 存在しない
変数型:
- number: 数値型
- numberVarType: constant/variable
- string: 文字列型
- boolean: 真偽値型
エッジ接続:
- sourceHandle: 'true'
- IF条件成立時の接続
- sourceHandle: 'false'
- ELSE条件時の接続
- sourceType: if-else
- targetType: 接続先のノードタイプ
10. Variable Aggregatorノード
ユースケース:
- 複数のノードからの出力を集約
- 異なるパスからの結果の統合
- 分岐処理後のデータ統合
- 複数ソースからのデータマージ
構造:
- id: ユニークなID(必須)
- type: variable-aggregator(固定)
- data:(必須)
- title: ノードのタイトル(必須)
- output_type: 出力変数の型(必須)
- string: 文字列型
- number: 数値型
- boolean: 真偽値型
- variables: 集約する変数のリスト(必須)
- [入力ノードID, 変数名]の配列
特記事項:
データ集約パターン:
- IF/ELSE分岐後の統合:
- true分岐からの出力
- false分岐からの出力
- 単一の出力ストリームへの統合
- 並列処理結果の統合:
- 複数LLMノードからの応答
- 複数APIコールの結果
- 異なる処理パスからの出力
変数の順序:
- リストの順序が出力順序に影響
- 先に指定した変数が優先
- 後続の変数は条件付きで使用
型変換ルール:
- string型への変換:
- number: 文字列表現に変換
- boolean: "true"/"false"に変換
- number型への変換:
- string: 数値表現のみ許可
- boolean: 1/0に変換
- boolean型への変換:
- string: "true"/"false"のみ許可
- number: 0以外はtrue
11. Document Extractorノード
ユースケース:
- ドキュメントからのテキスト抽出
- ファイル内容の解析
- テキストデータの前処理
構造:
- id: ユニークなID(必須)
- type: document-extractor(固定)
- data:
- title: ノードのタイトル(必須)
- is_array_file: 配列入力かどうか(必須)
- variable_selector: 入力変数の指定(必須)
- [入力ノードID]
- [変数名]
12. Template Transformノード
ユースケース:
- テンプレート文字列への変数埋め込み
- 動的なメッセージ生成
- 条件付きテキスト生成
- 配列データの文字列化
構造:
- id: ユニークなID(必須)
- type: template-transform(固定)
- data:
title: ノードのタイトル(必須)
template: Jinja2形式のテンプレート(必須)
variables: 入力変数の配列(必須)
- value_selector: 変数の参照元
- [入力ノードID]
- [変数名]
variable: テンプレート内で使用する変数名
テンプレート構文:
- 変数参照:
- 基本形: {{ 変数名 }}
- フィルター使用: {{ 変数名|upper }}
- 条件分岐:
```
{% if 条件 %}
条件成立時の文字列
{% else %}
条件不成立時の文字列
{% endif %}
```
- ループ処理:
```
{% for item in items %}
{{ item }}
{% endfor %}
```
入力変数の型:
- string: 文字列
- number: 数値
- object: オブジェクト
- array: 配列
- arrayNumber: 数値配列
- arrayString: 文字列配列
- arrayObject: オブジェクト配列
出力:
- output: 生成された文字列(string型固定)
13. Answerノード
ユースケース:
- ワークフローの応答出力
- LLM出力の表示
- 変数値の表示
- 中間結果の確認
構造:
- id: ユニークなID(必須)
- type: answer(固定)
- data:
title: ノードのタイトル(必須)
answer: 応答テキスト(必須)