30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在尝试将大语言模型LLM应用到企业内部的具体业务场景时你是否也遇到了这些难题模型回答天马行空无法精准利用企业内部知识库多个AI任务之间难以协调流程混乱开发一个可用的AI应用原型很快但要将其打磨成稳定、可靠、可维护的企业级服务却感觉无从下手如果你正在寻找一套能将AI能力真正“工程化”、“产品化”的完整方法论和实战工具那么你来对地方了。本文将为你系统拆解如何结合Hermes Agent与Harness Engineering理念从零开始构建一个企业级AI大模型应用。这不是简单的API调用演示而是一套涵盖智能体编排、工程化规范、知识增强与生产部署的完整项目实战指南。无论你是希望快速上手AI应用开发的初学者还是寻求项目落地最佳实践的资深工程师都能从中获得可直接复用的代码、配置与架构思路。1. 项目背景与核心概念解析在深入代码之前我们有必要厘清几个核心概念理解我们为什么要选择 Hermes Agent 和 Harness Engineering 这套组合拳。1.1 什么是 Hermes AgentHermes Agent 并非一个单一的大模型而是一个智能体Agent框架与平台。你可以把它理解为一个“AI应用的操作系统”或“智能体工厂”。它的核心目标是降低构建复杂AI智能体应用的门槛。与直接调用 OpenAI API 或 ChatGLM 不同Hermes Agent 提供了更高层次的抽象任务编排将复杂的用户请求如“分析上周销售数据并生成报告”自动分解为一系列可执行的原子任务查询数据库、数据清洗、调用模型生成文本、格式化输出。工具集成内置并支持扩展海量工具Tools如网络搜索、代码执行、文件读写、数据库查询、调用第三方API等。智能体可以自主选择并调用合适的工具来完成任务。记忆与状态管理维护对话历史和多轮交互的上下文使智能体具备“记忆”能力能进行连贯的深度对话。多智能体协作Swarm支持创建多个具备不同专长的智能体并让它们协同工作完成更复杂的任务这也就是所谓的“Agent Swarm”。简单说Hermes Agent 让单个AI模型具备了“手”使用工具和“团队协作”的能力从而解决更实际的问题。1.2 什么是 Harness EngineeringHarness Engineering 是一套工程化方法论和最佳实践的集合其核心思想是像“驾驭Harness烈马”一样去管理和落地AI能力确保AI应用的可控、可靠、可观测。在AI项目尤其是大模型项目中我们常面临以下挑战不可预测性相同的输入可能产生不同的输出存在“幻觉”问题。高延迟与高成本API调用慢且昂贵。安全与合规风险可能泄露敏感数据或产生不当内容。难以测试与调试传统单元测试对非确定性输出效果不佳。集成复杂度高需要与现有业务系统、数据源无缝对接。Harness Engineering 旨在通过一系列原则和工具来解决这些问题例如标准化开发流程定义从数据准备、提示工程、评估到部署的标准化流水线。可观测性Observability全面监控AI应用的输入、输出、内部决策链Chain-of-Thought、延迟、成本和使用情况。护栏Guardrails设置内容过滤器、输出格式验证、事实核查等安全层。评估与测试建立自动化评估体系衡量AI应用在质量、安全性、性能等方面的表现。版本管理与回滚对提示词Prompt、模型、知识库等进行版本控制。1.3 为什么选择这个组合将 Hermes Agent 与 Harness Engineering 结合意味着我们不仅用强大的工具Hermes来构建AI智能体还用严谨的工程方法Harness来确保它能在生产环境中稳定、安全、高效地运行。本实战项目的目标我们将构建一个“企业级智能知识问答与报告生成系统”。该系统能够安全地连接企业内部知识库如Confluence、Notion、文档服务器。理解员工提出的复杂业务问题。自动检索相关知识片段并生成准确、可靠的回答。对于分析类请求如“总结Q3项目进展”能自动执行数据查询、分析和报告撰写。整个系统具备完整的监控、日志、错误处理和性能评估能力。2. 环境准备与项目初始化工欲善其事必先利其器。我们先来搭建一个干净、可复现的开发环境。2.1 基础环境要求操作系统推荐 Ubuntu 20.04/22.04 LTS 或 macOS。Windows 用户可使用 WSL2 (Windows Subsystem for Linux) 获得最佳体验。本文演示基于 Ubuntu 22.04。Python版本 3.9 或 3.10。避免使用 3.11 可能存在的某些库兼容性问题。使用python --version检查。包管理工具使用pip和venv创建虚拟环境隔离项目依赖。代码编辑器VS Code 或 PyCharm。Docker (可选但推荐)用于部署和运行一些基础设施组件如向量数据库。2.2 创建项目并安装 Hermes Agent首先我们创建一个全新的项目目录并初始化虚拟环境。# 1. 创建项目目录 mkdir enterprise-ai-assistant cd enterprise-ai-assistant # 2. 创建Python虚拟环境 python3 -m venv venv # 3. 激活虚拟环境 # Linux/macOS source venv/bin/activate # Windows (cmd) # venv\Scripts\activate.bat # Windows (PowerShell) # venv\Scripts\Activate.ps1 # 激活后命令行提示符前应显示 (venv)接下来安装 Hermes Agent。根据其官方文档安装过程通常非常简单。我们使用 pip 从官方源安装。# 4. 升级pip并安装hermes-agent pip install --upgrade pip pip install hermes-agent安装验证安装完成后可以运行一个简单命令检查是否安装成功并查看其内置的命令行工具。hermes --help如果安装成功你应该能看到一系列可用的子命令如hermes run,hermes init等。2.3 项目结构初始化使用 Hermes Agent 提供的脚手架工具初始化一个标准的智能体项目结构。# 5. 初始化一个新的Hermes Agent项目 hermes init my_assistant cd my_assistant初始化后的目录结构大致如下my_assistant/ ├── .hermes/ # Hermes配置文件目录 ├── agents/ # 智能体定义目录 │ └── default_agent.yaml ├── tools/ # 自定义工具目录 ├── knowledge/ # 知识库用于RAG目录 ├── prompts/ # 提示词模板目录 ├── workflows/ # 工作流定义目录 ├── tests/ # 测试文件目录 ├── config.yaml # 主配置文件 ├── requirements.txt # Python依赖列表 └── README.md这个结构清晰地分离了配置、代理、工具、知识等不同模块符合 Harness Engineering 倡导的关注点分离原则。2.4 配置大模型访问Hermes Agent 支持多种大模型后端。为了在国内获得稳定、快速的体验我们选择使用DeepSeek。你需要先去 DeepSeek 官网注册并获取 API Key。编辑项目根目录下的config.yaml文件# config.yaml model: provider: deepseek # 指定模型提供商 api_key: ${DEEPSEEK_API_KEY} # 建议使用环境变量避免硬编码 model: deepseek-chat # 指定模型名称 base_url: https://api.deepseek.com # API基础地址 # 日志配置便于调试和观测 logging: level: INFO file: logs/hermes.log # 工作流执行引擎配置 workflow: max_steps: 50 # 限制单个工作流最大执行步数防止无限循环安全提示切勿将 API Key 直接提交到代码仓库。我们使用${DEEPSEEK_API_KEY}这样的占位符并通过环境变量传入。# 在终端中设置环境变量临时 export DEEPSEEK_API_KEYyour_actual_deepseek_api_key_here # Windows (cmd) # set DEEPSEEK_API_KEYyour_actual_deepseek_api_key_here3. 核心组件开发智能体、工具与知识库现在我们开始构建系统的核心部分。3.1 定义第一个智能体 (Agent)智能体是任务执行的核心。我们修改agents/default_agent.yaml或创建一个新的 agent 文件例如agents/knowledge_qa_agent.yaml。# agents/knowledge_qa_agent.yaml name: knowledge_qa_agent description: 一个专门用于回答企业内部知识库问题的智能体。 model: ${model} # 引用config.yaml中的全局模型配置 # 系统提示词定义智能体的角色、能力和行为规范 system_prompt: | 你是一个专业、准确、可靠的企业知识库助手。你的职责是严格基于提供的上下文信息来回答用户的问题。 规则 1. 如果上下文信息足以回答问题请直接给出清晰、准确的答案并引用来源。 2. 如果上下文信息不足或与问题无关请明确告知用户“根据现有知识库我无法找到相关信息”并建议用户提供更具体的关键词或联系相关同事。 3. 绝对不要捏造信息。不要使用上下文之外的知识。 4. 回答请使用专业、友好的中文。 # 该智能体可以使用的工具列表 tools: - search_knowledge_base # 这是我们即将自定义的知识库检索工具 - calculator # Hermes可能内置的简单计算器工具 # 记忆配置保留最近5轮对话历史 memory: type: conversation_buffer buffer_size: 53.2 创建自定义工具 (Tool)知识库检索智能体的强大之处在于能使用工具。我们将创建一个连接向量数据库以 Chroma 为例的检索工具。首先安装必要的库。pip install chromadb langchain sentence-transformers然后在tools/目录下创建 Python 文件search_knowledge_tool.py# tools/search_knowledge_tool.py import logging from typing import List, Optional from hermes.sdk.tool import tool, ToolContext from langchain.vectorstores import Chroma from langchain.embeddings import HuggingFaceEmbeddings from langchain.schema import Document # 设置日志 logger logging.getLogger(__name__) tool class SearchKnowledgeBaseTool: 一个用于从本地向量知识库中检索相关文档的工具。 name search_knowledge_base description 根据用户问题从企业知识库中检索最相关的文档片段。输入应为查询字符串。 def __init__(self, persist_directory: str ./knowledge/chroma_db): 初始化工具加载向量数据库。 Args: persist_directory: Chroma向量数据库的持久化目录路径。 # 使用开源的中文嵌入模型 self.embeddings HuggingFaceEmbeddings(model_namesentence-transformers/paraphrase-multilingual-MiniLM-L12-v2) try: self.vectorstore Chroma( persist_directorypersist_directory, embedding_functionself.embeddings ) logger.info(f知识库向量数据库已从 {persist_directory} 加载。) except Exception as e: logger.error(f加载向量数据库失败: {e}) # 如果数据库不存在先创建一个空的实际项目中应先初始化知识库 self.vectorstore None def __call__(self, query: str, top_k: int 3) - str: 执行检索。 Args: query: 用户查询文本。 top_k: 返回最相关的k个结果。 Returns: 格式化后的检索结果字符串包含相关文档内容。 if self.vectorstore is None: return 错误知识库未初始化或加载失败。请先构建知识库。 try: # 执行相似性搜索 docs: List[Document] self.vectorstore.similarity_search(query, ktop_k) if not docs: return 未在知识库中找到与查询相关的内容。 # 格式化结果 result_parts [] for i, doc in enumerate(docs): content_preview doc.page_content[:200] ... if len(doc.page_content) 200 else doc.page_content source doc.metadata.get(source, 未知来源) result_parts.append(f[结果 {i1}] 来源{source}\n内容{content_preview}\n) final_result f针对查询『{query}』共找到 {len(docs)} 条相关记录\n\n \n.join(result_parts) return final_result except Exception as e: logger.exception(f检索知识库时发生异常: {e}) return f检索过程中发生错误{str(e)}为了让 Hermes Agent 能发现并使用这个工具我们需要在config.yaml或一个专门的工具注册文件中进行配置。这里我们在config.yaml中追加# 追加到 config.yaml tools: - module: tools.search_knowledge_tool class_name: SearchKnowledgeBaseTool3.3 构建企业知识库 (RAG)检索增强生成RAG是让大模型获取最新、特定领域知识的关键。我们需要将企业文档如Markdown、PDF、Word处理并存入向量数据库。首先在项目根目录下创建脚本build_knowledge_base.py# build_knowledge_base.py import os from pathlib import Path from langchain.document_loaders import ( TextLoader, UnstructuredMarkdownLoader, UnstructuredPDFLoader, ) from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import Chroma def build_knowledge_base(docs_dir: str, persist_dir: str ./knowledge/chroma_db): 从指定目录加载文档分割文本生成嵌入并存储到Chroma向量数据库。 # 1. 加载文档 documents [] for ext in [*.txt, *.md, *.pdf]: for file_path in Path(docs_dir).glob(f**/{ext}): try: if ext *.pdf: loader UnstructuredPDFLoader(str(file_path)) elif ext *.md: loader UnstructuredMarkdownLoader(str(file_path)) else: loader TextLoader(str(file_path), encodingutf-8) loaded_docs loader.load() for doc in loaded_docs: # 添加元数据记录来源 doc.metadata[source] str(file_path.relative_to(docs_dir)) documents.extend(loaded_docs) print(f已加载: {file_path}) except Exception as e: print(f加载文件 {file_path} 失败: {e}) if not documents: print(未找到任何可处理的文档。) return # 2. 分割文本 text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个片段约500字符 chunk_overlap50, # 片段间重叠50字符保持上下文连贯 separators[\n\n, \n, 。, , , , , , ] ) splits text_splitter.split_documents(documents) print(f原始文档数: {len(documents)}分割后片段数: {len(splits)}) # 3. 创建嵌入模型和向量数据库 embeddings HuggingFaceEmbeddings(model_namesentence-transformers/paraphrase-multilingual-MiniLM-L12-v2) # 清空并重建数据库 if os.path.exists(persist_dir): import shutil shutil.rmtree(persist_dir) vectordb Chroma.from_documents( documentssplits, embeddingembeddings, persist_directorypersist_dir ) vectordb.persist() print(f知识库构建完成向量数据库已保存至: {persist_dir}) if __name__ __main__: # 假设你的原始文档放在 ./knowledge/raw_docs 目录下 build_knowledge_base(docs_dir./knowledge/raw_docs)运行此脚本前请将你的企业文档如公司制度.md、产品手册.pdf放入./knowledge/raw_docs目录然后执行python build_knowledge_base.py至此一个具备知识检索能力的智能体核心就搭建完成了。4. 构建完整工作流 (Workflow)单一智能体有时不足以处理复杂任务。Hermes Agent 的工作流Workflow功能允许我们将多个步骤可能涉及不同智能体或工具串联起来形成自动化流水线。我们创建一个报告生成工作流它包含1. 问题分析2. 知识检索3. 数据查询模拟4. 报告合成。在workflows/目录下创建generate_report.yaml# workflows/generate_report.yaml name: generate_report_workflow description: 根据用户请求分析需求、检索知识、获取数据并生成结构化报告。 version: 1.0 # 工作流步骤定义 steps: - name: analyze_request type: agent agent: knowledge_qa_agent input: {{user_input}} prompt: | 请分析用户的请求{{user_input}} 请判断 1. 这是一个需要事实性回答的简单问题还是一个需要综合分析并生成报告的任务 2. 如果是要生成报告请提取报告的核心主题、所需的数据维度如时间范围、部门、指标和期望的格式要点。 请将你的分析结果以JSON格式输出包含字段task_type, subject, data_dimensions, format_requirements。 output_key: analysis_result - name: retrieve_background type: tool tool: search_knowledge_base input: {{analysis_result.subject}} 背景 行业信息 condition: {{analysis_result.task_type report}} # 只有报告任务才执行此步骤 output_key: background_info - name: fetch_business_data type: code # 使用代码步骤执行自定义逻辑例如查询数据库 code: | # 这是一个模拟函数真实项目应替换为实际的数据库查询 import json import random from datetime import datetime, timedelta def simulate_data_fetch(subject, dimensions): # 模拟生成一些业务数据 data_points [] end_date datetime.now() start_date end_date - timedelta(days90) # 模拟最近90天数据 for i in range(10): date start_date timedelta(daysi*9) value random.randint(100, 1000) data_points.append({ date: date.strftime(%Y-%m-%d), metric: f{subject}_metric, value: value, department: random.choice([销售部, 市场部, 研发部]) }) return { status: success, data: data_points, summary: { total_records: len(data_points), avg_value: sum(p[value] for p in data_points) / len(data_points) } } # 从上下文中获取输入 subject context.get(analysis_result, {}).get(subject, general) dimensions context.get(analysis_result, {}).get(data_dimensions, []) result simulate_data_fetch(subject, dimensions) result_json json.dumps(result, ensure_asciiFalse) return result_json output_key: business_data - name: synthesize_report type: agent agent: knowledge_qa_agent prompt: | 你是一名高级业务分析师。请根据以下信息撰写一份专业、简洁的业务报告。 【用户原始请求】{{user_input}} 【任务分析】{{analysis_result}} 【相关背景知识】{{background_info}} 【业务数据】{{business_data}} 报告要求 1. 包含标题、概述、主要发现、数据洞察和建议措施等部分。 2. 重点突出数据中反映的趋势和关键点。 3. 语言正式、精炼。 4. 将报告用Markdown格式输出。 output_key: final_report # 工作流的最终输出 output: report: {{final_report}} analysis: {{analysis_result}} data_snapshot: {{business_data}}这个工作流定义了一个清晰的管道分析 - 检索 - 取数 - 生成。每个步骤的输出都作为变量传递给后续步骤。5. 运行、测试与交互5.1 启动 Hermes Agent 服务在项目根目录下运行以下命令启动本地服务hermes start服务启动后通常会提供一个本地Web界面如 http://localhost:7860和/或一个API端点。5.2 通过Python API调用智能体我们创建一个简单的测试脚本test_agent.py来与我们的智能体交互# test_agent.py import asyncio from hermes import Hermes async def main(): # 初始化Hermes客户端连接到本地服务 hermes Hermes(base_urlhttp://localhost:7860) # 测试1: 直接与智能体对话 print( 测试1: 知识问答 ) response await hermes.agents.run( agent_idknowledge_qa_agent, message我们公司的年假制度是怎样的 ) print(f智能体回复: {response[output]}) # 测试2: 执行工作流 print(\n 测试2: 报告生成工作流 ) workflow_result await hermes.workflows.run( workflow_idgenerate_report_workflow, inputs{user_input: 请分析一下上个季度销售部的业绩表现并生成一份总结报告。} ) print(工作流执行完成。) print(f生成的报告:\n{workflow_result[output][report]}) # 可以查看中间结果 print(f\n任务分析: {workflow_result[output][analysis]}) if __name__ __main__: asyncio.run(main())运行测试脚本python test_agent.py5.3 通过CLI进行交互你也可以直接使用 Hermes 的 CLI 进行快速测试# 与特定智能体对话 hermes chat --agent knowledge_qa_agent # 运行工作流 hermes workflow run generate_report_workflow --input {user_input: 分析Q3市场活动效果}6. Harness Engineering 实践监控、评估与护栏构建出可运行的AI应用只是第一步用工程化方法保障其质量才是关键。6.1 实现可观测性 (Observability)我们需要记录每一次交互的详细信息用于调试和优化。修改config.yaml启用更详细的日志和追踪。# 追加到 config.yaml observability: # 启用详细日志 logging: level: DEBUG format: detailed # 包含时间、级别、模块、消息 handlers: - file: filename: logs/hermes_debug.log max_bytes: 10485760 # 10MB backup_count: 5 - console # 追踪Tracing配置记录每个步骤的输入输出和耗时 tracing: enabled: true exporter: console # 可配置为 jaeger, otlp 等用于集中式追踪系统 # endpoint: ${JAEGER_ENDPOINT} # 指标Metrics配置用于监控性能 metrics: enabled: true port: 9090 # 暴露Prometheus格式的指标端点6.2 添加安全与合规护栏 (Guardrails)在智能体调用大模型前后我们可以插入“护栏”来过滤和验证内容。创建一个简单的关键词过滤护栏。在项目根目录创建guardrails/content_filter.py# guardrails/content_filter.py import re from typing import Dict, Any class ContentSafetyGuardrail: 一个简单的内容安全护栏过滤敏感词和检查输出格式。 def __init__(self, blocked_keywords: list None): self.blocked_keywords blocked_keywords or [机密, 绝密, 密码, token, 密钥] # 示例关键词 def check_input(self, user_input: str) - Dict[str, Any]: 检查用户输入是否安全。 issues [] for kw in self.blocked_keywords: if kw in user_input: issues.append(f输入包含受限关键词: {kw}) if issues: return {safe: False, issues: issues, action: block, message: 输入包含敏感信息请求被阻止。} return {safe: True, issues: []} def check_output(self, agent_output: str, context: Dict None) - Dict[str, Any]: 检查智能体输出是否安全合规。 issues [] # 1. 敏感词检查 for kw in self.blocked_keywords: if kw in agent_output: issues.append(f输出包含受限关键词: {kw}) # 2. 基础格式验证示例检查报告是否包含必要章节 if context and context.get(task_type) report: required_sections [概述, 主要发现, 建议] for section in required_sections: if section not in agent_output: issues.append(f报告可能缺少 {section} 部分。) if issues: # 可以选择阻断、记录或修改输出 return { safe: False, issues: issues, action: flag, # 标记但不阻断 original_output: agent_output, message: 输出内容已被标记请人工复核。 } return {safe: True, issues: []} # 使用示例 if __name__ __main__: guardrail ContentSafetyGuardrail() test_input 告诉我公司的机密项目信息 result guardrail.check_input(test_input) print(result)然后在智能体或工作流的配置中可以集成这个护栏例如在agents/knowledge_qa_agent.yaml中# agents/knowledge_qa_agent.yaml (追加) # ... 其他配置 ... guardrails: - module: guardrails.content_filter class_name: ContentSafetyGuardrail config: blocked_keywords: [机密, 绝密, 密码] # 可覆盖默认配置6.3 建立评估体系 (Evaluation)如何知道你的AI应用是否在变好需要建立评估体系。我们可以从简单的人工评估开始逐步自动化。创建一个评估脚本evaluate/run_eval.py用于批量测试智能体并记录结果。# evaluate/run_eval.py import asyncio import json import pandas as pd from datetime import datetime from hermes import Hermes class AgentEvaluator: def __init__(self, test_cases_path: str evaluate/test_cases.jsonl): self.hermes Hermes(base_urlhttp://localhost:7860) self.test_cases self._load_test_cases(test_cases_path) self.results [] def _load_test_cases(self, path): cases [] with open(path, r, encodingutf-8) as f: for line in f: if line.strip(): cases.append(json.loads(line)) return cases async def run_evaluation(self, agent_id: str): 运行所有测试用例并记录结果。 print(f开始评估智能体: {agent_id}) for i, case in enumerate(self.test_cases): print(f 运行用例 {i1}/{len(self.test_cases)}: {case[input][:50]}...) try: start datetime.now() response await self.hermes.agents.run( agent_idagent_id, messagecase[input] ) duration (datetime.now() - start).total_seconds() # 这里可以进行自动评分如基于关键词匹配、相似度等 # 本例中我们先记录人工待评分的原始结果 self.results.append({ test_id: case.get(id, i), input: case[input], expected: case.get(expected_output, ), actual: response[output], duration_seconds: duration, success: None, # 留待人工标注 notes: }) except Exception as e: print(f 用例 {i1} 执行失败: {e}) self.results.append({ test_id: case.get(id, i), input: case[input], error: str(e), success: False }) # 保存结果到CSV df pd.DataFrame(self.results) timestamp datetime.now().strftime(%Y%m%d_%H%M%S) output_file fevaluate/results/eval_{agent_id}_{timestamp}.csv df.to_csv(output_file, indexFalse, encodingutf-8-sig) print(f评估完成结果已保存至: {output_file}) return df # 测试用例文件示例 evaluate/test_cases.jsonl # {id: 1, input: 公司的年假有多少天, expected_output: 根据《员工手册》正式员工年假为15天。} # {id: 2, input: 如何申请报销, expected_output: 报销流程需通过OA系统提交详情请见《财务报销指南》。} if __name__ __main__: evaluator AgentEvaluator() asyncio.run(evaluator.run_evaluation(knowledge_qa_agent))定期运行评估并分析结果如成功率、平均响应时间、人工评分趋势是衡量AI应用表现和改进方向的核心依据。7. 生产环境部署与运维建议将开发好的AI应用部署到生产环境需要考虑更多因素。7.1 部署架构一个简单的生产架构可能包括Web服务层使用 FastAPI 或 Django 封装 Hermes Agent提供 RESTful API。任务队列使用 Celery 或 RQ 处理异步、耗时的智能体任务避免HTTP请求超时。向量数据库将 Chroma 替换为更适用于生产环境的 Qdrant、Weaviate 或 Pinecone云服务。缓存使用 Redis 缓存频繁查询的知识库检索结果降低模型调用成本和延迟。监控告警集成 Prometheus Grafana 监控服务健康、API延迟、错误率设置关键错误告警如模型调用连续失败。7.2 配置管理将敏感配置API Keys、数据库连接串移出代码使用环境变量或专业的配置中心如 Apollo, Consul。# .env 文件示例 DEEPSEEK_API_KEYsk-xxxxxxxxxxxx DATABASE_URLpostgresql://user:passlocalhost/dbname REDIS_URLredis://localhost:6379/0在config.yaml中引用model: provider: deepseek api_key: ${DEEPSEEK_API_KEY} # 从环境变量读取7.3 容器化部署 (Docker)创建Dockerfile和docker-compose.yml是实现可重复部署的标准做法。# Dockerfile FROM python:3.9-slim WORKDIR /app # 复制依赖文件并安装 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 创建非root用户运行 RUN useradd -m -u 1000 appuser chown -R appuser:appuser /app USER appuser # 暴露端口假设你的Web服务运行在8000端口 EXPOSE 8000 # 启动命令 CMD [uvicorn, app.main:app, --host, 0.0.0.0, --port, 8000]# docker-compose.yml version: 3.8 services: ai-assistant: build: . ports: - 8000:8000 environment: - DEEPSEEK_API_KEY${DEEPSEEK_API_KEY} - DATABASE_URLpostgresql://postgres:passworddb:5432/ai_db depends_on: - db - redis - qdrant volumes: - ./logs:/app/logs - ./knowledge:/app/knowledge restart: unless-stopped db: image: postgres:15 environment: POSTGRES_PASSWORD: password POSTGRES_DB: ai_db volumes: - postgres_data:/var/lib/postgresql/data redis: image: redis:7-alpine qdrant: image: qdrant/qdrant ports: - 6333:6333 volumes: - qdrant_storage:/qdrant/storage volumes: postgres_data: qdrant_storage:7.4 持续集成与持续部署 (CI/CD)在 GitLab CI 或 GitHub Actions 中配置流水线实现代码提交后自动运行测试、构建镜像、部署到测试/生产环境。# .github/workflows/deploy.yml 示例 name: Deploy AI Assistant on: push: branches: [ main ] jobs: test-and-build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Set up Python uses: actions/setup-pythonv4 with: python-version: 3.9 - name: Install dependencies run: | pip install -r requirements.txt pip install pytest - name: Run unit tests run: | python -m pytest tests/ -v - name: Build Docker image run: | docker build -t my-ai-assistant:latest . - name: Push to Registry run: | echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin docker tag my-ai-assistant:latest myregistry.com/ai-assistant:${{ github.sha }} docker push myregistry.com/ai-assistant:${{ github.sha }} deploy-staging: needs: test-and-build runs-on: ubuntu-latest if: github.ref refs/heads/main steps: - name: Deploy to Staging run: | # 使用 ssh 或 kubectl 命令部署到预发布环境 echo Deploying to staging...通过以上步骤我们完成了一个从零到一再到具备工程化雏形的企业级AI应用项目。它不仅仅是一个演示而是一个融合了智能体编排、知识增强、工程化规范和部署实践的完整解决方案。你可以在此基础上继续扩展工具集、优化工作流、完善评估和监控体系逐步构建出真正赋能业务、稳定可靠的AI生产力工具。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度