| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { NextRequest } from 'next/server';
- import { generateText } from 'ai';
- import { createLogger } from '@/lib/logger';
- import { apiError, apiSuccess } from '@/lib/server/api-response';
- import { resolveModel } from '@/lib/server/resolve-model';
- const log = createLogger('Verify Model');
- export async function POST(req: NextRequest) {
- let model: string | undefined;
- try {
- const body = await req.json();
- const { apiKey, baseUrl, providerType } = body;
- model = body.model;
- if (!model) {
- return apiError('MISSING_REQUIRED_FIELD', 400, 'Model name is required');
- }
- // Parse model string and resolve server-side fallback
- let languageModel;
- try {
- const result = await resolveModel({
- modelString: model,
- apiKey: apiKey || '',
- baseUrl: baseUrl || undefined,
- providerType,
- });
- languageModel = result.model;
- } catch (error) {
- return apiError(
- 'INVALID_REQUEST',
- 401,
- error instanceof Error ? error.message : String(error),
- );
- }
- // Send a minimal test message
- const { text } = await generateText({
- model: languageModel,
- prompt: 'Say "OK" if you can hear me.',
- });
- return apiSuccess({
- message: 'Connection successful',
- response: text,
- });
- } catch (error) {
- log.error(`Model verification failed [model="${model ?? 'unknown'}"]:`, error);
- let errorMessage = 'Connection failed';
- if (error instanceof Error) {
- // Parse common error messages
- if (error.message.includes('401') || error.message.includes('Unauthorized')) {
- errorMessage = 'API key is invalid or expired';
- } else if (error.message.includes('404') || error.message.includes('not found')) {
- errorMessage = 'Model not found or API endpoint error';
- } else if (error.message.includes('429')) {
- errorMessage = 'API rate limit exceeded, please try again later';
- } else if (error.message.includes('ENOTFOUND') || error.message.includes('ECONNREFUSED')) {
- errorMessage = 'Cannot connect to API server, please check the Base URL';
- } else if (error.message.includes('timeout')) {
- errorMessage = 'Connection timed out, please check your network';
- } else {
- errorMessage = error.message;
- }
- }
- return apiError('INTERNAL_ERROR', 500, errorMessage);
- }
- }
|