log.ts 4.9 KB

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