mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			355 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			355 lines
		
	
	
		
			7.6 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
 | |
| }
 | |
| 
 | |
| 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[]
 | |
| }
 | 
