18586361686
2025-04-11 492f37a9d63a662276c6ae7b14ece282764bb366
fix: add workflow test data
2个文件已修改
57 ■■■■■ 已修改文件
aiflowy-modules/aiflowy-module-ai/src/main/java/tech/aiflowy/ai/controller/AiWorkflowController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aiflowy-ui-react/src/pages/ai/workflowDesign/WorkflowDesign.tsx 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aiflowy-modules/aiflowy-module-ai/src/main/java/tech/aiflowy/ai/controller/AiWorkflowController.java
@@ -1,6 +1,15 @@
package tech.aiflowy.ai.controller;
import com.agentsflex.core.llm.Llm;
import com.agentsflex.llm.spark.SparkLlm;
import com.agentsflex.llm.spark.SparkLlmConfig;
import dev.tinyflow.core.Tinyflow;
import dev.tinyflow.core.knowledge.Knowledge;
import dev.tinyflow.core.provider.KnowledgeProvider;
import dev.tinyflow.core.provider.LlmProvider;
import tech.aiflowy.ai.entity.AiLlm;
import tech.aiflowy.ai.entity.AiWorkflow;
import tech.aiflowy.ai.service.AiLlmService;
import tech.aiflowy.ai.service.AiWorkflowService;
import tech.aiflowy.common.domain.Result;
import tech.aiflowy.common.web.controller.BaseCurdController;
@@ -21,8 +30,11 @@
@RestController
@RequestMapping("/api/v1/aiWorkflow")
public class AiWorkflowController extends BaseCurdController<AiWorkflowService, AiWorkflow> {
    public AiWorkflowController(AiWorkflowService service) {
    private final AiLlmService aiLlmService;
    public AiWorkflowController(AiWorkflowService service, AiLlmService aiLlmService) {
        super(service);
        this.aiLlmService = aiLlmService;
    }
@@ -47,7 +59,26 @@
            return Result.fail(1, "can not find the workflow by id: " + id);
        }
        Chain chain = workflow.toTinyflow().toChain();
        Tinyflow tinyflow = workflow.toTinyflow();
        tinyflow.setLlmProvider(new LlmProvider() {
            @Override
            public Llm getLlm(Object id) {
                AiLlm byId = aiLlmService.getById(new BigInteger(id.toString()));
               return byId.toLlm();
            }
        });
        tinyflow.setKnowledgeProvider(new KnowledgeProvider() {
            @Override
            public Knowledge getKnowledge(Object o) {
                return null;
            }
        });
        Chain chain = tinyflow.toChain();
        chain.addEventListener(new ChainEventListener() {
            @Override
            public void onEvent(ChainEvent event, Chain chain) {
aiflowy-ui-react/src/pages/ai/workflowDesign/WorkflowDesign.tsx
@@ -4,11 +4,10 @@
import {useLayout} from '../../../hooks/useLayout.tsx';
import {App, Button, Drawer, Form, Input} from "antd";
import {useParams} from "react-router-dom";
import {useDetail, useGetManual, usePostManual, useUpdate} from "../../../hooks/useApis.ts";
import {useDetail, useGet, useGetManual, usePostManual, useUpdate} from "../../../hooks/useApis.ts";
import {FormOutlined, SendOutlined} from "@ant-design/icons";
import { Tinyflow, TinyflowHandle } from '@tinyflow-ai/react';
import '@tinyflow-ai/react/dist/index.css'
export const WorkflowDesign = () => {
@@ -20,11 +19,27 @@
    const {result: workflow} = useDetail("aiWorkflow", params.id);
    const {doUpdate} = useUpdate("aiWorkflow");
    const {result: llms} = useGet('/api/v1/aiLlm/list')
    const [parameters, setParameters] = useState<any[]>()
    const getLlms : () => (any) = ():any => {
        if (llms?.data) {
            return llms.data.map((item: any) => {
                return {
                    value: item.id,
                    label: item.title,
                }
            })
        }
        return []
    }
    const [executeResult, setExecuteResult] = useState<string>('')
    const provider = {
        llm: ()  => getLlms(),
        knowledge: () => [],
    }
    console.log('provider, ', provider)
    const {setOptions} = useLayout();
    useEffect(() => {
        setOptions({leftMenuCollapsed: true, showBreadcrumb: false})
@@ -189,6 +204,7 @@
                        </div>
                    </div>
                    <Tinyflow ref={tinyflowRef} data={JSON.parse(workflow?.data?.content||'{}')}
                              provider={provider}
                    style={{height: 'calc(100vh - 110px)'}}/>
                </div>
            </div>