index.ts 1.0 KB

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