基于Coze-Studio开源框架,从零构建企业级AI智能体应用

news2026/5/7 0:43:37
1. 项目概述从“玩具”到“生产力”的AI应用构建平台如果你和我一样在过去一年里尝试过各种AI聊天机器人从ChatGPT到Claude再到国内外的各种大模型你可能会有一个共同的感受它们很强大但总感觉隔着一层纱。你问它答但很难把它变成一个能嵌入到你日常工作流、解决特定业务问题的“智能体”。比如你想让AI帮你自动整理会议纪要、根据产品需求生成测试用例或者创建一个能回答客户专业问题的知识库客服你会发现直接使用通用聊天界面效率低下且难以标准化和复用。这正是coze-dev/coze-studio这个开源项目试图解决的问题。它不是另一个聊天机器人前端而是一个面向开发者的、开源的AI应用Bot开发与部署平台。简单来说它把Coze扣子这个商业化AI Bot平台的核心能力以代码的形式开放了出来。这意味着开发者可以像管理一个普通的Web应用项目一样用Git管理版本用代码定义AI的工作流、知识库和插件并在自己的服务器上部署和运行实现完全的自主可控。我第一次接触这个项目时感觉像是拿到了一个“乐高积木”的完整图纸和零件清单。以前我们只能在线上的Coze平台里拖拽组件虽然方便但总有种“黑盒”的不确定感数据流向、模型调用成本、私有化部署都是问题。而coze-studio则把这一切都摊开在你面前。你可以清晰地看到一个用户的问题是如何被接收经过哪些预处理调用哪个大模型支持OpenAI、DeepSeek、智谱等多种后端结合了哪些知识库文档又通过哪个插件去执行了具体的操作比如查询数据库、发送邮件最后生成回复。整个过程你都可以用代码进行精细化的控制和定制。这个项目的核心价值在于它极大地降低了构建复杂、可运营AI应用的门槛。它不是一个需要你从零开始写HTTP请求、处理流式响应、管理对话状态的底层SDK而是一个开箱即用的框架。你只需要关注业务逻辑本身定义你的Bot需要什么能力技能准备什么样的知识知识库以及如何与外部系统交互插件。剩下的工程化问题如并发处理、会话管理、插件调度等框架已经帮你处理好了。这对于中小团队或个人开发者来说意味着可以用极小的成本启动一个具备企业级架构的AI产品。2. 核心架构与设计哲学为什么是“Studio”要理解coze-studio得先拆解它的名字。“Coze”代表了其源自字节跳动的Coze平台继承了其“Bot as a Service”的理念。“Studio”则点明了它的定位一个集成开发环境IDE和运行时引擎的结合体。它的设计哲学非常明确声明式配置 模块化扩展 开发者友好。2.1 核心组件解析Bot、Skill、Knowledge Base与Plugin整个系统的架构围绕四个核心概念展开理解它们就理解了整个开发范式Bot机器人这是最终呈现给用户的AI应用实体。每个Bot都有一个唯一的标识、名称、描述和系统提示词System Prompt。你可以把它理解为一个项目的“主程序”它定义了AI的“人格”和核心任务。Skill技能这是Bot能力的原子化单元。一个技能对应一个具体的任务比如“总结文章”、“生成SQL查询”、“分析情感”。在coze-studio中技能主要通过两种方式实现提示词工程通过精心设计的提示词Prompt引导大模型完成特定任务。框架提供了强大的提示词模板功能支持变量插值。工作流Workflow对于更复杂的、多步骤的任务你可以用YAML或JSON定义一个工作流。工作流可以包含条件判断、循环、多个LLM调用节点、插件调用节点等实现复杂的逻辑编排。这是将AI从“聊天”升级为“自动化流程”的关键。Knowledge Base知识库让AI拥有“长期记忆”和“专业知识”的核心。你可以将公司文档、产品手册、API文档等任何文本、PDF、Word文件上传系统会自动进行切片、向量化并存入向量数据库默认支持Chroma可扩展。当用户提问时系统会先进行向量检索将最相关的知识片段作为上下文注入给大模型从而实现精准、有据可依的回答。这是构建专业领域AI助理的基石。Plugin插件连接AI世界和现实世界的桥梁。插件允许Bot执行具体的操作比如“查询天气”、“创建日历事件”、“调用企业内部API”。coze-studio的插件体系非常开放你可以用Python或JavaScript轻松编写一个插件定义其输入、输出参数然后像调用函数一样在工作流或技能中调用它。这四者的关系可以用一个简单的比喻Bot是一家公司Skill是公司的各个部门市场部、研发部Knowledge Base是公司的档案库Plugin则是公司与外界供应商、客户沟通的接口。你的工作就是作为“架构师”设计这家公司的组织结构和运作流程。2.2 与商业化Coze平台及LangChain等框架的对比很多开发者会问我已经在用Coze官网了为什么还需要这个或者LangChain不也能做这些事吗这里有几个关键区别vs. 商业化Coze平台控制权coze-studio是自托管的所有数据对话记录、知识库文件、向量数据都在你自己的服务器上满足数据安全和合规要求。成本你可以自由选择后端大模型API灵活控制成本。比如对实时性要求不高的内部知识问答可以使用成本更低的模型。可定制性你可以深度修改框架代码定制UI界面、增加认证方式、集成特定的监控告警系统这是SaaS平台无法做到的。离线能力结合本地部署的大模型如Ollama Llama 3可以实现完全离线的AI应用适合内网环境。vs. LangChain/LlamaIndex等开发框架开箱即用程度coze-studio提供了一个完整的、包含前端界面的应用。你用LangChain可能需要自己搭建Web服务器、设计会话管理、开发管理后台。而coze-studio直接提供了一个可运行的产品你只需要配置和开发业务模块。开发范式LangChain更像是一个“工具箱”提供了丰富的组件但如何组装成一个稳定易用的产品需要大量工程工作。coze-studio则提供了一个“产品蓝图”和“脚手架”规定了标准的开发模式降低了架构设计的复杂度。关注点分离在coze-studio中你可以更专注于业务逻辑技能和插件而非底层通信协议和状态管理。实操心得不要将coze-studio视为LangChain的替代品而应视为基于类似理念如Agent、Tool Calling之上封装的一个产品级解决方案。如果你的目标是快速构建一个可供团队或客户使用的AI应用coze-studio的起步速度会快得多。如果你需要极度灵活、高度定制的研究性项目LangChain可能更合适。3. 从零开始环境搭建与第一个Bot的诞生理论说了这么多我们直接上手看看如何从零跑起一个属于自己的AI应用。整个过程比想象中要顺畅。3.1 基础环境准备与项目初始化首先你需要一个Linux/MacOS服务器或本地开发环境。项目基于Python推荐使用Python 3.10或以上版本。# 1. 克隆仓库 git clone https://github.com/coze-dev/coze-studio.git cd coze-studio # 2. 创建虚拟环境强烈推荐 python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # 3. 安装依赖 pip install -r requirements.txt这里有一个关键注意事项项目的requirements.txt可能包含一些对特定系统环境的依赖。如果你在安装过程中遇到关于chromadb或sentence-transformers的错误通常是缺少某些系统库。在Ubuntu/Debian上你可以先运行sudo apt-get update sudo apt-get install -y build-essential python3-dev对于其他错误仔细阅读错误日志通常都能在搜索引擎中找到解决方案。3.2 核心配置详解让框架“动”起来安装完成后最重要的步骤是配置。所有配置集中在config目录下。你需要重点关注两个文件.env文件这是环境变量配置文件包含了最关键的密钥和开关。# 复制示例文件 cp .env.example .env # 然后编辑 .env 文件打开.env你需要配置以下几项OPENAI_API_KEY: 你的OpenAI API密钥。这是连接GPT模型的桥梁。如果你使用其他模型如DeepSeek、智谱AI或本地模型需要配置对应的变量。MODEL_NAME: 指定默认使用的模型例如gpt-4o-mini或gpt-3.5-turbo。根据你的需求和预算选择。DATABASE_URL: 数据库连接字符串。框架使用SQLite作为默认开发数据库生产环境建议换成PostgreSQL。例如postgresql://user:passwordlocalhost:5432/coze_studio。VECTOR_STORE_TYPE: 向量数据库类型默认是chroma。如果你有大规模的向量数据可以考虑配置成pgvector需PostgreSQL或qdrant。config.yaml文件这是应用的主要配置文件定义了更详细的行为。server: 配置服务器主机和端口。llm: 配置大模型相关的参数如温度temperature、最大token数max_tokens等。温度参数通常0.1-0.7控制输出的随机性对于需要确定性答案的任务如代码生成建议设低0.1-0.3对于创意写作可以设高0.7-0.9。embedding: 配置文本向量化模型用于知识库。默认的text-embedding-3-small效果和性价比都不错。plugins: 配置插件目录和加载规则。配置完成后初始化数据库python scripts/init_db.py这个脚本会创建所有必要的数据库表。3.3 启动服务与初探管理界面一切就绪后启动开发服务器python main.py # 或者使用uvicorn性能更好 uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload访问http://localhost:8000你应该能看到coze-studio的Web管理界面。第一次使用通常需要注册一个管理员账户。登录后你会看到一个清爽的仪表盘左侧是导航栏Bots, Skills, Knowledge Bases, Plugins中间是内容区。第一个Bot创建一个会议纪要助手点击 “Bots” - “Create New Bot”。Bot Name:Meeting-Minutes-AssistantDescription: 一个帮助自动总结和提炼会议要点的助手。System Prompt: 这是塑造Bot性格和能力的核心。你可以这样写你是一个专业的会议纪要助手。你的任务是帮助用户从杂乱的会议录音转录文本或聊天记录中提取关键信息并结构化地输出会议纪要。 纪要需要包括会议主题、参会人员、时间、讨论要点分条列出、达成的决议或待办事项Action Items明确负责人和截止时间、以及后续计划。 请保持语言简洁、专业避免冗余。System Prompt的质量直接决定了Bot的上限需要反复调试。点击保存。现在你有了一个空的Bot。它还没有任何技能或知识。为Bot添加第一个技能点击 “Skills” - “Create New Skill”。Skill Name:extract-meeting-actionsType: 选择Prompt Template。Prompt: 这里我们可以设计一个更具体的提示词模板。请分析以下会议文本找出所有明确指派的或隐含的“待办事项”Action Items。 文本{{meeting_text}} 请以JSON格式输出包含以下字段 - “action_item“: 具体的任务描述 - “assignee“: 负责人如果文中提及 - “deadline“: 截止时间如果文中提及 如果某项信息缺失请用“待确认”填充。注意{{meeting_text}}这是一个变量占位符当调用这个技能时需要传入实际的会议文本。保存后回到你的Bot编辑页面在 “Attached Skills” 部分将这个技能添加进去。测试你的Bot在Bot列表页找到你刚创建的Bot点击 “Chat” 按钮。在聊天界面你可以输入一段模拟的会议文本比如“今天我们讨论了Q3的产品上线计划。张三负责在周五前完成API接口开发李四需要在下周三准备好市场宣传材料。王五提了一个关于用户认证的安全问题需要进一步调研。”发送后Bot会调用你附加的extract-meeting-actions技能并返回一个结构化的JSON列出张三和李四的任务。虽然简单但你已经完成了一个从定义到交互的完整AI应用闭环。4. 进阶实战构建企业级知识库问答机器人单一的技能Bot更像一个高级版的提示词工具。coze-studio真正的威力在于结合知识库和插件构建能解决实际业务问题的复杂智能体。我们以一个常见的场景为例构建一个“企业内部技术文档问答机器人”。4.1 知识库的创建、管理与优化策略知识库是这类机器人的“大脑”。处理不当就会变成“人工智障”。创建知识库在 “Knowledge Bases” 页面创建命名为Internal-Tech-Docs。文档上传与处理支持格式TXT, MD, PDF, DOCX, PPTX。对于PDF和扫描件其文本提取质量取决于底层的解析库如PyPDF2, pdfplumber。复杂排版的PDF效果可能不佳建议先尝试转换或预处理。上传后系统会进行“切片”Chunking和“向量化”Embedding。这里有两个关键参数需要理解Chunk Size切片大小默认可能是512或1024个token。这决定了每段文本的长度。如果文档结构清晰如API文档每个函数一个章节可以适当增大如2048以保持上下文的完整性。如果文档是连贯的长文则不宜过大以免检索时引入无关信息。Chunk Overlap切片重叠相邻切片之间重叠的token数。设置一定的重叠如10%可以防止一个完整的句子或概念被切碎提高检索的连贯性。我通常设置为 chunk_size 的 10%-20%。实操心得不要一次性上传所有文档。建议分批上传并针对不同类型的文档如API参考、设计规范、故障处理手册创建不同的知识库。这样在Bot配置时可以更精准地选择知识源也便于后续的更新和维护。优化检索效果元数据过滤在上传文档时可以为文档添加元数据Metadata如doc_type: “api“,product: “payment“,version: “v2.0“。在Bot提问时可以结合元数据进行过滤确保只从相关的文档中检索。例如当用户问“支付接口v1.1的调用频率限制是多少”系统可以优先检索product: “payment“且version: “v1.1“的文档切片。混合检索除了默认的向量相似度检索coze-studio也支持关键词检索如BM25。在实际应用中可以结合两者Hybrid Search先通过关键词快速筛选出相关文档再用向量检索进行语义精排效果往往更好。这需要在配置或代码层面进行支持可以关注项目的更新或自行扩展。4.2 插件开发让Bot“动手”操作知识库让Bot能“回答”插件则让Bot能“执行”。假设我们需要Bot在回答完问题后能自动在内部工单系统如Jira创建一个跟踪任务。插件结构在plugins/目录下创建一个新的Python文件jira_creator.py。一个最简单的插件结构如下from typing import Any, Dict from app.plugins.base import PluginBase class JiraCreatorPlugin(PluginBase): 一个创建Jira任务的插件 # 插件元信息 name “jira_creator“ description “在Jira中创建新的任务或Bug“ parameters [ { “name“: “summary“, “type“: “string“, “description“: “任务的摘要/标题“, “required“: True }, { “name“: “description“, “type“: “string“, “description“: “任务的详细描述“, “required“: True }, { “name“: “issue_type“, “type“: “string“, “description“: “问题类型如 Task, Bug“, “required“: False, “default“: “Task“ } ] async def execute(self, args: Dict[str, Any]) - Dict[str, Any]: 插件的执行逻辑 summary args.get(“summary“) description args.get(“description“) issue_type args.get(“issue_type“, “Task“) # 这里是调用真实Jira API的地方示例中仅模拟 # 实际开发中你需要安装jira库并配置认证信息 # from jira import JIRA # jira JIRA(server‘https://your-jira.com‘, basic_auth(‘user‘, ‘pass‘)) # new_issue jira.create_issue(...) # 模拟创建成功 mock_issue_key “PROJ-123“ return { “success“: True, “message“: f“Jira任务创建成功“, “issue_key“: mock_issue_key, “issue_url“: f“https://your-jira.com/browse/{mock_issue_key}“ }注册插件确保你的插件类在plugins/__init__.py中被导入或者框架能自动发现它取决于配置。在Bot中调用插件现在你可以在Bot的System Prompt或某个Skill的Prompt中指示AI在适当的时候使用这个插件。例如在System Prompt末尾加上“如果用户反馈的是一个明确的Bug或需要跟踪的新功能需求请使用jira_creator插件为其创建一个Jira任务。在创建前请向用户确认任务的摘要和描述。”当用户说“登录页面在Safari浏览器上点击按钮没反应这是个Bug”AI在理解意图后会尝试调用jira_creator插件并自动将对话内容填充到summary和description参数中。4.3 工作流编排实现多步骤复杂逻辑单纯的“问答-执行”有时不够。比如用户问“我们系统最近关于‘支付超时’的错误日志有什么规律”这可能需要1查询日志系统2对结果进行分析总结3如果发现是高频错误自动创建Jira任务。这时就需要工作流Workflow。在工作流编辑器中通常是YAML定义你可以将多个步骤串联起来name: analyze_error_logs description: 分析特定错误日志并创建任务 steps: - name: query_logs type: plugin plugin_name: log_query_plugin parameters: error_keyword: “{{user_input}}“ time_range: “last_7_days“ output_to: log_results - name: analyze_pattern type: llm prompt: 请分析以下日志查询结果总结错误发生的规律如时间分布、关联服务、用户特征等。 结果{{log_results}} model: gpt-4o-mini output_to: analysis_report - name: decide_if_create_task type: condition condition: “{{analysis_report.frequency}} ‘high‘“ true_step: create_jira_task false_step: end_workflow - name: create_jira_task type: plugin plugin_name: jira_creator parameters: summary: “高频错误告警{{user_input}}“ description: “{{analysis_report.summary}}“ issue_type: “Bug“这个工作流定义了一个清晰的决策链。你可以将这个工作流作为一个Skill附加到Bot上。当用户触发时Bot就会按这个流程执行实现智能化的自动处理。5. 部署、监控与性能调优实战指南开发完成后的Bot需要稳定可靠地运行。这里涉及到部署架构、监控和性能优化。5.1 生产环境部署架构对于个人或小团队单机部署可能足够。但对于有一定用户量的生产环境建议采用以下分离式架构[用户] - [负载均衡器 (Nginx)] - [多个 coze-studio Web 实例] - [共享数据库 (PostgreSQL)] - [向量数据库 (Qdrant/PgVector)] - [大模型API]无状态应用coze-studio的Web服务本身是无状态的会话信息存储在数据库中。这让你可以轻松地水平扩展通过增加实例数量来应对高并发。数据库将默认的SQLite换成PostgreSQL。使用连接池如PgBouncer管理数据库连接。向量数据库如果知识库很大Chroma的单机模式可能成为瓶颈。可以考虑迁移到qdrant或pgvector。Qdrant是一个专门的向量数据库性能优异且支持分布式。PgVector是PostgreSQL的扩展好处是可以和业务数据共用同一个数据库简化运维。文件存储如果上传的文档很多需要考虑使用对象存储如AWS S3、MinIO来存储原始文件而不是本地磁盘。使用Docker项目通常提供Dockerfile或docker-compose.yml。使用Docker部署可以极大简化环境依赖问题。一个典型的docker-compose.yml可能包含app(coze-studio),postgres,redis(用于缓存或会话)以及qdrant等服务。5.2 关键监控指标与日志分析部署上线后不能做“睁眼瞎”。需要监控几个关键点API调用成本与延迟这是最大的可变成本。需要监控Token消耗记录每个请求的输入/输出token数并关联到具体用户或Bot。可以设置每日/每月的token预算告警。模型响应时间监控调用OpenAI等上游API的延迟。延迟过高会影响用户体验也可能意味着需要调整模型参数如降低max_tokens或启用流式响应。错误率监控API调用的429限频、5xx等错误。这有助于提前发现配额问题或服务异常。知识库检索效果检索命中率有多少用户问题成功触发了知识库检索检索相关性这是一个更主观的指标。可以通过在管理后台抽样检查或者开发一个简单的反馈机制“这个回答有帮助吗”来评估检索到的文档片段是否真正相关。应用性能请求吞吐量与响应时间监控Web服务的QPS和P99延迟。数据库与向量数据库负载监控连接数、查询耗时。插件执行时间自定义插件可能是性能瓶颈需要监控其执行耗时。实操建议在coze-studio的代码中关键函数如LLM调用、知识库检索、插件执行周围添加详细的日志记录记录输入参数、耗时和结果摘要注意不要记录敏感信息。然后使用ELKElasticsearch, Logstash, Kibana或LokiGrafana等日志聚合系统进行集中分析和告警。5.3 性能优化与成本控制技巧缓存策略对话缓存对于完全相同的用户输入如果上下文也相同可以直接返回缓存结果避免重复调用昂贵的LLM。可以使用Redis存储缓存。向量检索缓存对常见的查询问题其向量检索结果也可以缓存减少对向量数据库的重复查询。提示词结果缓存如果某些Skill的提示词模板输出是确定的例如格式化当前日期可以缓存其结果。模型策略优化分层模型使用对于简单的意图分类、信息提取任务使用便宜快速的模型如gpt-3.5-turbo对于需要复杂推理、总结或创作的任务再使用能力更强的模型如gpt-4或gpt-4o。这可以在工作流中通过条件判断来实现。设置合理的max_tokens不要盲目使用默认值。根据任务类型限制生成文本的最大长度可以有效控制单次调用成本。使用流式响应对于长文本生成启用流式响应Streaming可以让用户更快地看到首个token提升体验虽然总耗时可能不变。知识库优化定期更新与清理过时的文档会污染知识库导致检索结果不准确。建立文档的版本管理和生命周期制度。优化切片策略针对不同类型的文档技术文档、会议记录、客服问答测试不同的chunk_size和chunk_overlap找到召回率和准确率的最佳平衡点。使用更好的Embedding模型如果预算允许可以尝试效果更好的Embedding模型如text-embedding-3-large或开源的bge-large-zh-v1.5中文这能直接提升检索质量。6. 避坑指南与常见问题排查在实际开发和运维中我踩过不少坑。这里总结一些最常见的问题和解决方法希望能帮你节省时间。6.1 开发与调试阶段问题Bot回答“我不知道”或答非所问。排查思路检查System Prompt这是首要原因。Prompt是否清晰定义了Bot的角色和任务边界指令是否明确无歧义尝试将任务分解成更小、更具体的指令。检查知识库检索用户的问题是否触发了知识库检索在管理界面查看对话详情看是否有检索到的文档片段。如果没有可能是问题与文档的语义相似度太低尝试让用户换一种问法或者优化你的文档内容增加同义词、更口语化的描述。检查检索到的内容如果检索到了但答案不对可能是检索到的文档片段不相关或信息不足。需要优化知识库的切片策略或增加相关文档。检查模型温度温度temperature设置过高如0.9会导致输出随机性太大。对于事实性问答建议设置在0.1-0.3。问题插件调用失败AI说“我无法执行这个操作”。排查思路插件描述是否清晰在插件的description和parameters字段中必须用极其清晰的语言描述插件的功能和每个参数的含义。AI是根据这些描述来决定是否以及如何调用插件的。权限与认证插件代码中调用外部API时认证信息API Key, Token是否正确配置是否已添加到环境变量或配置文件中网络连通性确保你的coze-studio服务器能够访问插件需要调用的外部服务如Jira、GitLab等。日志查看查看应用日志找到插件执行时的具体错误信息。问题工作流执行到某一步就停了没有结果。排查思路检查工作流定义YAML语法是否正确步骤名称是否唯一变量引用{{variable}}的名称是否与上一步的output_to对应检查条件判断如果是condition步骤其条件表达式是否评估为布尔值用于比较的变量是否存在且类型正确查看执行跟踪coze-studio应该提供工作流的执行历史或调试视图查看每一步的输入输出定位卡住的位置。6.2 生产环境运维问题服务响应突然变慢。排查思路检查上游LLM API首先确认是否是OpenAI等服务的区域性故障或限流。可以尝试直接调用其API进行测试。检查数据库数据库连接数是否耗尽是否有慢查询知识库向量检索是否因为数据量变大而变慢考虑为向量表建立索引如果使用PgVector。检查服务器资源CPU、内存、磁盘IO是否达到瓶颈特别是进行Embedding计算或大型文件解析时。分析访问模式是否突然有用户上传了超大文件或进行了极其复杂的多轮对话问题知识库更新后Bot的回答没有变化。排查思路向量化是否完成上传新文档后向量化是一个后台异步过程。确认该过程已成功完成没有报错。缓存问题如果启用了检索缓存新文档的向量可能没有被缓存。需要清除相关缓存或等待缓存过期。索引重建对于某些向量数据库新增数据后可能需要手动触发索引重建如chromadb的persist操作才能立即生效。问题如何管理多个Bot和团队协作解决方案coze-studio的开源版本可能只提供了基础的用户/权限管理。对于企业级多团队使用你可能需要自行开发权限系统在现有用户模型上增加团队Team、项目Project概念实现Bot、知识库的资源隔离和权限控制读、写、执行。考虑商业化版本或替代方案如果需求复杂评估Coze的商业化企业版或者其他提供了多租户和精细权限管理的开源平台如Dify、LangGenius。使用Git进行配置管理将Bot的定义Prompt、工作流YAML、插件代码都纳入Git版本控制。不同的团队或环境开发、测试、生产可以使用不同的分支或配置文件来管理。这是开源方案带来的最大灵活性。回顾整个从零搭建的过程coze-dev/coze-studio提供的不仅仅是一个工具更是一种构建AI应用的范式。它把过去需要深厚工程能力才能搭建的AI Agent中间件变成了一个可配置、可扩展的框架。最大的体会是成功的AI应用技术只占一半另一半是对业务场景的深刻理解并将其精准地翻译成Prompt、工作流和插件。这个翻译的过程就是价值创造的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2589865.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…