| | 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' |
| |
|
| | |
| | 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[] |
| | 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 |
| | |
| | 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 |
| | } |
| |
|
| | 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 |
| | } |
| |
|
| | 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[] |
| | } |
| |
|