index.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { fetchEventSource } from '@microsoft/fetch-event-source'
  2. import { getAccessToken } from '@/utils/auth'
  3. import { config } from '@/config/axios/config'
  4. export interface WriteParams {
  5. /**
  6. * 1:撰写 2:回复
  7. */
  8. type: 1 | 2
  9. /**
  10. * 写作内容提示 1。撰写 2回复
  11. */
  12. prompt: string
  13. /**
  14. * 原文
  15. */
  16. originalContent: string
  17. /**
  18. * 长度
  19. */
  20. length: number
  21. /**
  22. * 格式
  23. */
  24. format: number
  25. /**
  26. * 语气
  27. */
  28. tone: number
  29. /**
  30. * 语言
  31. */
  32. language: number
  33. }
  34. export const writeStream = ({
  35. data,
  36. onClose,
  37. onMessage,
  38. onError,
  39. ctrl
  40. }: {
  41. data: WriteParams
  42. onMessage?: (res: any) => void
  43. onError?: (...args: any[]) => void
  44. onClose?: (...args: any[]) => void
  45. ctrl: AbortController
  46. }) => {
  47. // return request.post({ url: '/ai/write/generate-stream', data })
  48. const token = getAccessToken()
  49. return fetchEventSource(`${config.base_url}/ai/write/generate-stream`, {
  50. method: 'post',
  51. headers: {
  52. 'Content-Type': 'application/json',
  53. Authorization: `Bearer ${token}`
  54. },
  55. openWhenHidden: true,
  56. body: JSON.stringify(data),
  57. onmessage: onMessage,
  58. onerror: onError,
  59. onclose: onClose,
  60. signal: ctrl.signal
  61. })
  62. }