从ollama到llama.cpp

作者:澎涛 | 分类:科技 | 发布时间:2026-08-22 16:00:09 | 阅读:7 | 点赞:0 | 点踩:0
标签: 人工智能

如果你用过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

评论 (0)

登录 后发表评论

暂无评论