log.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. // Log type contains key:string conversation_id:string created_at:string quesiton:string answer:string
  2. export type Conversation = {
  3. id: string
  4. key: string
  5. conversationId: string
  6. question: string
  7. answer: string
  8. userRate: number
  9. adminRate: number
  10. }
  11. export type ConversationListResponse = {
  12. logs: Conversation[]
  13. }
  14. export const fetchLogs = (url: string) =>
  15. fetch(url).then<ConversationListResponse>(r => r.json())
  16. export const CompletionParams = ['temperature', 'top_p', 'presence_penalty', 'max_token', 'stop', 'frequency_penalty'] as const
  17. export type CompletionParamType = typeof CompletionParams[number]
  18. export type CompletionParamsType = {
  19. max_tokens: number
  20. temperature: number
  21. top_p: number
  22. stop: string[]
  23. presence_penalty: number
  24. frequency_penalty: number
  25. }
  26. export type ModelConfigDetail = {
  27. introduction: string
  28. prompt_template: string
  29. prompt_variables: Array<{
  30. key: string
  31. name: string
  32. description: string
  33. type: string | number
  34. default: string
  35. options: string[]
  36. }>
  37. completion_params: CompletionParamsType
  38. }
  39. export type Annotation = {
  40. content: string
  41. account: {
  42. id: string
  43. name: string
  44. email: string
  45. }
  46. created_at?: number
  47. }
  48. export type MessageContent = {
  49. id: string
  50. conversation_id: string
  51. query: string
  52. inputs: Record<string, any>
  53. // message: Record<string, any>
  54. message: string
  55. message_tokens: number
  56. answer_tokens: number
  57. answer: string
  58. provider_response_latency: number
  59. created_at: number
  60. annotation: Annotation
  61. feedbacks: Array<{
  62. rating: 'like' | 'dislike' | null
  63. content: string | null
  64. from_source?: 'admin' | 'user'
  65. from_end_user_id?: string
  66. }>
  67. }
  68. export type CompletionConversationGeneralDetail = {
  69. id: string
  70. status: 'normal' | 'finished'
  71. from_source: 'api' | 'console'
  72. from_end_user_id: string
  73. from_end_user_session_id: string
  74. from_account_id: string
  75. read_at: Date
  76. created_at: number
  77. annotation: Annotation
  78. user_feedback_stats: {
  79. like: number
  80. dislike: number
  81. }
  82. admin_feedback_stats: {
  83. like: number
  84. dislike: number
  85. }
  86. model_config: {
  87. provider: string
  88. model_id: string
  89. configs: Pick<ModelConfigDetail, 'prompt_template'>
  90. }
  91. message: Pick<MessageContent, 'inputs' | 'query' | 'answer' | 'message'>
  92. }
  93. export type CompletionConversationFullDetailResponse = {
  94. id: string
  95. status: 'normal' | 'finished'
  96. from_source: 'api' | 'console'
  97. from_end_user_id: string
  98. from_account_id: string
  99. // read_at: Date
  100. created_at: number
  101. model_config: {
  102. provider: string
  103. model_id: string
  104. configs: ModelConfigDetail
  105. }
  106. message: MessageContent
  107. }
  108. export type CompletionConversationsResponse = {
  109. data: Array<CompletionConversationGeneralDetail>
  110. has_more: boolean
  111. limit: number
  112. total: number
  113. page: number
  114. }
  115. export type CompletionConversationsRequest = {
  116. keyword: string
  117. start: string
  118. end: string
  119. annotation_status: string
  120. page: number
  121. limit: number // The default value is 20 and the range is 1-100
  122. }
  123. export type ChatConversationGeneralDetail = Omit<CompletionConversationGeneralDetail, 'message' | 'annotation'> & {
  124. summary: string
  125. message_count: number
  126. annotated: boolean
  127. }
  128. export type ChatConversationsResponse = {
  129. data: Array<ChatConversationGeneralDetail>
  130. has_more: boolean
  131. limit: number
  132. total: number
  133. page: number
  134. }
  135. export type ChatConversationsRequest = CompletionConversationsRequest & { message_count: number }
  136. export type ChatConversationFullDetailResponse = Omit<CompletionConversationGeneralDetail, 'message' | 'model_config'> & {
  137. message_count: number
  138. model_config: {
  139. provider: string
  140. model_id: string
  141. configs: ModelConfigDetail
  142. }
  143. }
  144. export type ChatMessagesRequest = {
  145. conversation_id: string
  146. first_id?: string
  147. limit: number
  148. }
  149. export type ChatMessage = MessageContent
  150. export type ChatMessagesResponse = {
  151. data: Array<ChatMessage>
  152. has_more: boolean
  153. limit: number
  154. }
  155. export const MessageRatings = ['like', 'dislike', null] as const
  156. export type MessageRating = typeof MessageRatings[number]
  157. export type LogMessageFeedbacksRequest = {
  158. message_id: string
  159. rating: MessageRating
  160. content?: string
  161. }
  162. export type LogMessageFeedbacksResponse = {
  163. result: 'success' | 'error'
  164. }
  165. export type LogMessageAnnotationsRequest = Omit<LogMessageFeedbacksRequest, 'rating'>
  166. export type LogMessageAnnotationsResponse = LogMessageFeedbacksResponse
  167. export type AnnotationsCountResponse = {
  168. count: number
  169. }