From 7b685ad99ed7d2be58cf0ff9cd0e5ef4bddbb676 Mon Sep 17 00:00:00 2001 From: RustamRu Date: Sun, 9 Mar 2025 11:04:01 +0300 Subject: [PATCH] feat: add dynamic system prompt for car image analysis --- server/routers/dry-wash/get-token.js | 9 ++++++++- server/routers/dry-wash/order.js | 22 ++-------------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/server/routers/dry-wash/get-token.js b/server/routers/dry-wash/get-token.js index 8543dc6..77e83e0 100644 --- a/server/routers/dry-wash/get-token.js +++ b/server/routers/dry-wash/get-token.js @@ -4,6 +4,13 @@ const getGigaToken = async () => { return data.features['dry-wash-bh'].GIGA_TOKEN.value } +const getSystemPrompt = async () => { + const response = await fetch('https://admin.bro-js.ru/api/config/v1/dev') + const data = await response.json() + return data.features['dry-wash-bh'].SYSTEM_PROMPT.value +} + module.exports = { - getGigaToken + getGigaToken, + getSystemPrompt } \ No newline at end of file diff --git a/server/routers/dry-wash/order.js b/server/routers/dry-wash/order.js index 62eaef5..746ad6c 100644 --- a/server/routers/dry-wash/order.js +++ b/server/routers/dry-wash/order.js @@ -5,7 +5,7 @@ const { MasterModel } = require('./model/master') const { OrderModel } = require('./model/order') const { OrderCarImgModel } = require('./model/order.car-img') const { orderStatus } = require('./model/const') -const { getGigaToken } = require('./get-token') +const { getGigaToken, getSystemPrompt } = require('./get-token') const isValidPhoneNumber = (value) => /^(\+)?\d{9,15}/.test(value) const isValidCarNumber = (value) => /^[авекмнорстух][0-9]{3}[авекмнорстух]{2}[0-9]{2,3}$/i.test(value) @@ -350,25 +350,7 @@ const analyzeImage = async (fileId, token) => { messages: [ { role: "system", - content: - `Ты эксперт по оценке степени загрязнения автомобилей. Твоя задача — анализировать фотографии машин и определять степень их загрязнения. -ВАЖНО: Твой ответ ДОЛЖЕН быть СТРОГО в формате JSON и содержать ТОЛЬКО следующие поля: -{ -"value": число от 0 до 10 (целое или с одним знаком после запятой), -"description": "текстовое описание на русском языке" -} -Правила: -1. Поле "value": -- Должно быть числом от 0 до 10 -- 0 = машина абсолютно чистая -- 10 = машина максимально грязная -2. Поле "description": -- Должно содержать 2-3 предложения на русском языке -- Обязательно указать конкретные признаки загрязнения -- Объяснить почему выставлен именно такой балл -НЕ ДОБАВЛЯЙ никаких дополнительных полей или комментариев вне JSON структуры. -НЕ ИСПОЛЬЗУЙ markdown форматирование. -ОТВЕТ ДОЛЖЕН БЫТЬ ВАЛИДНЫМ JSON.`, + content: (await getSystemPrompt()) ?? `Ты эксперт по оценке степени загрязнения автомобилей. Твоя задача — анализировать фотографии машин и определять степень их загрязнения. ВАЖНО: Твой ответ ДОЛЖЕН быть СТРОГО в формате JSON и содержать ТОЛЬКО следующие поля: { "value": число от 0 до 10 (целое или с одним знаком после запятой), "description": "текстовое описание на русском языке" } Правила: 1. Поле "value": - Должно быть числом от 0 до 10 - 0 = машина абсолютно чистая - 10 = машина максимально грязная 2. Поле "description": - Должно содержать 2-3 предложения на русском языке - Обязательно указать конкретные признаки загрязнения - Объяснить почему выставлен именно такой балл НЕ ДОБАВЛЯЙ никаких дополнительных полей или комментариев вне JSON структуры. НЕ ИСПОЛЬЗУЙ markdown форматирование. ОТВЕТ ДОЛЖЕН БЫТЬ ВАЛИДНЫМ JSON. Если на фотографии нет одной машины, то оценка должна быть 0 и в описании должно быть указано, почему не удалось оценить.`, }, { role: "user",