基于开源大模型搭建私有ChatGPT服务:从协议兼容到生产部署

news2026/5/5 14:52:46
1. 项目概述与核心价值最近在折腾AI应用开发发现很多朋友都想自己部署一个类似ChatGPT的对话服务无论是用于内部知识库问答、客服机器人还是个人学习研究。直接调用官方API固然方便但成本、速率限制和数据隐私始终是绕不开的问题。于是一个能让我们在自有服务器上跑起来的开源ChatGPT服务端就成了刚需。xiaoxuan6/chatgpt-server这个项目正是瞄准了这个痛点。简单来说这是一个基于开源大语言模型LLM的、仿ChatGPT风格的API服务端实现。它不是一个模型本身而是一个“桥梁”或“服务包装器”。它的核心价值在于让你能够将诸如Llama 2、ChatGLM、Qwen等各类开源或闭源的大模型通过一套与OpenAI官方API高度兼容的接口暴露出来。这意味着所有为OpenAI API设计的客户端工具、应用框架比如LangChain、AutoGPT、各种AI助手前端几乎无需修改或只需极小的适配就能接入你私有的模型服务实现完全自主可控的AI能力集成。我花了一段时间深入研究并部署了这个项目它解决的不只是“有没有”的问题更是“好不好用”、“稳不稳定”的问题。项目在协议兼容性、部署便捷性和可扩展性上做了不少工作对于中小团队或个人开发者而言是快速搭建私有化AI服务的一个非常务实的选择。接下来我将从设计思路、实战部署、深度配置到排错优化完整拆解这个项目分享一线实操中的全部细节和踩过的坑。2. 核心架构与设计思路拆解2.1 为什么是API兼容层项目的首要设计目标是协议兼容。OpenAI的Chat Completions API即/v1/chat/completions端点事实上已成为行业标准。无数的开源项目、商业软件都基于此协议开发。xiaoxuan6/chatgpt-server选择实现这套协议是最高效的“生态接入”策略。它相当于定义了一个“通用插座”任何符合“OpenAI插头”标准的设备客户端都能即插即用。这种设计带来了巨大优势降低迁移成本如果你现有的应用基于OpenAI API开发切换到自建服务可能只需要修改API Base URL和API Key。丰富工具链你可以继续使用像openaiPython库、各类SDK甚至是一些现成的WebUI如ChatGPT-Next-Web它们能无缝对接。聚焦核心作为服务端它不必重复造轮子去实现流式输出、上下文管理、函数调用等复杂逻辑而是专注于如何将不同后端模型的输出“翻译”成标准格式。注意兼容是目标但100%的完全兼容非常困难。项目会处理大部分通用参数如model,messages,stream,temperature但对于一些非常用或新引入的参数如seed,logprobs支持程度取决于后端模型本身的能力和项目的更新进度。在关键业务场景使用前务必进行充分的接口测试。2.2 核心组件与数据流理解数据流是部署和调试的基础。一次完整的请求流程如下客户端请求你的应用如一个聊天界面向chatgpt-server的/v1/chat/completions端点发送一个HTTP POST请求请求体格式与调用OpenAI API完全一致。请求验证与路由服务端接收请求验证API Key如果启用、解析参数。根据请求中的model字段或配置文件决定将请求转发给哪个后端模型服务。适配与转发这是核心环节。服务端将标准的OpenAI格式请求转换为后端模型服务能理解的格式。例如如果后端是Ollama一个本地运行模型的工具则转换为Ollama的API格式如果后端是vLLM一个高性能推理服务器则转换为vLLM的格式。项目通过不同的“适配器”Adapter模块来实现这种转换。调用后端服务转换后的请求被发送到真正的模型推理服务如Ollama、vLLM、或直接是Hugging Face的transformers库加载的模型。响应转换与返回后端模型返回结果后服务端的适配器再将结果“逆向翻译”回OpenAI的标准格式包括处理流式stream输出和非流式输出最后将响应返回给客户端。整个架构的核心是松耦合。chatgpt-server本身不负责沉重的模型推理它只是一个智能路由和格式转换代理。这种设计让它可以灵活支持多种后端而你作为部署者可以根据对性能、成本、模型能力的需求自由选择甚至混合搭配后端。2.3 技术选型背后的考量项目主要使用Python开发这几乎是当前AI开源生态的“官方语言”。选择Python意味着能最大化地利用FastAPI、Pydantic、httpx等成熟生态库快速构建高性能、易于维护的API服务。FastAPI用于构建Web API。它自动生成交互式文档Swagger UI对异步async/await支持友好非常适合处理AI推理这种可能耗时的IO密集型请求尤其是流式响应。Pydantic用于数据验证和设置管理。它确保了进出API的数据格式严格符合OpenAI的规范减少了潜在的错误。配置文件也通常用Pydantic的BaseSettings来管理支持环境变量覆盖非常利于容器化部署。适配器模式这是项目的精髓。通过为每个支持的后端Ollama, vLLM, OpenAI-Compatible等编写独立的适配器类新增后端支持变得模块化不影响核心逻辑。你可以查看项目adapters/目录下的代码清晰地看到这种设计。这种选型体现了务实主义用最成熟的生态工具解决核心问题把复杂性封装在适配层给使用者提供尽可能简单的接口。3. 环境准备与部署实战3.1 基础环境搭建部署的第一步是准备一个合适的运行环境。虽然项目理论上可以在Windows上运行但考虑到AI模型部署的生态和稳定性Linux服务器如Ubuntu 20.04/22.04 LTS是强烈推荐的选择。一台拥有足够内存建议16GB以上和GPU如果追求速度的云服务器或本地工作站是理想载体。系统更新与依赖安装sudo apt update sudo apt upgrade -y sudo apt install -y python3-pip python3-venv curl git确保你的Python版本在3.8以上。python3-venv用于创建独立的Python虚拟环境避免污染系统环境。创建项目目录与虚拟环境mkdir -p ~/projects/chatgpt-server cd ~/projects/chatgpt-server python3 -m venv venv source venv/bin/activate # 激活虚拟环境激活后命令行提示符前会出现(venv)标识。3.2 后端模型服务选型与部署以Ollama为例chatgpt-server需要连接一个实际提供推理能力的后端。这里我以Ollama为例因为它部署极其简单且支持大量热门开源模型。安装Ollama 访问Ollama官网获取一键安装脚本。curl -fsSL https://ollama.com/install.sh | sh安装完成后Ollama服务会自动启动。拉取并运行模型 Ollama的核心概念是“拉取”模型。我们以轻量级的llama3.2:1b模型为例仅作演示生产环境需根据需求选择更大模型。ollama pull llama3.2:1b ollama run llama3.2:1b # 这会进入一个交互式对话测试模型是否正常。按CtrlD退出。现在Ollama的API服务已经在http://localhost:11434运行。你可以通过curl测试curl http://localhost:11434/api/generate -d { model: llama3.2:1b, prompt: Hello, world! }实操心得Ollama非常适合快速原型验证和个人使用。但对于需要高并发、低延迟的生产环境或者使用非常大的模型如70B参数建议考虑vLLM或TGIText Generation Inference作为后端。它们专为高性能推理优化支持连续批处理、PagedAttention等高级特性能极大提升吞吐量。部署vLLM通常需要更复杂的GPU环境配置。3.3 chatgpt-server的安装与配置获取项目代码git clone https://github.com/xiaoxuan6/chatgpt-server.git cd chatgpt-server安装Python依赖pip install -r requirements.txt如果遇到网络问题可以考虑使用国内镜像源如pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple。配置文件详解 项目根目录下通常会有示例配置文件如config.example.yaml或.env.example。复制一份并修改。cp .env.example .env编辑.env文件这是最关键的步骤。以下是一个连接Ollama后端的配置示例# 服务运行配置 HOST0.0.0.0 # 监听所有网络接口方便远程访问 PORT8000 # 服务端口 # 日志配置 LOG_LEVELINFO # 后端模型配置 - 这里配置Ollama BACKEND_TYPEollama # 指定后端类型 OLLAMA_BASE_URLhttp://localhost:11434 # Ollama服务地址 OLLAMA_MODELllama3.2:1b # 默认使用的模型可与请求中的model参数覆盖 # API密钥配置可选但生产环境强烈建议启用 API_KEYSsk-your-secret-key-here,sk-another-key # 多个key用逗号分隔 # 如果留空或注释掉则不需要API Key验证仅限内网或测试BACKEND_TYPE这是核心配置告诉服务使用哪个适配器。除了ollama还可能支持vllm,openai等。OLLAMA_MODEL这是默认模型。客户端在请求时可以在model字段指定其他已拉取的Ollama模型名服务端会动态转发。API_KEYS生产环境务必设置。这相当于你私有服务的密码。客户端需要在请求头中携带Authorization: Bearer sk-your-secret-key-here。启动服务python main.py # 或者使用uvicorn直接启动如果项目使用FastAPI # uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload看到类似Uvicorn running on http://0.0.0.0:8000的日志说明服务启动成功。3.4 验证服务打开浏览器访问http://你的服务器IP:8000/docs你应该能看到自动生成的Swagger UI接口文档。这是一个非常好的验证方式说明FastAPI应用运行正常。接下来我们用最直接的curl命令测试核心的聊天补全接口curl -X POST http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-your-secret-key-here \ -d { model: llama3.2:1b, messages: [ {role: system, content: You are a helpful assistant.}, {role: user, content: 请用中文介绍一下你自己。} ], stream: false, temperature: 0.7 }如果一切正常你会收到一个JSON格式的响应其中包含choices[0].message.content字段里面就是模型的回复。流式输出测试 将上面请求体中的stream: false改为stream: true。curl命令会保持连接并持续接收到以data:开头的Server-Sent Events (SSE)格式的数据块。这对于实现打字机效果的前端至关重要。4. 深度配置与高级功能4.1 多模型与模型路由一个强大的服务端应该能同时管理多个模型。chatgpt-server通过model参数和适配器配置来实现这一点。单后端多模型以Ollama为例你可以在Ollama中拉取多个模型ollama pull llama3.2:3b,ollama pull qwen2.5:7b。在客户端请求时只需指定不同的model参数如model: qwen2.5:7b服务端会将请求转发给Ollama并指定对应的模型。这要求你的默认后端Ollama支持所请求的模型。多后端支持项目的设计允许配置多个后端。虽然标准配置可能只指定一个BACKEND_TYPE但你可以通过修改代码或高级配置实现一个“模型路由表”。例如将请求中model以gpt-开头的转发给一个配置了OpenAI兼容接口的后端如Azure OpenAI将以llama-开头的转发给本地的Ollama服务。这需要对适配器调度逻辑进行定制化开发是项目的高级用法。4.2 身份验证与速率限制对于对外开放的服务安全和控制是必须的。API Key验证如前所述在.env中设置API_KEYS即可启用。服务端会检查请求头中的Authorization字段。你可以为不同客户端、不同团队分配不同的Key便于管理和审计。速率限制原项目可能未内置复杂的速率限制。在生产环境中这是防止滥用和保证服务稳定的关键。通常有两种实现方式在chatgpt-server层面集成可以使用slowapi或FastAPI的中间件配合redis来实现基于IP或API Key的令牌桶限流。在反向代理层面实现更常见的做法是使用Nginx或Traefik作为反向代理在它们上面配置限流规则。例如在Nginx中http { limit_req_zone $binary_remote_addr zoneapi:10m rate10r/s; server { location /v1/chat/completions { limit_req zoneapi burst20 nodelay; proxy_pass http://localhost:8000; } } }这表示每秒最多10个请求允许突发20个。4.3 使用反向代理与HTTPS直接暴露8000端口是不安全的。我们应该使用Nginx或Caddy这样的Web服务器作为反向代理并配置HTTPS。安装Nginxsudo apt install -y nginx配置Nginx站点 创建配置文件/etc/nginx/sites-available/chatgpt_serverserver { listen 80; server_name your-domain.com; # 替换为你的域名或IP location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 以下两行对流式响应很重要 proxy_buffering off; proxy_cache off; } }启用配置并重启Nginxsudo ln -s /etc/nginx/sites-available/chatgpt_server /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 sudo systemctl reload nginx配置HTTPS使用Let‘s Encrypt 安装Certbot工具申请免费SSL证书。sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.comCertbot会自动修改Nginx配置重定向HTTP到HTTPS并配置好SSL证书。现在你就可以通过https://your-domain.com/v1/chat/completions来安全地访问你的API服务了。4.4 进程守护与开机自启我们不能一直开着终端运行python main.py。需要使用进程管理工具。使用systemd推荐 创建服务文件/etc/systemd/system/chatgpt-server.service[Unit] DescriptionChatGPT Server Service Afternetwork.target [Service] Typesimple Useryour_username # 替换为你的用户名 WorkingDirectory/home/your_username/projects/chatgpt-server EnvironmentPATH/home/your_username/projects/chatgpt-server/venv/bin ExecStart/home/your_username/projects/chatgpt-server/venv/bin/python main.py Restartalways RestartSec3 [Install] WantedBymulti-user.target然后启用并启动服务sudo systemctl daemon-reload sudo systemctl enable chatgpt-server sudo systemctl start chatgpt-server sudo systemctl status chatgpt-server # 查看状态这样服务就会在后台持续运行并且服务器重启后自动启动。5. 客户端集成与应用示例服务部署好后最关键的一步是如何使用它。得益于OpenAI API兼容性集成变得异常简单。5.1 使用官方OpenAI Python库这是最直接的方式。你只需要将api_base指向你自己的服务地址。from openai import OpenAI # 初始化客户端指向自建服务 client OpenAI( api_keysk-your-secret-key-here, # 你在.env中设置的API Key base_urlhttp://localhost:8000/v1, # 注意这里要加上/v1 ) # 发起聊天请求 response client.chat.completions.create( modelllama3.2:1b, # 指定模型需与后端匹配 messages[ {role: system, content: 你是一个专业的翻译助手。}, {role: user, content: Translate the following English text to Chinese: Hello, how are you today?} ], streamFalse, temperature0.8, ) print(response.choices[0].message.content)流式响应处理stream client.chat.completions.create( modelllama3.2:1b, messages[{role: user, content: 讲一个简短的故事}], streamTrue, ) for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end, flushTrue)5.2 集成到LangChainLangChain是构建AI应用的热门框架它原生支持OpenAI API。from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate # 创建LangChain的LLM对象指向自建服务 llm ChatOpenAI( openai_api_keysk-your-secret-key-here, openai_api_basehttp://localhost:8000/v1, model_namellama3.2:1b, # LangChain可能会用这个参数但主要靠base_url temperature0.7, ) # 使用Prompt模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个资深程序员擅长用{language}解释技术概念。), (user, 请解释一下什么是{concept}) ]) chain prompt | llm # 调用链 response chain.invoke({language: Python, concept: 装饰器}) print(response.content)5.3 对接Web前端如ChatGPT-Next-WebChatGPT-Next-Web是一个非常流行的开源ChatGPT风格WebUI。配置它使用你的自建服务只需两步部署ChatGPT-Next-Web使用Docker最简单docker run -d -p 3000:3000 \ -e OPENAI_API_KEYsk-your-secret-key-here \ -e BASE_URLhttp://your-server-ip:8000 \ # 你的chatgpt-server地址 -e CODEyour-page-access-password \ # 设置页面访问密码 yidadaa/chatgpt-next-web打开浏览器访问http://your-server-ip:3000输入访问密码即可在Web界面中与你的私有模型对话。在设置中你可以选择不同的模型对应你后端支持的模型名。6. 性能调优与监控当服务真正用起来后性能就成了关注焦点。6.1 服务端性能调优启用工作进程默认的Uvicorn单进程可能无法充分利用多核CPU。使用gunicorn作为进程管理器配合Uvicorn工作线程。pip install gunicorn # 在项目目录下启动假设主应用对象在app/main.py中名为app gunicorn -w 4 -k uvicorn.workers.UvicornWorker app.main:app --bind 0.0.0.0:8000-w 4表示启动4个工作进程。最佳数量通常为CPU核心数 * 2 1。调整后端模型参数性能瓶颈往往在后端模型推理本身。Ollama可以通过环境变量OLLAMA_NUM_PARALLEL控制并行请求数在~/.ollama/config.json中配置。对于GPU运行确保正确安装了CUDA驱动Ollama会自动利用GPU。vLLM这是为性能而生的。部署时需仔细配置tensor_parallel_size张量并行用于多GPU、max_num_seqs最大批处理大小、gpu_memory_utilization等参数。例如python -m vllm.entrypoints.openai.api_server \ --model meta-llama/Llama-2-7b-chat-hf \ --tensor-parallel-size 1 \ --max-num-seqs 256 \ --gpu-memory-utilization 0.96.2 监控与日志没有监控的服务就像在黑暗中飞行。应用日志确保LOG_LEVEL设置为INFO或DEBUG调试时。日志会记录每个请求的概要、错误信息是排查问题的第一手资料。建议将日志输出到文件并配合logrotate进行管理。系统监控使用htop,nvidia-smiGPU监控服务器资源CPU、内存、GPU显存使用情况。如果资源持续吃紧需要考虑升级服务器或优化模型/参数。API监控可以使用像PrometheusGrafana这样的组合。为FastAPI应用添加prometheus-fastapi-instrumentator中间件即可暴露丰富的指标请求数、延迟、错误率等然后在Grafana中制作可视化看板。健康检查端点一个好的API服务应该提供健康检查端点。你可以为chatgpt-server添加一个/health路由它去检查后端模型服务如Ollama的连接状态并返回服务是否健康的JSON信息。这对于容器编排如K8s和负载均衡器至关重要。7. 常见问题与故障排查实录在实际部署和运行中你几乎一定会遇到下面这些问题。这里是我踩过坑后的解决方案汇总。7.1 部署与启动问题问题现象可能原因排查步骤与解决方案ImportError或ModuleNotFoundErrorPython依赖未正确安装或虚拟环境未激活。1. 确认已激活虚拟环境 (source venv/bin/activate)。2. 重新安装依赖pip install -r requirements.txt。3. 检查Python版本是否为3.8。服务启动后立即退出配置文件错误或环境变量缺失。1. 检查.env文件是否存在且格式正确无语法错误。2. 查看启动日志通常会有具体的错误提示。3. 确保BACKEND_TYPE等关键配置项已设置。访问http://ip:8000/docs无响应防火墙未开放端口或服务绑定IP错误。1. 检查服务是否真的在运行 ps aux连接后端服务超时后端模型服务如Ollama未启动或网络不通。1. 检查Ollama服务状态systemctl status ollama。2. 尝试直接curl后端地址curl http://localhost:11434/api/tags。3. 确认.env中OLLAMA_BASE_URL配置正确。7.2 运行时API调用问题问题现象可能原因排查步骤与解决方案返回401 UnauthorizedAPI Key未配置或客户端未正确传递。1. 检查.env中API_KEYS是否已设置且未注释。2. 检查客户端请求头Authorization: Bearer your-key格式是否正确key前后有无多余空格。3. 如果.env中未设置API_KEYS则请求不应携带Authorization头。返回404 Not Found请求的URL路径错误。1. OpenAI兼容接口的路径是/v1/chat/completions确保完整。2. 如果使用了反向代理如Nginx检查代理配置的location和proxy_pass是否正确。返回422 Unprocessable Entity请求体JSON格式错误或缺少必填字段。1. 仔细对照OpenAI API文档检查messages数组格式是否正确必须有role和content。2. 使用Swagger UI (/docs) 进行交互式测试它能帮你生成正确的请求格式。返回503 Bad Gateway或连接后端失败后端模型服务异常或模型未加载。1. 查看chatgpt-server的日志通常会有更详细的错误信息。2. 检查后端服务Ollama模型是否已拉取 (ollama list)vLLM服务是否正常响应。3. 模型文件可能损坏尝试重新拉取模型ollama pull model-name。流式响应不工作一次性返回全部内容客户端或代理服务器未正确处理流式响应。1. 确保请求中stream: true。2. 检查反向代理配置Nginx必须包含proxy_buffering off;和proxy_cache off;。3. 客户端代码需要能够处理SSEServer-Sent Events格式的数据流。7.3 模型与响应内容问题问题现象可能原因排查步骤与解决方案响应速度极慢模型太大硬件资源CPU/内存/GPU不足。1. 使用htop,nvidia-smi监控资源使用。如果内存/显存占满会触发交换速度暴跌。2. 考虑换用更小的模型如从7B换到3B或1B。3. 对于Ollama尝试在拉取模型时指定量化版本如llama3.2:3b:q4_0能显著减少内存占用和提升速度。回答质量差胡言乱语模型本身能力有限或提示词Prompt不佳。1. 首先直接在Ollama交互界面 (ollama run) 测试相同问题排除服务端问题。2. 尝试更强大的模型。3. 优化系统提示词systemmessage给模型更明确的角色和指令约束。4. 调整temperature参数降低如0.2-0.5减少随机性提高如0.8-1.2增加创造性。中文回答出现乱码或编码问题服务端或客户端编码处理不当。1. 确保服务端Python环境、代码文件使用UTF-8编码。2. 在FastAPI应用中可以显式指定响应编码。3. 检查客户端如浏览器、curl是否支持UTF-8。对于curl可以加-H Accept: application/json; charsetutf-8。上下文长度不足忘记之前对话超出了模型的最大上下文长度。1. 了解你所使用模型的最大上下文长度Context Window如Llama 3.2 1B可能是8K。2. 在客户端实现上下文窗口管理只保留最近N条消息或总结历史对话。3. 一些后端如vLLM支持更长的上下文但需要相应配置。7.4 高级问题与技巧如何支持更多模型研究项目的adapters/目录。如果要新增一个后端支持理论上需要仿照现有适配器编写一个新的类实现请求/响应的格式转换逻辑并在配置和路由中注册它。如何修改默认的API行为例如你想给所有响应添加一个自定义的头部或者修改错误响应的格式。你需要修改chatgpt-server的FastAPI应用代码通常是添加自定义的中间件Middleware或异常处理器Exception Handler。并发请求下服务崩溃可能是后端模型服务如Ollama并发处理能力弱。考虑换用vLLM或者在前端/网关层做请求队列。也可以尝试调整Ollama的OLLAMA_NUM_PARALLEL参数但不要超过硬件负荷。想同时服务多个不同的模型客户端可以考虑部署多个chatgpt-server实例每个实例连接不同的后端模型然后使用Nginx做基于路径或子域名的反向代理和负载均衡。例如/v1/llama/代理到Llama服务/v1/qwen/代理到Qwen服务。部署和维护一个自建的AI对话服务就像打理一个自己的小花园。开始时可能会遇到各种环境问题、配置麻烦但一旦跑通那种完全自主掌控、数据私密、成本可控的体验是直接调用公有云API无法比拟的。xiaoxuan6/chatgpt-server这个项目提供了一个非常扎实的起点它用兼容性换来了巨大的生态便利。剩下的就是根据你的具体需求在模型选型、性能优化和功能扩展上继续深耕了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2585301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…