如果你用过ollama,那你不妨再来玩玩llama.cpp,这个更强悍,为了继续使用原来在ollama下载的模型,只需要运行以下bat文件即可
@echo off
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion
:: ============================================
:: 配置区域 - 请根据你的实际情况修改
:: ============================================
set "LLAMA_CPP_PATH=D:\llama_cpp"
set "OLLAMA_MODELS_PATH=D:\.ollama\models"
:: ============================================
:: 颜色设置
:: ============================================
color 0A
:: ============================================
:: 第一步:获取模型列表
:: ============================================
echo ========================================
echo 欢迎使用 llama.cpp 启动器
echo ========================================
echo.
echo 正在获取已安装的模型列表...
echo.
set "model_count=0"
for /f "skip=1 tokens=1 delims= " %%a in ('ollama list 2^>nul') do (
set /a model_count+=1
set "model_!model_count!=%%a"
echo [!model_count!] %%a
)
if !model_count! equ 0 (
echo.
echo [错误] 没有找到任何模型,请先运行 ollama pull 下载模型。
pause
exit /b
)
echo.
echo 共找到 !model_count! 个模型
:: ============================================
:: 第二步:让用户选择模型
:: ============================================
:select_model
echo.
set /p model_choice="请输入要使用的模型编号 (1-!model_count!): "
if !model_choice! lss 1 goto invalid_choice
if !model_choice! gtr !model_count! goto invalid_choice
set "selected_model=!model_!model_choice!!"
echo.
echo 你选择了: !selected_model!
goto find_model_file
:invalid_choice
echo [错误] 无效的编号,请重新输入。
goto select_model
:: ============================================
:: 第三步:查找模型文件
:: ============================================
:find_model_file
echo.
echo 正在查找模型文件...
set "found_file="
set "max_size=0"
for /f "delims=" %%f in ('dir /b "%OLLAMA_MODELS_PATH%\blobs\sha256-*" 2^>nul') do (
set "file_path=%OLLAMA_MODELS_PATH%\blobs\%%f"
call :get_file_size "!file_path!"
if !file_size! gtr !max_size! (
set "max_size=!file_size!"
set "found_file=%%f"
)
)
if defined found_file (
set "model_path=%OLLAMA_MODELS_PATH%\blobs\!found_file!"
echo 找到模型文件: !found_file!
) else (
echo [错误] 在 blobs 目录未找到任何模型文件。
pause
exit /b
)
if not exist "!model_path!" (
echo [错误] 模型文件不存在: !model_path!
pause
exit /b
)
:: ============================================
:: 第四步:选择运行模式
:: ============================================
:select_mode
echo.
echo ========================================
echo 请选择运行模式
echo ========================================
echo [1] 命令行交互模式 (llama-cli)
echo [2] 服务模式 (llama-server)
echo.
set /p mode_choice="请输入模式编号 (1-2): "
if "!mode_choice!"=="1" goto cli_mode
if "!mode_choice!"=="2" goto server_mode
echo [错误] 无效的选择,请重新输入。
goto select_mode
:: ============================================
:: 第五步A:命令行交互模式
:: ============================================
:cli_mode
echo.
echo ========================================
echo 启动命令行交互模式
echo ========================================
echo.
set "llama_cli=%LLAMA_CPP_PATH%\llama-cli.exe"
if not exist "!llama_cli!" (
echo [错误] 找不到 llama-cli.exe
echo 路径: !llama_cli!
echo.
set /p custom_path="请拖入 llama-cli.exe 文件或输入完整路径: "
if not exist "!custom_path!" (
echo [错误] 文件不存在,退出。
pause
exit /b
)
set "llama_cli=!custom_path!"
)
echo 正在启动模型,请稍候...
echo.
echo 提示: 输入问题后按回车,输入 /exit 或按 Ctrl+C 退出
echo.
"!llama_cli!" -m "!model_path!" --color auto -cnv
if errorlevel 1 (
echo.
echo 尝试使用备选模式...
"!llama_cli!" -m "!model_path!" -p "Hello, please introduce yourself"
)
pause
goto end
:: ============================================
:: 第五步B:服务模式
:: ============================================
:server_mode
echo.
echo ========================================
echo 启动服务模式
echo ========================================
echo 服务地址: http://localhost:8080
echo API端点: http://localhost:8080/v1/chat/completions
echo 按 Ctrl+C 停止服务
echo ========================================
echo.
set "llama_server=%LLAMA_CPP_PATH%\llama-server.exe"
if not exist "!llama_server!" (
echo [警告] 找不到 llama-server.exe
echo 路径: !llama_server!
echo.
set /p custom_path="请拖入 llama-server.exe 文件或输入完整路径: "
if not exist "!custom_path!" (
echo [错误] 文件不存在,退出。
pause
exit /b
)
set "llama_server=!custom_path!"
)
echo.
echo 配置选项 (直接回车使用默认值):
set /p host="主机地址 (默认 127.0.0.1): "
if "!host!"=="" set "host=127.0.0.1"
set /p port="端口 (默认 8080): "
if "!port!"=="" set "port=8080"
set /p context="上下文大小 (默认 4096): "
if "!context!"=="" set "context=4096"
set /p gpu_layers="GPU层数 (默认 0, 有显卡可设 20-40): "
if "!gpu_layers!"=="" set "gpu_layers=0"
echo.
echo ========================================
echo 启动参数:
echo 模型: !selected_model!
echo 地址: http://!host!:!port!
echo 上下文: !context!
echo GPU层数: !gpu_layers!
echo ========================================
echo.
"!llama_server!" -m "!model_path!" --host !host! --port !port! -c !context! --n-gpu-layers !gpu_layers!
if errorlevel 1 (
echo.
echo [错误] 服务启动失败
)
pause
goto end
:: ============================================
:: 子函数:获取文件大小
:: ============================================
:get_file_size
set "file_size=%~z1"
exit /b
:: ============================================
:: 结束
:: ============================================
:end
endlocal