612 lines
14 KiB
TypeScript
612 lines
14 KiB
TypeScript
/**
|
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
import { FlowDocumentJSON } from './typings';
|
|
|
|
export const initialData: FlowDocumentJSON = {
|
|
nodes: [
|
|
{
|
|
id: 'start_0',
|
|
type: 'start',
|
|
meta: {
|
|
position: {
|
|
x: 180,
|
|
y: 601.2,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'Start',
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
query: {
|
|
type: 'string',
|
|
default: 'Hello Flow.',
|
|
},
|
|
enable: {
|
|
type: 'boolean',
|
|
default: true,
|
|
},
|
|
array_obj: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
int: {
|
|
type: 'number',
|
|
},
|
|
str: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'condition_0',
|
|
type: 'condition',
|
|
meta: {
|
|
position: {
|
|
x: 1100,
|
|
y: 546.2,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'Condition',
|
|
conditions: [
|
|
{
|
|
key: 'if_0',
|
|
value: {
|
|
left: {
|
|
type: 'ref',
|
|
content: ['start_0', 'query'],
|
|
},
|
|
operator: 'contains',
|
|
right: {
|
|
type: 'constant',
|
|
content: 'Hello Flow.',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
id: 'end_0',
|
|
type: 'end',
|
|
meta: {
|
|
position: {
|
|
x: 2968,
|
|
y: 601.2,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'End',
|
|
inputsValues: {
|
|
success: {
|
|
type: 'constant',
|
|
content: true,
|
|
schema: {
|
|
type: 'boolean',
|
|
},
|
|
},
|
|
query: {
|
|
type: 'ref',
|
|
content: ['start_0', 'query'],
|
|
},
|
|
},
|
|
inputs: {
|
|
type: 'object',
|
|
properties: {
|
|
success: {
|
|
type: 'boolean',
|
|
},
|
|
query: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: '159623',
|
|
type: 'comment',
|
|
meta: {
|
|
position: {
|
|
x: 180,
|
|
y: 775.2,
|
|
},
|
|
},
|
|
data: {
|
|
size: {
|
|
width: 240,
|
|
height: 150,
|
|
},
|
|
note: 'hi ~\n\nthis is a comment node\n\n- flowgram.ai',
|
|
},
|
|
},
|
|
{
|
|
id: 'http_rDGIH',
|
|
type: 'http',
|
|
meta: {
|
|
position: {
|
|
x: 640,
|
|
y: 421.35,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'HTTP_1',
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
body: {
|
|
type: 'string',
|
|
},
|
|
headers: {
|
|
type: 'object',
|
|
},
|
|
statusCode: {
|
|
type: 'integer',
|
|
},
|
|
},
|
|
},
|
|
api: {
|
|
method: 'GET',
|
|
url: {
|
|
type: 'template',
|
|
content: '',
|
|
},
|
|
},
|
|
body: {
|
|
bodyType: 'JSON',
|
|
},
|
|
timeout: {
|
|
timeout: 10000,
|
|
retryTimes: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'loop_Ycnsk',
|
|
type: 'loop',
|
|
meta: {
|
|
position: {
|
|
x: 1460,
|
|
y: 0,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'Loop_1',
|
|
loopFor: {
|
|
type: 'ref',
|
|
content: ['start_0', 'array_obj'],
|
|
},
|
|
loopOutputs: {
|
|
acm: {
|
|
type: 'ref',
|
|
content: ['llm_6aSyo', 'result'],
|
|
},
|
|
},
|
|
outputs: {
|
|
type: 'object',
|
|
required: [],
|
|
properties: {
|
|
acm: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
blocks: [
|
|
{
|
|
id: 'llm_6aSyo',
|
|
type: 'llm',
|
|
meta: {
|
|
position: {
|
|
x: 344,
|
|
y: 0,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'LLM_3',
|
|
inputsValues: {
|
|
modelName: {
|
|
type: 'constant',
|
|
content: 'gpt-3.5-turbo',
|
|
},
|
|
apiKey: {
|
|
type: 'constant',
|
|
content: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
},
|
|
apiHost: {
|
|
type: 'constant',
|
|
content: 'https://mock-ai-url/api/v3',
|
|
},
|
|
temperature: {
|
|
type: 'constant',
|
|
content: 0.5,
|
|
},
|
|
systemPrompt: {
|
|
type: 'template',
|
|
content: '# Role\nYou are an AI assistant.\n',
|
|
},
|
|
prompt: {
|
|
type: 'template',
|
|
content: '',
|
|
},
|
|
},
|
|
inputs: {
|
|
type: 'object',
|
|
required: ['modelName', 'apiKey', 'apiHost', 'temperature', 'prompt'],
|
|
properties: {
|
|
modelName: {
|
|
type: 'string',
|
|
},
|
|
apiKey: {
|
|
type: 'string',
|
|
},
|
|
apiHost: {
|
|
type: 'string',
|
|
},
|
|
temperature: {
|
|
type: 'number',
|
|
},
|
|
systemPrompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
prompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
result: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'llm_ZqKlP',
|
|
type: 'llm',
|
|
meta: {
|
|
position: {
|
|
x: 804,
|
|
y: 0,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'LLM_4',
|
|
inputsValues: {
|
|
modelName: {
|
|
type: 'constant',
|
|
content: 'gpt-3.5-turbo',
|
|
},
|
|
apiKey: {
|
|
type: 'constant',
|
|
content: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
},
|
|
apiHost: {
|
|
type: 'constant',
|
|
content: 'https://mock-ai-url/api/v3',
|
|
},
|
|
temperature: {
|
|
type: 'constant',
|
|
content: 0.5,
|
|
},
|
|
systemPrompt: {
|
|
type: 'template',
|
|
content: '# Role\nYou are an AI assistant.\n',
|
|
},
|
|
prompt: {
|
|
type: 'template',
|
|
content: '',
|
|
},
|
|
},
|
|
inputs: {
|
|
type: 'object',
|
|
required: ['modelName', 'apiKey', 'apiHost', 'temperature', 'prompt'],
|
|
properties: {
|
|
modelName: {
|
|
type: 'string',
|
|
},
|
|
apiKey: {
|
|
type: 'string',
|
|
},
|
|
apiHost: {
|
|
type: 'string',
|
|
},
|
|
temperature: {
|
|
type: 'number',
|
|
},
|
|
systemPrompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
prompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
result: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'block_start_PUDtS',
|
|
type: 'block-start',
|
|
meta: {
|
|
position: {
|
|
x: 32,
|
|
y: 167.1,
|
|
},
|
|
},
|
|
data: {},
|
|
},
|
|
{
|
|
id: 'block_end_leBbs',
|
|
type: 'block-end',
|
|
meta: {
|
|
position: {
|
|
x: 1116,
|
|
y: 167.1,
|
|
},
|
|
},
|
|
data: {},
|
|
},
|
|
],
|
|
edges: [
|
|
{
|
|
sourceNodeID: 'block_start_PUDtS',
|
|
targetNodeID: 'llm_6aSyo',
|
|
},
|
|
{
|
|
sourceNodeID: 'llm_6aSyo',
|
|
targetNodeID: 'llm_ZqKlP',
|
|
},
|
|
{
|
|
sourceNodeID: 'llm_ZqKlP',
|
|
targetNodeID: 'block_end_leBbs',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 'group_nYl6D',
|
|
type: 'group',
|
|
meta: {
|
|
position: {
|
|
x: 1624,
|
|
y: 698.2,
|
|
},
|
|
},
|
|
data: {
|
|
parentID: 'root',
|
|
blockIDs: ['llm_8--A3', 'llm_vTyMa'],
|
|
},
|
|
},
|
|
{
|
|
id: 'llm_8--A3',
|
|
type: 'llm',
|
|
meta: {
|
|
position: {
|
|
x: 180,
|
|
y: 0,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'LLM_1',
|
|
inputsValues: {
|
|
modelName: {
|
|
type: 'constant',
|
|
content: 'gpt-3.5-turbo',
|
|
},
|
|
apiKey: {
|
|
type: 'constant',
|
|
content: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
},
|
|
apiHost: {
|
|
type: 'constant',
|
|
content: 'https://mock-ai-url/api/v3',
|
|
},
|
|
temperature: {
|
|
type: 'constant',
|
|
content: 0.5,
|
|
},
|
|
systemPrompt: {
|
|
type: 'template',
|
|
content: '# Role\nYou are an AI assistant.\n',
|
|
},
|
|
prompt: {
|
|
type: 'template',
|
|
content: '# User Input\nquery:{{start_0.query}}\nenable:{{start_0.enable}}',
|
|
},
|
|
},
|
|
inputs: {
|
|
type: 'object',
|
|
required: ['modelName', 'apiKey', 'apiHost', 'temperature', 'prompt'],
|
|
properties: {
|
|
modelName: {
|
|
type: 'string',
|
|
},
|
|
apiKey: {
|
|
type: 'string',
|
|
},
|
|
apiHost: {
|
|
type: 'string',
|
|
},
|
|
temperature: {
|
|
type: 'number',
|
|
},
|
|
systemPrompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
prompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
result: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'llm_vTyMa',
|
|
type: 'llm',
|
|
meta: {
|
|
position: {
|
|
x: 640,
|
|
y: 10,
|
|
},
|
|
},
|
|
data: {
|
|
title: 'LLM_2',
|
|
inputsValues: {
|
|
modelName: {
|
|
type: 'constant',
|
|
content: 'gpt-3.5-turbo',
|
|
},
|
|
apiKey: {
|
|
type: 'constant',
|
|
content: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
},
|
|
apiHost: {
|
|
type: 'constant',
|
|
content: 'https://mock-ai-url/api/v3',
|
|
},
|
|
temperature: {
|
|
type: 'constant',
|
|
content: 0.5,
|
|
},
|
|
systemPrompt: {
|
|
type: 'template',
|
|
content: '# Role\nYou are an AI assistant.\n',
|
|
},
|
|
prompt: {
|
|
type: 'template',
|
|
content: '# LLM Input\nresult:{{llm_8--A3.result}}',
|
|
},
|
|
},
|
|
inputs: {
|
|
type: 'object',
|
|
required: ['modelName', 'apiKey', 'apiHost', 'temperature', 'prompt'],
|
|
properties: {
|
|
modelName: {
|
|
type: 'string',
|
|
},
|
|
apiKey: {
|
|
type: 'string',
|
|
},
|
|
apiHost: {
|
|
type: 'string',
|
|
},
|
|
temperature: {
|
|
type: 'number',
|
|
},
|
|
systemPrompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
prompt: {
|
|
type: 'string',
|
|
extra: {
|
|
formComponent: 'prompt-editor',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
outputs: {
|
|
type: 'object',
|
|
properties: {
|
|
result: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
edges: [
|
|
{
|
|
sourceNodeID: 'start_0',
|
|
targetNodeID: 'http_rDGIH',
|
|
},
|
|
{
|
|
sourceNodeID: 'http_rDGIH',
|
|
targetNodeID: 'condition_0',
|
|
},
|
|
{
|
|
sourceNodeID: 'condition_0',
|
|
targetNodeID: 'loop_Ycnsk',
|
|
sourcePortID: 'if_0',
|
|
},
|
|
{
|
|
sourceNodeID: 'condition_0',
|
|
targetNodeID: 'llm_8--A3',
|
|
sourcePortID: 'else',
|
|
},
|
|
{
|
|
sourceNodeID: 'llm_vTyMa',
|
|
targetNodeID: 'end_0',
|
|
},
|
|
{
|
|
sourceNodeID: 'loop_Ycnsk',
|
|
targetNodeID: 'end_0',
|
|
},
|
|
{
|
|
sourceNodeID: 'llm_8--A3',
|
|
targetNodeID: 'llm_vTyMa',
|
|
},
|
|
],
|
|
globalVariable: {
|
|
type: 'object',
|
|
required: [],
|
|
properties: {
|
|
userId: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
},
|
|
};
|