log.ts 4.5 KB

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