Upload at 2026-01-01T09:09:44Z

This commit is contained in:
Nomo Bot
2026-01-01 09:09:44 +00:00
commit fdd9497773
36 changed files with 10277 additions and 0 deletions

126
src/app/api/chat/route.ts Normal file
View File

@@ -0,0 +1,126 @@
import { NextRequest, NextResponse } from 'next/server';
// Infini AI API配置
const INFINI_AI_BASE_URL = process.env.INFINI_AI_BASE_URL || 'https://cloud.infini-ai.com/maas/v1';
const INFINI_AI_API_KEY = process.env.INFINI_AI_API_KEY;
const INFINI_AI_MODEL = process.env.INFINI_AI_MODEL || 'deepseek-v3.2-exp';
// 调用Infini AI API
async function generateAIResponse(message: string): Promise<string> {
if (!INFINI_AI_API_KEY) {
throw new Error('INFINI_AI_API_KEY 环境变量未设置');
}
const url = `${INFINI_AI_BASE_URL}/chat/completions`;
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${INFINI_AI_API_KEY}`,
},
body: JSON.stringify({
model: INFINI_AI_MODEL,
messages: [
{
role: 'user',
content: message
}
]
})
};
try {
const response = await fetch(url, options);
if (!response.ok) {
throw new Error(`API请求失败: ${response.status} ${response.statusText}`);
}
const data = await response.json();
// 检查响应格式
if (data.choices && data.choices.length > 0 && data.choices[0].message) {
return data.choices[0].message.content;
} else {
throw new Error('API响应格式不正确');
}
} catch (error) {
console.error('Infini AI API调用失败:', error);
throw error;
}
}
// 备用模拟响应当API不可用时
async function generateFallbackResponse(message: string): Promise<string> {
// 模拟网络延迟
await new Promise(resolve => setTimeout(resolve, 1000 + Math.random() * 2000));
const responses = [
`我理解你说的"${message}"。这是一个很有趣的话题!`,
`关于"${message}",我可以为你提供一些见解...`,
`你提到的"${message}"让我想到了几个相关的观点。`,
`这是一个很好的问题关于"${message}"。让我来详细解释一下。`,
`我注意到你对"${message}"很感兴趣。这确实是一个值得探讨的主题。`,
];
// 如果包含代码相关关键词,返回代码示例
if (message.toLowerCase().includes('代码') || message.toLowerCase().includes('code') || message.toLowerCase().includes('编程')) {
return `关于编程,这里是一个简单的例子:
\`\`\`javascript
function greet(name) {
return \`Hello, \${name}!\`;
}
console.log(greet('World'));
\`\`\`
这个函数演示了基本的JavaScript语法。你还有其他编程相关的问题吗`;
}
return responses[Math.floor(Math.random() * responses.length)];
}
export async function POST(request: NextRequest) {
try {
const { message } = await request.json();
if (!message || typeof message !== 'string' || message.trim().length === 0) {
return NextResponse.json(
{ error: '消息内容不能为空' },
{ status: 400 }
);
}
let response: string;
try {
// 尝试调用Infini AI API
response = await generateAIResponse(message.trim());
} catch (error) {
console.warn('Infini AI API不可用使用备用响应:', error);
// 如果API调用失败使用备用响应
response = await generateFallbackResponse(message.trim());
}
return NextResponse.json({
message: response,
timestamp: new Date().toISOString(),
});
} catch (error) {
console.error('Chat API error:', error);
return NextResponse.json(
{ error: '服务器内部错误' },
{ status: 500 }
);
}
}
export async function GET() {
return NextResponse.json({
status: 'ok',
message: 'AI聊天API正在运行',
timestamp: new Date().toISOString(),
});
}