This commit is contained in:
董海洋
2026-05-24 11:18:31 +08:00
parent 79d34f17c5
commit 26deb0738d
+15 -7
View File
@@ -7,6 +7,10 @@ const router = new Router();
const NVIDIA_API_KEY = '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';
const NVIDIA_API_URL = 'https://integrate.api.nvidia.com/v1/chat/completions';
// 启用/禁用 AI API(当网络不可用时设为 false)
const ENABLE_AI_API = false; // 由于服务器网络无法访问 NVIDIA,暂时禁用
// Mock 数据(用于测试或网络不可用时)
const mockProducts = [
{ name: '可口可乐', category: '饮料', description: '经典碳酸饮料,清爽解渴,330ml罐装', suggestedPrice: 3.5 },
@@ -15,6 +19,10 @@ const mockProducts = [
{ name: '康师傅方便面', category: '食品', description: '红烧牛肉面口味,12桶整箱装', suggestedPrice: 39.9 },
{ name: '农夫山泉', category: '饮料', description: '天然矿泉水,550ml瓶装,12瓶/箱', suggestedPrice: 24.0 },
{ name: '奥利奥饼干', category: '零食', description: '夹心饼干,巧克力口味,388g家庭装', suggestedPrice: 18.9 },
{ name: '旺仔牛奶', category: '饮料', description: '香甜可口,儿童喜爱,245ml罐装', suggestedPrice: 5.5 },
{ name: '益达口香糖', category: '零食', description: '清新口气,薄荷口味,40粒装', suggestedPrice: 12.9 },
{ name: '舒肤佳香皂', category: '日用品', description: '有效除菌,纯白清香,125g', suggestedPrice: 6.9 },
{ name: '金龙鱼食用油', category: '食品', description: '调和油,健康烹饪,1.8L', suggestedPrice: 45.9 },
];
// 获取随机 Mock 数据
@@ -47,6 +55,10 @@ router.post('/generate-product', async (ctx) => {
return;
}
let productInfo;
let useMock = !ENABLE_AI_API; // 如果禁用 API,直接使用 Mock
if (!useMock) {
// 构建提示词
let prompt = '你是一个专业的便利店商品管理助手。';
@@ -67,9 +79,6 @@ router.post('/generate-product', async (ctx) => {
"suggestedPrice": 建议售价(数字)
}`;
let productInfo;
let useMock = false;
try {
// 调用 NVIDIA NVCF 云 APIOpenAI 兼容格式)
const response = await fetch(NVIDIA_API_URL, {
@@ -89,7 +98,7 @@ router.post('/generate-product', async (ctx) => {
temperature: 0.7,
max_tokens: 500
}),
timeout: 60000 // 60秒超时
timeout: 30000 // 30秒超时
});
if (!response.ok) {
@@ -102,7 +111,6 @@ router.post('/generate-product', async (ctx) => {
const aiResponse = data.choices?.[0]?.message?.content;
if (!aiResponse) {
console.log('API 返回为空');
throw new Error('API 返回为空');
}
@@ -111,7 +119,6 @@ router.post('/generate-product', async (ctx) => {
if (jsonMatch) {
productInfo = JSON.parse(jsonMatch[0]);
} else {
console.log('无法解析 JSON');
throw new Error('无法解析 AI 响应');
}
@@ -120,8 +127,9 @@ router.post('/generate-product', async (ctx) => {
console.log('切换到 Mock 模式');
useMock = true;
}
}
// 使用 Mock 数据作为备用
// 使用 Mock 数据
if (useMock) {
productInfo = getMockProduct(keywords);
}