LLM Weekly(2025.06.02-06.08)

在这里插入图片描述

网络新闻

😎 网络新闻

  • Gemini 2.5 Pro 迎来升级。Gemini 2.5 Pro 实现重大改进,在 GPQA、Aider 和 LMArena 等主流基准测试中表现领先,其中 LMArena 的 Elo 评分提升 24 分,WebDevArena 提升 35 分。此次升级在保持顶尖编码性能的同时,增强了创造性与格式处理能力。目前可通过 Google AI Studio 和 Vertex AI 预览使用,新引入的“思考预算”功能可更好地控制成本和延迟。

  • AI 聊天机器人被曝实为 700 名印度工程师。微软投资的初创公司 Builder.ai 雇佣 700 名印度工程师假扮其 AI 聊天机器人 Natasha,并虚假宣称可通过 AI 生成应用程序。该公司在夸大收入声明并拖欠亚马逊和微软巨额债务后,已申请破产。这一“AI 洗地”案例凸显了商业中过度夸大 AI 应用的担忧,也让人联想到客户与职场满意度相关问题。

  • Anthropic 因企业 AI 需求年收入达 30 亿美元。受企业对 AI 的强劲需求及代码生成服务的显著增长推动,Anthropic 的年化收入在短短五个月内从 10 亿美元飙升至 30 亿美元。这家总部位于旧金山的初创公司获得 Alphabet 和

<think>我们注意到当前目录下有很多文件,包括可执行文件、动态链接库、Python脚本等。为了构建一个清晰的项目结构,我们需要对文件进行分类整理。以下是一个建议的项目结构: ``` llm-project/ ├── bin/ # 存放所有可执行文件 ├── lib/ # 存放所有动态链接库(DLL文件) ├── models/ # 存放模型文件 ├── scripts/ # 存放批处理脚本 ├── src/ # 存放源代码(Python脚本) │ ├── services/ # 存放服务相关的代码 │ └── templates/ # 存放前端模板 ├── logs/ # 存放日志文件(运行时生成) ├── requirements.txt # Python依赖 ├── LICENSE # 项目许可证(如果有多个,可以放在docs目录) └── README.md # 项目说明 ``` ### 具体文件归类: 1. **可执行文件(.exe)移动到 bin/**: - llama-quantize.exe - llama-qwen2vl-cli.exe - llama-run.exe - llama-server.exe - llama-tokenize.exe - llama-tts.exe - rpc-server.exe - llama-batched-bench.exe - llama-bench.exe - llama-cli.exe - llama-gemma3-cli.exe - llama-gguf-split.exe - llama-imatrix.exe - llama-llava-cli.exe - llama-minicpmv-cli.exe - llama-mtmd-cli.exe - llama-perplexity.exe 2. **动态链接库(.dll)移动到 lib/**: - ggml.dll - ggml-base.dll - ggml-cpu-alderlake.dll - ggml-cpu-haswell.dll - ggml-cpu-icelake.dll - ggml-cpu-sandybridge.dll - ggml-cpu-sapphirerapids.dll - ggml-cpu-skylakex.dll - ggml-cpu-sse42.dll - ggml-cpu-x64.dll - ggml-rpc.dll - libcurl-x64.dll - libomp140.x86_64.dll - llama.dll - mtmd.dll 3. **模型文件移动到 models/**: - DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf (假设这是已有的模型文件) 4. **Python脚本移动到 src/**: - chat_server.py -> src/services/chat_server.py - search.py -> src/services/search.py - start.py(如果有)-> src/start.py(但建议整合到主服务中) 5. **批处理脚本移动到 scripts/**: - start.bat -> scripts/start.bat 6. **模板文件移动到 src/templates/**: - index.html(在templates目录下)-> src/templates/index.html 7. **许可证文件移动到项目根目录或docs/**: - LICENSE-curl, LICENSE-httplib, LICENSE-jsonhpp, LICENSE-linenoise -> 可以统一放在docs/licenses/下 8. **requirements.txt 放在项目根目录** ### 重构后的目录结构示例: ``` llm-project/ ├── bin/ │ ├── llama-server.exe │ ├── llama-cli.exe │ ├── ... (其他可执行文件) ├── lib/ │ ├── ggml.dll │ ├ ... (其他dll) ├── models/ │ └── DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf ├── scripts/ │ └── start.bat ├── src/ │ ├── services/ │ │ ├── chat_server.py │ │ └── search.py │ └── templates/ │ └── index.html ├── logs/ # 这个目录会在运行时创建,不需要移动现有文件 ├── requirements.txt ├── LICENSE # 主项目的许可证(如果有) └── README.md ``` ### 修改代码中的路径: 由于文件位置变动,我们需要修改代码中的路径引用: 1. **在 `chat_server.py` 中修改子进程启动命令**: 原命令: ```python llama_process = subprocess.Popen( [os.path.join(os.getcwd(), "llama-server.exe"), "-m", os.path.join("models", "DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf"), ...] ``` 修改后(假设项目根目录为当前工作目录): ```python # 获取当前脚本所在目录(即src/services/),然后定位到项目根目录 BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) MODEL_PATH = os.path.join(BASE_DIR, "models", "DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf") LLAMA_SERVER = os.path.join(BASE_DIR, "bin", "llama-server.exe") llama_process = subprocess.Popen( [LLAMA_SERVER, "-m", MODEL_PATH, ...] ``` 2. **修改 `search.py` 中的路径(如果有)**:一般情况下,搜索服务是独立的,不需要修改。 3. **修改 `start.bat` 脚本**: 原内容可能是直接运行 `chat_server.py`,现在需要改变路径: ```batch @echo off REM 切换到项目根目录 cd /d %~dp0 REM 创建日志目录 mkdir logs 2>nul REM 启动主服务 python src\services\chat_server.py > logs\main.log 2>&1 echo 服务已启动,请访问 http://localhost:5000 pause ``` ### 创建项目根目录的启动脚本(可选): 在项目根目录创建一个 `start.bat` 来调用 `scripts/start.bat`,或者直接使用根目录的 `start.bat` 放在根目录(即上面脚本中的位置)。 ### 注意事项: 1. 移动文件后,务必更新代码中所有文件路径的引用。 2. 确保在运行服务时,当前工作目录是项目根目录,这样相对路径才能正确解析。 3. 对于动态链接库,由于可执行文件在 `bin/` 目录,而DLL在 `lib/` 目录,需要设置环境变量让系统能够找到DLL。在 `start.bat` 中添加: ```batch set PATH=%PATH%;%~dp0lib ``` 这样,当运行 `bin/` 下的可执行文件时,系统会在 `lib/` 目录下查找DLL。 ### 重构后的启动流程: 1. 将文件按照新的结构整理好。 2. 修改代码中的路径引用。 3. 修改批处理文件,设置环境变量并启动服务。 4. 运行 `start.bat`。 ### 如果不想移动文件,也可以使用虚拟目录(junction)来保持兼容性(仅Windows): 但为了清晰,建议直接重构目录。 §§相关问题§§: 1. 如何设置Windows环境变量以便程序找到DLL? 2. 如何将Python项目打包成可执行文件? 3. 如何实现跨平台的路径处理? 4. 如何管理多个模型文件?</think>根据您提供的文件列表,我建议重构项目结构如下。这将提高可维护性、减少混乱并优化资源管理: ### 重构后的项目结构 ``` llm-project/ ├── bin/ # 可执行文件 │ ├── llama-server.exe │ ├── llama-run.exe │ ├── llama-tokenize.exe │ ├── llama-tts.exe │ ├── llama-cli.exe │ ├── llama-bench.exe │ ├── llama-batched-bench.exe │ ├── llama-gemma3-cli.exe │ ├── llama-gguf-split.exe │ ├── llama-imatrix.exe │ ├── llama-llava-cli.exe │ ├── llama-minicpmv-cli.exe │ ├── llama-mtmd-cli.exe │ ├── llama-perplexity.exe │ ├── llama-quantize.exe │ ├── llama-qwen2vl-cli.exe │ └── rpc-server.exe │ ├── lib/ # 库文件 │ ├── ggml.dll │ ├── ggml-base.dll │ ├── ggml-cpu-alderlake.dll │ ├── ggml-cpu-haswell.dll │ ├── ggml-cpu-icelake.dll │ ├── ggml-cpu-sandybridge.dll │ ├── ggml-cpu-sapphirerapids.dll │ ├── ggml-cpu-skylakex.dll │ ├── ggml-cpu-sse42.dll │ ├── ggml-cpu-x64.dll │ ├── ggml-rpc.dll │ ├── libcurl-x64.dll │ ├── libomp140.x86_64.dll │ ├── llama.dll │ └── mtmd.dll │ ├── models/ # 模型文件 │ └── DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf │ ├── src/ # 源代码 │ ├── services/ │ │ ├── chat_server.py # 主中间件服务 │ │ └── search.py # 搜索服务 │ │ │ └── templates/ # 前端模板 │ └── index.html │ ├── scripts/ # 脚本文件 │ ├── start.bat # Windows启动脚本 │ └── start.sh # Linux启动脚本 │ ├── logs/ # 日志目录(自动创建) │ ├── docs/ # 文档 │ ├── LICENSE │ ├── LICENSE-curl │ ├── LICENSE-httplib │ ├── LICENSE-jsonhpp │ └── LICENSE-linenoise │ └── requirements.txt # Python依赖 ``` ### 重构说明 1. **bin/目录**: - 集中存放所有可执行文件(.exe) - 命名规范:保持原文件名但去除冗余前缀 2. **lib/目录**: - 存放所有动态链接库(.dll) - 保持原文件名不变 3. **models/目录**: - 专用于存储模型文件(.gguf) - 可扩展为多模型支持 4. **src/目录**: - 清晰的代码组织: ```python # chat_server.py 中更新路径引用 LLAMA_SERVER = os.path.join(BASE_DIR, "bin", "llama-server.exe") MODEL_PATH = os.path.join(BASE_DIR, "models", "DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf") ``` 5. **scripts/目录**: - 启动脚本示例 (start.bat): ```batch @echo off set BASE_DIR=%~dp0 set PATH=%BASE_DIR%bin;%BASE_DIR%lib;%PATH% python %BASE_DIR%src\services\chat_server.py ``` 6. **自动创建logs目录**: ```python # 在chat_server.py中添加 LOG_DIR = os.path.join(BASE_DIR, "logs") os.makedirs(LOG_DIR, exist_ok=True) ``` ### 关键文件修改 **chat_server.py** (路径: `src/services/chat_server.py`): ```python import os import sys import subprocess # ... 其他导入 ... # 获取项目根目录 BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 重要路径定义 LLAMA_SERVER = os.path.join(BASE_DIR, "bin", "llama-server.exe") MODEL_PATH = os.path.join(BASE_DIR, "models", "DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf") SEARCH_SCRIPT = os.path.join(BASE_DIR, "src", "services", "search.py") TEMPLATES_DIR = os.path.join(BASE_DIR, "src", "templates") LOG_DIR = os.path.join(BASE_DIR, "logs") app = Flask(__name__, template_folder=TEMPLATES_DIR) def start_subprocesses(): """启动所有必要的子服务""" # 确保日志目录存在 os.makedirs(LOG_DIR, exist_ok=True) # 启动大模型推理服务 llama_log = open(os.path.join(LOG_DIR, "llama.log"), "a") llama_process = subprocess.Popen( [LLAMA_SERVER, "-m", MODEL_PATH, "-c", "4096", "--port", "8080"], stdout=llama_log, stderr=subprocess.STDOUT, creationflags=subprocess.CREATE_NO_WINDOW if sys.platform == "win32" else 0 ) processes["llama"] = llama_process # 启动搜索服务 search_log = open(os.path.join(LOG_DIR, "search.log"), "a") search_process = subprocess.Popen( [sys.executable, SEARCH_SCRIPT], stdout=search_log, stderr=subprocess.STDOUT, creationflags=subprocess.CREATE_NO_WINDOW if sys.platform == "win32" else 0 ) processes["search"] = search_process # ... 其余代码保持不变 ... ``` **search.py** (路径: `src/services/search.py`): ```python import os import sys from flask import Flask, request, jsonify import requests # 获取项目根目录 BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) app = Flask(__name__) # ... 其余代码保持不变 ... ``` ### 迁移步骤 1. 创建新目录结构: ```batch mkdir llm-project cd llm-project mkdir bin lib models src services templates scripts docs ``` 2. 移动文件: ``` .exe文件 → bin/ .dll文件 → lib/ .gguf文件 → models/ .py文件 → src/services/ .html文件 → src/templates/ .bat文件 → scripts/ 许可证文件 → docs/ ``` 3. 更新启动脚本 (scripts/start.bat): ```batch @echo off set PROJECT_ROOT=%~dp0 set PATH=%PROJECT_ROOT%bin;%PROJECT_ROOT%lib;%PATH% python %PROJECT_ROOT%src\services\chat_server.py ``` 4. 添加Linux支持 (scripts/start.sh): ```bash #!/bin/bash PROJECT_ROOT=$(dirname "$0") export LD_LIBRARY_PATH=$PROJECT_ROOT/lib:$LD_LIBRARY_PATH python3 $PROJECT_ROOT/src/services/chat_server.py ``` ### 优势 1. **模块化分离**:不同功能组件物理隔离 2. **路径管理**:统一使用BASE_DIR处理路径 3. **可扩展性**:易于添加新模型或服务 4. **跨平台支持**:Windows/Linux启动脚本 5. **日志管理**:集中存储所有服务日志 6. **依赖清晰**:requirements.txt明确Python依赖 ### 使用说明 1. 安装依赖: ```bash pip install -r requirements.txt ``` 2. 启动服务: - Windows: 双击 `scripts/start.bat` - Linux: `bash scripts/start.sh` 3. 访问应用: http://localhost:5000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值