requests.ts 897 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type { ChatRequest, ChatReponse } from "./api/chat/typing";
  2. import { Message } from "./store";
  3. export async function requestChat(messages: Message[]) {
  4. const req: ChatRequest = {
  5. model: "gpt-3.5-turbo",
  6. messages: messages
  7. .map((v) => ({
  8. role: v.role,
  9. content: v.content,
  10. }))
  11. .filter((m) => m.role !== "assistant"),
  12. };
  13. const res = await fetch("/api/chat", {
  14. method: "POST",
  15. headers: {
  16. "Content-Type": "application/json",
  17. },
  18. body: JSON.stringify(req),
  19. });
  20. return (await res.json()) as ChatReponse;
  21. }
  22. export async function requestWithPrompt(messages: Message[], prompt: string) {
  23. messages = messages.concat([
  24. {
  25. role: "system",
  26. content: prompt,
  27. date: new Date().toLocaleString(),
  28. },
  29. ]);
  30. const res = await requestChat(messages);
  31. return res.choices.at(0)?.message?.content ?? "";
  32. }