mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-27 11:11:07 +08:00
Merge pull request #5155 from madrays/v2
This commit is contained in:
@@ -44,6 +44,7 @@ from app.utils.http import RequestUtils, AsyncRequestUtils
|
|||||||
from app.utils.security import SecurityUtils
|
from app.utils.security import SecurityUtils
|
||||||
from app.utils.url import UrlUtils
|
from app.utils.url import UrlUtils
|
||||||
from version import APP_VERSION
|
from version import APP_VERSION
|
||||||
|
from app.helper.llm import LLMHelper
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@@ -338,6 +339,18 @@ async def set_setting(
|
|||||||
return schemas.Response(success=False, message=f"配置项 '{key}' 不存在")
|
return schemas.Response(success=False, message=f"配置项 '{key}' 不存在")
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/llm-models", summary="获取LLM模型列表", response_model=schemas.Response)
|
||||||
|
async def get_llm_models(provider: str, api_key: str, base_url: Optional[str] = None, _: User = Depends(get_current_active_user_async)):
|
||||||
|
"""
|
||||||
|
获取LLM模型列表
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
models = LLMHelper().get_models(provider, api_key, base_url)
|
||||||
|
return schemas.Response(success=True, data=models)
|
||||||
|
except Exception as e:
|
||||||
|
return schemas.Response(success=False, message=str(e))
|
||||||
|
|
||||||
|
|
||||||
@router.get("/message", summary="实时消息")
|
@router.get("/message", summary="实时消息")
|
||||||
async def get_message(request: Request, role: Optional[str] = "system",
|
async def get_message(request: Request, role: Optional[str] = "system",
|
||||||
_: schemas.TokenPayload = Depends(verify_resource_token)):
|
_: schemas.TokenPayload = Depends(verify_resource_token)):
|
||||||
|
|||||||
42
app/helper/llm.py
Normal file
42
app/helper/llm.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
"""LLM模型相关辅助功能"""
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from app.log import logger
|
||||||
|
|
||||||
|
|
||||||
|
class LLMHelper:
|
||||||
|
"""LLM模型相关辅助功能"""
|
||||||
|
|
||||||
|
def get_models(self, provider: str, api_key: str, base_url: str = None) -> List[str]:
|
||||||
|
"""获取模型列表"""
|
||||||
|
logger.info(f"获取 {provider} 模型列表...")
|
||||||
|
if provider == "google":
|
||||||
|
return self._get_google_models(api_key)
|
||||||
|
else:
|
||||||
|
return self._get_openai_compatible_models(provider, api_key, base_url)
|
||||||
|
|
||||||
|
def _get_google_models(self, api_key: str) -> List[str]:
|
||||||
|
"""获取Google模型列表"""
|
||||||
|
try:
|
||||||
|
import google.generativeai as genai
|
||||||
|
genai.configure(api_key=api_key)
|
||||||
|
models = genai.list_models()
|
||||||
|
return [m.name for m in models if 'generateContent' in m.supported_generation_methods]
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"获取Google模型列表失败:{e}")
|
||||||
|
raise e
|
||||||
|
|
||||||
|
def _get_openai_compatible_models(self, provider: str, api_key: str, base_url: str = None) -> List[str]:
|
||||||
|
"""获取OpenAI兼容模型列表"""
|
||||||
|
try:
|
||||||
|
from openai import OpenAI
|
||||||
|
|
||||||
|
if provider == "deepseek":
|
||||||
|
base_url = base_url or "https://api.deepseek.com"
|
||||||
|
|
||||||
|
client = OpenAI(api_key=api_key, base_url=base_url)
|
||||||
|
models = client.models.list()
|
||||||
|
return [model.id for model in models.data]
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"获取 {provider} 模型列表失败:{e}")
|
||||||
|
raise e
|
||||||
BIN
config/plugins/p115strmhelper/p115strmhelper_file.db
Normal file
BIN
config/plugins/p115strmhelper/p115strmhelper_file.db
Normal file
Binary file not shown.
6
package-lock.json
generated
Normal file
6
package-lock.json
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "MoviePilot",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user