| import { Edge, Node } from '@xyflow/react'; |
| import { IReference, Message } from './chat'; |
|
|
| export type DSLComponents = Record<string, IOperator>; |
|
|
| export interface DSL { |
| components: DSLComponents; |
| history: any[]; |
| path?: string[][]; |
| answer?: any[]; |
| graph?: IGraph; |
| messages: Message[]; |
| reference: IReference[]; |
| } |
|
|
| export interface IOperator { |
| obj: IOperatorNode; |
| downstream: string[]; |
| upstream: string[]; |
| parent_id?: string; |
| } |
|
|
| export interface IOperatorNode { |
| component_name: string; |
| params: Record<string, unknown>; |
| } |
|
|
| export declare interface IFlow { |
| avatar?: null | string; |
| canvas_type: null; |
| create_date: string; |
| create_time: number; |
| description: null; |
| dsl: DSL; |
| id: string; |
| title: string; |
| update_date: string; |
| update_time: number; |
| user_id: string; |
| } |
|
|
| export interface IFlowTemplate { |
| avatar: string; |
| canvas_type: string; |
| create_date: string; |
| create_time: number; |
| description: string; |
| dsl: DSL; |
| id: string; |
| title: string; |
| update_date: string; |
| update_time: number; |
| } |
|
|
| export type ICategorizeItemResult = Record< |
| string, |
| Omit<ICategorizeItem, 'name'> |
| >; |
|
|
| export interface IGenerateForm { |
| max_tokens?: number; |
| temperature?: number; |
| top_p?: number; |
| presence_penalty?: number; |
| frequency_penalty?: number; |
| cite?: boolean; |
| prompt: number; |
| llm_id: string; |
| parameters: { key: string; component_id: string }; |
| } |
| export interface ICategorizeItem { |
| name: string; |
| description?: string; |
| examples?: string; |
| to?: string; |
| index: number; |
| } |
|
|
| export interface ICategorizeForm extends IGenerateForm { |
| category_description: ICategorizeItemResult; |
| } |
|
|
| export interface IRelevantForm extends IGenerateForm { |
| yes: string; |
| no: string; |
| } |
|
|
| export interface ISwitchCondition { |
| items: ISwitchItem[]; |
| logical_operator: string; |
| to: string; |
| } |
|
|
| export interface ISwitchItem { |
| cpn_id: string; |
| operator: string; |
| value: string; |
| } |
|
|
| export interface ISwitchForm { |
| conditions: ISwitchCondition[]; |
| end_cpn_id: string; |
| no: string; |
| } |
|
|
| export interface IBeginForm { |
| prologue?: string; |
| } |
|
|
| export interface IRetrievalForm { |
| similarity_threshold?: number; |
| keywords_similarity_weight?: number; |
| top_n?: number; |
| top_k?: number; |
| rerank_id?: string; |
| empty_response?: string; |
| kb_ids: string[]; |
| } |
|
|
| export type BaseNodeData<TForm extends any> = { |
| label: string; |
| name: string; |
| color?: string; |
| form?: TForm; |
| }; |
|
|
| export type BaseNode<T = any> = Node<BaseNodeData<T>>; |
|
|
| export type IBeginNode = BaseNode<IBeginForm>; |
| export type IRetrievalNode = BaseNode<IRetrievalForm>; |
| export type IGenerateNode = BaseNode<IGenerateForm>; |
| export type ICategorizeNode = BaseNode<ICategorizeForm>; |
| export type ISwitchNode = BaseNode<ISwitchForm>; |
| export type IRagNode = BaseNode; |
| export type IRelevantNode = BaseNode; |
| export type ILogicNode = BaseNode; |
| export type INoteNode = BaseNode; |
| export type IMessageNode = BaseNode; |
| export type IRewriteNode = BaseNode; |
| export type IInvokeNode = BaseNode; |
| export type ITemplateNode = BaseNode; |
| export type IEmailNode = BaseNode; |
| export type IIterationNode = BaseNode; |
| export type IIterationStartNode = BaseNode; |
| export type IKeywordNode = BaseNode; |
|
|
| export type RAGFlowNodeType = |
| | IBeginNode |
| | IRetrievalNode |
| | IGenerateNode |
| | ICategorizeNode |
| | ISwitchNode |
| | IRagNode |
| | IRelevantNode |
| | ILogicNode |
| | INoteNode |
| | IMessageNode |
| | IRewriteNode |
| | IInvokeNode |
| | ITemplateNode |
| | IEmailNode |
| | IIterationNode |
| | IIterationStartNode |
| | IKeywordNode; |
|
|
| export interface IGraph { |
| nodes: RAGFlowNodeType[]; |
| edges: Edge[]; |
| } |
|
|