Browse Source

新增图片模型和视频模型接口

lh 3 months ago
parent
commit
a71ecd1cbd

+ 9 - 0
app/Consts/BaseConst.php

@@ -83,4 +83,13 @@ class BaseConst
     ];
 
     const VOLC_PIC_MODELS = ['doubao-seedream-5-0-260128', 'doubao-seedream-5-0-lite-260128', 'doubao-seedream-4-5-251128'];
+    // 火山写作奖励计划接入点(使用该接入点可在第二天根据前一天使用量获取免费额度)
+    const MODELS_MAP = [
+        'doubao-seed-2-0-pro-260215'        => 'ep-20260422093628-pv5vj',
+        'doubao-seed-2-0-lite-260215'       => 'ep-20260422093559-9fsgl',
+        'doubao-seed-2-0-mini-260215'       => 'ep-20260422093505-qkj4z',
+        'deepseek-v3-2-251201'              => 'ep-20260422092942-7kh9p',
+        'doubao-seedream-4-5-251128'        => 'ep-20260422092419-6lvp9',
+        'doubao-seedance-1-5-pro-251215'    => 'ep-20260422091940-g4knb'
+    ];
 }

+ 56 - 1
app/Http/Controllers/Anime/AnimeController.php

@@ -35,13 +35,68 @@ class AnimeController extends BaseController
         $this->AIVideoGenerationService = $AIVideoGenerationService;
     }
 
+    // 文字模型
     public function textModel() {
-        $models = DB::table('mp_text_models')->where('is_enabled', 1)->select('model', 'name')->get()->map(function ($value) {
+        $query = DB::table('mp_text_models')->where('is_enabled', 1);
+        
+        // 支持 model 搜索
+        if ($model = request('model')) {
+            $query->where('model', 'like', "%{$model}%");
+        }
+        
+        // 支持 name 搜索
+        if ($name = request('name')) {
+            $query->where('name', 'like', "%{$name}%");
+        }
+        
+        $models = $query->select('model', 'name')->get()->map(function ($value) {
             return (array)$value;
         })->toArray();
+        
         return $this->success($models);
     }
 
+    // 图片模型
+    public function imageModel() {
+        $query = DB::table('mp_image_models')->where('is_enabled', 1);
+        
+        // 支持 model 搜索
+        if ($model = request('model')) {
+            $query->where('model', 'like', "%{$model}%");
+        }
+        
+        // 支持 name 搜索
+        if ($name = request('name')) {
+            $query->where('name', 'like', "%{$name}%");
+        }
+        
+        $models = $query->select('model', 'name')->get()->map(function ($value) {
+            return (array)$value;
+        })->toArray();
+        
+        return $this->success($models);
+    }
+
+    // 视频模型
+    public function videoModel() {
+        $query = DB::table('mp_video_models')->where('is_enabled', 1);
+        
+        // 支持 model 搜索
+        if ($model = request('model')) {
+            $query->where('model', 'like', "%{$model}%");
+        }
+        
+        // 支持 name 搜索
+        if ($name = request('name')) {
+            $query->where('name', 'like', "%{$name}%");
+        }
+        
+        $models = $query->select('model', 'name')->get()->map(function ($value) {
+            return (array)$value;
+        })->toArray();
+        
+        return $this->success($models);
+    }
 
     public function artStyleList()
     {

+ 1 - 1
app/Services/AIGeneration/AIImageGenerationService.php

@@ -239,7 +239,7 @@ class AIImageGenerationService
                 
             // 构建火山图片生成API请求参数
             $apiParams = [
-                'model' => $task->model,
+                'model' => isset(BaseConst::MODELS_MAP[$task->model]) ? BaseConst::MODELS_MAP[$task->model] : $task->model,
                 'prompt' => $task->prompt,
                 'watermark' => false,
             ];

+ 1 - 1
app/Services/AIGeneration/AIVideoGenerationService.php

@@ -439,7 +439,7 @@ class AIVideoGenerationService
             
             // 构建火山引擎 Seedance API 请求参数
             $apiParams = [
-                'model' => $extraParams['model'],
+                'model' => isset(\App\Consts\BaseConst::MODELS_MAP[$extraParams['model']]) ? \App\Consts\BaseConst::MODELS_MAP[$extraParams['model']] : $extraParams['model'],
                 'content' => $extraParams['content'],
             ];
 

+ 3 - 2
app/Services/DeepSeek/DeepSeekService.php

@@ -4460,12 +4460,13 @@ class DeepSeekService
         }
 
         // 构建请求参数
+        $originalModel = $params['model'] ?? 'deepseek-v3-2-251201';
         $requestData = [
-            'model' => $params['model'] ?? 'deepseek-v3-2-251201',
+            'model' => isset(\App\Consts\BaseConst::MODELS_MAP[$originalModel]) ? \App\Consts\BaseConst::MODELS_MAP[$originalModel] : $originalModel,
             'messages' => $params['messages'] ?? [],
         ];
 
-        if (!in_array($requestData['model'], $this->valid_text_models)) {
+        if (!in_array($originalModel, $this->valid_text_models)) {
             Utils::throwError('20003:该模型不支持!');
         }
 

+ 3 - 2
routes/api.php

@@ -128,8 +128,9 @@ Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin']], f
 
     // 动漫管理
     Route::group(['prefix' => 'anime'], function () {
-        Route::get('textModel', [AnimeController::class, 'textModel']);                         // 文生文模型
-        Route::get('imageModel', [AnimeController::class, 'imageModel']);                       // 文生图模型
+        Route::get('textModel', [AnimeController::class, 'textModel']);                         // 文字模型
+        Route::get('imageModel', [AnimeController::class, 'imageModel']);                       // 图片模型
+        Route::get('videoModel', [AnimeController::class, 'videoModel']);                       // 视频模型
         Route::get('artStyleList', [AnimeController::class, 'artStyleList']);                   // 艺术风格列表
         Route::post('create', [AnimeController::class, 'createAnime']);                         // 创建动漫
         Route::post('addChat', [DeepSeekController::class, 'addChat']);                         // 新增动漫对话