mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-03 20:33:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			356 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import type { Viewport } from 'reactflow'
 | 
						|
import type { VisionFile } from '@/types/app'
 | 
						|
import type {
 | 
						|
  Edge,
 | 
						|
  Node,
 | 
						|
} from '@/app/components/workflow/types'
 | 
						|
import type { Metadata } from '@/app/components/base/chat/chat/type'
 | 
						|
 | 
						|
// Log type contains key:string conversation_id:string created_at:string question:string answer:string
 | 
						|
export type Conversation = {
 | 
						|
  id: string
 | 
						|
  key: string
 | 
						|
  conversationId: string
 | 
						|
  question: string
 | 
						|
  answer: string
 | 
						|
  userRate: number
 | 
						|
  adminRate: number
 | 
						|
}
 | 
						|
 | 
						|
export type ConversationListResponse = {
 | 
						|
  logs: Conversation[]
 | 
						|
}
 | 
						|
 | 
						|
export const fetchLogs = (url: string) =>
 | 
						|
  fetch(url).then<ConversationListResponse>(r => r.json())
 | 
						|
 | 
						|
export const CompletionParams = ['temperature', 'top_p', 'presence_penalty', 'max_token', 'stop', 'frequency_penalty'] as const
 | 
						|
 | 
						|
export type CompletionParamType = typeof CompletionParams[number]
 | 
						|
 | 
						|
export type CompletionParamsType = {
 | 
						|
  max_tokens: number
 | 
						|
  temperature: number
 | 
						|
  top_p: number
 | 
						|
  stop: string[]
 | 
						|
  presence_penalty: number
 | 
						|
  frequency_penalty: number
 | 
						|
}
 | 
						|
 | 
						|
export type LogModelConfig = {
 | 
						|
  name: string
 | 
						|
  provider: string
 | 
						|
  completion_params: CompletionParamsType
 | 
						|
}
 | 
						|
 | 
						|
export type ModelConfigDetail = {
 | 
						|
  introduction: string
 | 
						|
  prompt_template: string
 | 
						|
  prompt_variables: Array<{
 | 
						|
    key: string
 | 
						|
    name: string
 | 
						|
    description: string
 | 
						|
    type: string | number
 | 
						|
    default: string
 | 
						|
    options: string[]
 | 
						|
  }>
 | 
						|
  completion_params: CompletionParamsType
 | 
						|
}
 | 
						|
 | 
						|
export type LogAnnotation = {
 | 
						|
  id: string
 | 
						|
  content: string
 | 
						|
  account: {
 | 
						|
    id: string
 | 
						|
    name: string
 | 
						|
    email: string
 | 
						|
  }
 | 
						|
  created_at: number
 | 
						|
}
 | 
						|
 | 
						|
export type Annotation = {
 | 
						|
  id: string
 | 
						|
  authorName: string
 | 
						|
  logAnnotation?: LogAnnotation
 | 
						|
  created_at?: number
 | 
						|
}
 | 
						|
 | 
						|
export type MessageContent = {
 | 
						|
  id: string
 | 
						|
  conversation_id: string
 | 
						|
  query: string
 | 
						|
  inputs: Record<string, any>
 | 
						|
  message: { role: string; text: string; files?: VisionFile[] }[]
 | 
						|
  message_tokens: number
 | 
						|
  answer_tokens: number
 | 
						|
  answer: string
 | 
						|
  provider_response_latency: number
 | 
						|
  created_at: number
 | 
						|
  annotation: LogAnnotation
 | 
						|
  annotation_hit_history: {
 | 
						|
    annotation_id: string
 | 
						|
    annotation_create_account: {
 | 
						|
      id: string
 | 
						|
      name: string
 | 
						|
      email: string
 | 
						|
    }
 | 
						|
    created_at: number
 | 
						|
  }
 | 
						|
  feedbacks: Array<{
 | 
						|
    rating: 'like' | 'dislike' | null
 | 
						|
    content: string | null
 | 
						|
    from_source?: 'admin' | 'user'
 | 
						|
    from_end_user_id?: string
 | 
						|
  }>
 | 
						|
  message_files: VisionFile[]
 | 
						|
  metadata: Metadata
 | 
						|
  agent_thoughts: any[] // TODO
 | 
						|
  workflow_run_id: string
 | 
						|
  parent_message_id: string | null
 | 
						|
}
 | 
						|
 | 
						|
export type CompletionConversationGeneralDetail = {
 | 
						|
  id: string
 | 
						|
  status: 'normal' | 'finished'
 | 
						|
  from_source: 'api' | 'console'
 | 
						|
  from_end_user_id: string
 | 
						|
  from_end_user_session_id: string
 | 
						|
  from_account_id: string
 | 
						|
  read_at: Date
 | 
						|
  created_at: number
 | 
						|
  updated_at: number
 | 
						|
  annotation: Annotation
 | 
						|
  user_feedback_stats: {
 | 
						|
    like: number
 | 
						|
    dislike: number
 | 
						|
  }
 | 
						|
  admin_feedback_stats: {
 | 
						|
    like: number
 | 
						|
    dislike: number
 | 
						|
  }
 | 
						|
  model_config: {
 | 
						|
    provider: string
 | 
						|
    model_id: string
 | 
						|
    configs: Pick<ModelConfigDetail, 'prompt_template'>
 | 
						|
  }
 | 
						|
  message: Pick<MessageContent, 'inputs' | 'query' | 'answer' | 'message'>
 | 
						|
}
 | 
						|
 | 
						|
export type CompletionConversationFullDetailResponse = {
 | 
						|
  id: string
 | 
						|
  status: 'normal' | 'finished'
 | 
						|
  from_source: 'api' | 'console'
 | 
						|
  from_end_user_id: string
 | 
						|
  from_account_id: string
 | 
						|
  // read_at: Date
 | 
						|
  created_at: number
 | 
						|
  model_config: {
 | 
						|
    provider: string
 | 
						|
    model_id: string
 | 
						|
    configs: ModelConfigDetail
 | 
						|
  }
 | 
						|
  message: MessageContent
 | 
						|
}
 | 
						|
 | 
						|
export type CompletionConversationsResponse = {
 | 
						|
  data: Array<CompletionConversationGeneralDetail>
 | 
						|
  has_more: boolean
 | 
						|
  limit: number
 | 
						|
  total: number
 | 
						|
  page: number
 | 
						|
}
 | 
						|
 | 
						|
export type CompletionConversationsRequest = {
 | 
						|
  keyword: string
 | 
						|
  start: string
 | 
						|
  end: string
 | 
						|
  annotation_status: string
 | 
						|
  page: number
 | 
						|
  limit: number // The default value is 20 and the range is 1-100
 | 
						|
}
 | 
						|
 | 
						|
export type ChatConversationGeneralDetail = Omit<CompletionConversationGeneralDetail, 'message' | 'annotation'> & {
 | 
						|
  summary: string
 | 
						|
  message_count: number
 | 
						|
  annotated: boolean
 | 
						|
}
 | 
						|
 | 
						|
export type ChatConversationsResponse = {
 | 
						|
  data: Array<ChatConversationGeneralDetail>
 | 
						|
  has_more: boolean
 | 
						|
  limit: number
 | 
						|
  total: number
 | 
						|
  page: number
 | 
						|
}
 | 
						|
 | 
						|
export type ChatConversationsRequest = CompletionConversationsRequest & { message_count: number }
 | 
						|
 | 
						|
export type ChatConversationFullDetailResponse = Omit<CompletionConversationGeneralDetail, 'message' | 'model_config'> & {
 | 
						|
  message_count: number
 | 
						|
  model_config: {
 | 
						|
    provider: string
 | 
						|
    model_id: string
 | 
						|
    configs: ModelConfigDetail
 | 
						|
    model: LogModelConfig
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export type ChatMessagesRequest = {
 | 
						|
  conversation_id: string
 | 
						|
  first_id?: string
 | 
						|
  limit: number
 | 
						|
}
 | 
						|
export type ChatMessage = MessageContent
 | 
						|
 | 
						|
export type ChatMessagesResponse = {
 | 
						|
  data: Array<ChatMessage>
 | 
						|
  has_more: boolean
 | 
						|
  limit: number
 | 
						|
}
 | 
						|
 | 
						|
export const MessageRatings = ['like', 'dislike', null] as const
 | 
						|
export type MessageRating = typeof MessageRatings[number]
 | 
						|
 | 
						|
export type LogMessageFeedbacksRequest = {
 | 
						|
  message_id: string
 | 
						|
  rating: MessageRating
 | 
						|
  content?: string
 | 
						|
}
 | 
						|
 | 
						|
export type LogMessageFeedbacksResponse = {
 | 
						|
  result: 'success' | 'error'
 | 
						|
}
 | 
						|
 | 
						|
export type LogMessageAnnotationsRequest = Omit<LogMessageFeedbacksRequest, 'rating'>
 | 
						|
 | 
						|
export type LogMessageAnnotationsResponse = LogMessageFeedbacksResponse
 | 
						|
 | 
						|
export type AnnotationsCountResponse = {
 | 
						|
  count: number
 | 
						|
}
 | 
						|
 | 
						|
export type WorkflowRunDetail = {
 | 
						|
  id: string
 | 
						|
  version: string
 | 
						|
  status: 'running' | 'succeeded' | 'failed' | 'stopped'
 | 
						|
  error?: string
 | 
						|
  elapsed_time: number
 | 
						|
  total_tokens: number
 | 
						|
  total_price: number
 | 
						|
  currency: string
 | 
						|
  total_steps: number
 | 
						|
  finished_at: number
 | 
						|
}
 | 
						|
export type AccountInfo = {
 | 
						|
  id: string
 | 
						|
  name: string
 | 
						|
  email: string
 | 
						|
}
 | 
						|
export type EndUserInfo = {
 | 
						|
  id: string
 | 
						|
  type: 'browser' | 'service_api'
 | 
						|
  is_anonymous: boolean
 | 
						|
  session_id: string
 | 
						|
}
 | 
						|
export type WorkflowAppLogDetail = {
 | 
						|
  id: string
 | 
						|
  workflow_run: WorkflowRunDetail
 | 
						|
  created_from: 'service-api' | 'web-app' | 'explore'
 | 
						|
  created_by_role: 'account' | 'end_user'
 | 
						|
  created_by_account?: AccountInfo
 | 
						|
  created_by_end_user?: EndUserInfo
 | 
						|
  created_at: number
 | 
						|
  read_at?: number
 | 
						|
}
 | 
						|
export type WorkflowLogsResponse = {
 | 
						|
  data: Array<WorkflowAppLogDetail>
 | 
						|
  has_more: boolean
 | 
						|
  limit: number
 | 
						|
  total: number
 | 
						|
  page: number
 | 
						|
}
 | 
						|
export type WorkflowLogsRequest = {
 | 
						|
  keyword: string
 | 
						|
  status: string
 | 
						|
  page: number
 | 
						|
  limit: number // The default value is 20 and the range is 1-100
 | 
						|
}
 | 
						|
 | 
						|
export type WorkflowRunDetailResponse = {
 | 
						|
  id: string
 | 
						|
  sequence_number: number
 | 
						|
  version: string
 | 
						|
  graph: {
 | 
						|
    nodes: Node[]
 | 
						|
    edges: Edge[]
 | 
						|
    viewport?: Viewport
 | 
						|
  }
 | 
						|
  inputs: string
 | 
						|
  status: 'running' | 'succeeded' | 'failed' | 'stopped'
 | 
						|
  outputs?: string
 | 
						|
  error?: string
 | 
						|
  elapsed_time?: number
 | 
						|
  total_tokens?: number
 | 
						|
  total_steps: number
 | 
						|
  created_by_role: 'account' | 'end_user'
 | 
						|
  created_by_account?: AccountInfo
 | 
						|
  created_by_end_user?: EndUserInfo
 | 
						|
  created_at: number
 | 
						|
  finished_at: number
 | 
						|
  exceptions_count?: number
 | 
						|
}
 | 
						|
 | 
						|
export type AgentLogMeta = {
 | 
						|
  status: string
 | 
						|
  executor: string
 | 
						|
  start_time: string
 | 
						|
  elapsed_time: number
 | 
						|
  total_tokens: number
 | 
						|
  agent_mode: string
 | 
						|
  iterations: number
 | 
						|
  error?: string
 | 
						|
}
 | 
						|
 | 
						|
export type ToolCall = {
 | 
						|
  status: string
 | 
						|
  error?: string | null
 | 
						|
  time_cost?: number
 | 
						|
  tool_icon: any
 | 
						|
  tool_input?: any
 | 
						|
  tool_output?: any
 | 
						|
  tool_name?: string
 | 
						|
  tool_label?: any
 | 
						|
  tool_parameters?: any
 | 
						|
}
 | 
						|
 | 
						|
export type AgentIteration = {
 | 
						|
  created_at: string
 | 
						|
  files: string[]
 | 
						|
  thought: string
 | 
						|
  tokens: number
 | 
						|
  tool_calls: ToolCall[]
 | 
						|
  tool_raw: {
 | 
						|
    inputs: string
 | 
						|
    outputs: string
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export type AgentLogFile = {
 | 
						|
  id: string
 | 
						|
  type: string
 | 
						|
  url: string
 | 
						|
  name: string
 | 
						|
  belongs_to: string
 | 
						|
}
 | 
						|
 | 
						|
export type AgentLogDetailRequest = {
 | 
						|
  conversation_id: string
 | 
						|
  message_id: string
 | 
						|
}
 | 
						|
 | 
						|
export type AgentLogDetailResponse = {
 | 
						|
  meta: AgentLogMeta
 | 
						|
  iterations: AgentIteration[]
 | 
						|
  files: AgentLogFile[]
 | 
						|
}
 |