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>