You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { get, post, ssePost } from './base'
  2. import type { IOnCompleted, IOnData, IOnError, IOnFile, IOnMessageEnd, IOnMessageReplace, IOnThought } from './base'
  3. import type { ChatPromptConfig, CompletionPromptConfig } from '@/models/debug'
  4. import type { ModelModeType } from '@/types/app'
  5. import type { ModelParameterRule } from '@/app/components/header/account-setting/model-provider-page/declarations'
  6. export type BasicAppFirstRes = {
  7. prompt: string
  8. variables: string[]
  9. opening_statement: string
  10. error?: string
  11. }
  12. export type GenRes = {
  13. modified: string
  14. message?: string // tip for human
  15. variables?: string[] // only for basic app first time rule
  16. opening_statement?: string // only for basic app first time rule
  17. error?: string
  18. }
  19. export type CodeGenRes = {
  20. code: string
  21. language: string[]
  22. error?: string
  23. }
  24. export const sendChatMessage = async (appId: string, body: Record<string, any>, { onData, onCompleted, onThought, onFile, onError, getAbortController, onMessageEnd, onMessageReplace }: {
  25. onData: IOnData
  26. onCompleted: IOnCompleted
  27. onFile: IOnFile
  28. onThought: IOnThought
  29. onMessageEnd: IOnMessageEnd
  30. onMessageReplace: IOnMessageReplace
  31. onError: IOnError
  32. getAbortController?: (abortController: AbortController) => void
  33. }) => {
  34. return ssePost(`apps/${appId}/chat-messages`, {
  35. body: {
  36. ...body,
  37. response_mode: 'streaming',
  38. },
  39. }, { onData, onCompleted, onThought, onFile, onError, getAbortController, onMessageEnd, onMessageReplace })
  40. }
  41. export const stopChatMessageResponding = async (appId: string, taskId: string) => {
  42. return post(`apps/${appId}/chat-messages/${taskId}/stop`)
  43. }
  44. export const sendCompletionMessage = async (appId: string, body: Record<string, any>, { onData, onCompleted, onError, onMessageReplace }: {
  45. onData: IOnData
  46. onCompleted: IOnCompleted
  47. onError: IOnError
  48. onMessageReplace: IOnMessageReplace
  49. }) => {
  50. return ssePost(`apps/${appId}/completion-messages`, {
  51. body: {
  52. ...body,
  53. response_mode: 'streaming',
  54. },
  55. }, { onData, onCompleted, onError, onMessageReplace })
  56. }
  57. export const fetchSuggestedQuestions = (appId: string, messageId: string, getAbortController?: any) => {
  58. return get(
  59. `apps/${appId}/chat-messages/${messageId}/suggested-questions`,
  60. {},
  61. {
  62. getAbortController,
  63. },
  64. )
  65. }
  66. export const fetchConversationMessages = (appId: string, conversation_id: string, getAbortController?: any) => {
  67. return get(`apps/${appId}/chat-messages`, {
  68. params: {
  69. conversation_id,
  70. },
  71. }, {
  72. getAbortController,
  73. })
  74. }
  75. export const generateBasicAppFirstTimeRule = (body: Record<string, any>) => {
  76. return post<BasicAppFirstRes>('/rule-generate', {
  77. body,
  78. })
  79. }
  80. export const generateRule = (body: Record<string, any>) => {
  81. return post<GenRes>('/instruction-generate', {
  82. body,
  83. })
  84. }
  85. export const fetchModelParams = (providerName: string, modelId: string) => {
  86. return get(`workspaces/current/model-providers/${providerName}/models/parameter-rules`, {
  87. params: {
  88. model: modelId,
  89. },
  90. }) as Promise<{ data: ModelParameterRule[] }>
  91. }
  92. export const fetchPromptTemplate = ({
  93. appMode,
  94. mode,
  95. modelName,
  96. hasSetDataSet,
  97. }: { appMode: string; mode: ModelModeType; modelName: string; hasSetDataSet: boolean }) => {
  98. return get<Promise<{ chat_prompt_config: ChatPromptConfig; completion_prompt_config: CompletionPromptConfig; stop: [] }>>('/app/prompt-templates', {
  99. params: {
  100. app_mode: appMode,
  101. model_mode: mode,
  102. model_name: modelName,
  103. has_context: hasSetDataSet,
  104. },
  105. })
  106. }
  107. export const fetchTextGenerationMessage = ({
  108. appId,
  109. messageId,
  110. }: { appId: string; messageId: string }) => {
  111. return get<Promise<any>>(`/apps/${appId}/messages/${messageId}`)
  112. }