File size: 2,540 Bytes
79278ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { query } from '@/shared/api/query';
import { LlmPrompt } from './types';

export const fetchLlmPrompts = async (): Promise<LlmPrompt[]> => {
  const response = await query<LlmPrompt[]>({
    url: '/llm_prompt/',
    method: 'get',
  });
  if ('error' in response) {
    throw new Error(`Ошибка получения промптов: ${response.error.status}`);
  }
  return response.data;
};

export const fetchLlmPromptById = async (id: number): Promise<LlmPrompt> => {
  const response = await query<LlmPrompt>({
    url: `/llm_prompt/${id}`,
    method: 'get',
  });
  if ('error' in response) {
    throw new Error(`Ошибка получения промпта: ${response.error.status}`);
  }
  return response.data;
};

export const createLlmPrompt = async (config: Omit<LlmPrompt, 'id' | 'created_at'>): Promise<LlmPrompt> => {
  const response = await query<LlmPrompt>({
    url: '/llm_prompt/',
    method: 'post',
    data: config,
  });
  if ('error' in response) {
    throw new Error(`Ошибка создания промпта: ${response.error.status}`);
  }
  return response.data;
};

export const updateLlmPrompt = async (config: LlmPrompt): Promise<void> => {
  const response = await query<void>({
    url: `/llm_prompt/${config.id}`,
    method: 'put',
    data: config,
  });
  if ('error' in response) {
    throw new Error(`Ошибка обновления промпта: ${response.error.status}`);
  }
};

export const setDefaultLlmPrompt = async (id: number): Promise<void> => {
  const response = await query<void>({
    url: `/llm_prompt/default/${id}`,
    method: 'put',
  });
  if ('error' in response) {
    throw new Error(`Ошибка установки промпта по умолчанию: ${response.error.status}`);
  }
};

export const deleteLlmPrompt = async (id: number): Promise<void> => {
  const response = await query<void>({
    url: `/llm_prompt/${id}`,
    method: 'delete',
  });
  if ('error' in response) {
    throw new Error(`Ошибка удаления промпта: ${response.error.status}`);
  }
};

export const fetchDefaultLlmPrompt = async (): Promise<LlmPrompt | null> => {
  const response = await query<LlmPrompt>({
    url: '/llm_prompt/default',
    method: 'get',
  });
  if ('error' in response) {
    if (response.error.status === 404) return null; // Если дефолтной записи нет
    throw new Error(`Ошибка получения дефолтной промпта: ${response.error.status}`);
  }
  return response.data;
};