
在生成式 AI 爆发的当下,企业拥有大量非结构化文档(产品手册、制度文件、技术规范、客服对话),却难以被高效利用。传统搜索和人工解答耗时费力,而通用大模型又缺乏企业私有知识。检索增强生成(RAG) 结合 LLM 智能体(Agent) 成为最优解——既能利用大模型的推理能力,又能挂载企业专属数据,实现精准问答与自动化操作。
本文将基于 DeepSeek(高性能、高性价比的中文大模型)和 Dify(开源 LLM 应用开发平台),手把手构建一套完整的智能体与知识库系统。内容覆盖架构设计、模型接入、知识库搭建、Agent 工作流编排、API 集成及生产级优化,所有代码和配置均可直接落地。
两者结合,可快速搭建 私有知识问答 + 任务执行 的智能体,且成本可控、部署灵活。
┌──────────────────────────────────────────────────────────────┐
│ 前端应用层 │
│ Web Chat / 企业微信 / 钉钉 / 自定义 API │
└────────────────────────┬─────────────────────────────────────┘
│ HTTPS
┌────────────────────────▼─────────────────────────────────────┐
│ Dify 核心服务 │
│ ┌─────────────┐ ┌──────────────┐ ┌───────────────────┐ │
│ │ 工作流引擎 │ │ Agent 编排 │ │ 知识库管理(RAG)│ │
│ │ (Workflow) │ │ (Function │ │ (文档分段/向量化)│ │
│ │ │ │ Calling) │ │ │ │
│ └─────────────┘ └──────────────┘ └─────────┬─────────┘ │
│ │ │
│ ┌──────────────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ 向量数据库(Qdrant/Weaviate) │ │
│ └───────────────────────────────────────────────────┘ │
└────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────▼─────────────────────────────────────┐
│ DeepSeek API │
│ (Embedding + Chat Completion) │
└──────────────────────────────────────────────────────────────┘deepseek-chat)和嵌入(deepseek-embed)能力。git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
# 修改 .env 中的相关配置(如 SECRET_KEY,数据库等)
docker-compose up -d访问 http://localhost 即可进入 Dify 控制台,默认账号 admin / 首次注册。
访问 DeepSeek 平台 注册并创建 API Key,记录密钥。
Dify 支持自定义模型供应商,我们需添加 DeepSeek 的配置。
进入 Dify 后台 → 设置 → 模型供应商 → 添加模型,选择 OpenAI-API-compatible(因为 DeepSeek 兼容 OpenAI 接口格式),填入:
deepseek-chat(或 deepseek-reasoner)https://api.deepseek.com/v1同样方式添加嵌入模型:
deepseek-embedEmbeddings保存后,Dify 即可调用 DeepSeek 进行对话和向量化。
在 Dify 中,进入 知识库 菜单,点击 创建知识库,选择 DeepSeek Embedding 作为嵌入模型。
支持上传 PDF、Word、Markdown、TXT 等格式。关键点在于分段(Chunking)策略,直接影响检索精度:
上传完成后,Dify 自动调用 DeepSeek Embedding 生成向量并存入内置 Qdrant。
在知识库设置中,可以调整检索参数:
Dify 的 Agent 基于 ReAct 框架,可调用工具完成复杂任务。我们将构建一个 企业文档助手,除回答知识库问题外,还能查询天气、发送邮件等(通过自定义工具扩展)。
进入 工作室 → 创建应用,选择 Agent 类型,命名并选择 DeepSeek 模型。
在 指令(Instruction) 中输入:
你是一个企业智能助手,拥有以下能力:
1. 基于企业知识库回答内部问题。
2. 可调用外部工具查询实时信息(如天气、邮件)。
请根据用户问题,优先从知识库中检索;若知识库无法回答,再尝试调用工具或给出建议。在 上下文(Context) 中,选择刚才创建的知识库,并设置检索参数(TopK=3,阈值=0.7)。
Dify 支持通过 OpenAPI Schema 或 Python 代码定义工具。我们以查询天气为例:
openapi: 3.0.0
info:
title: Weather Tool
version: 1.0.0
servers:
- url: https://api.weather.com
paths:
/current:
get:
operationId: getCurrentWeather
summary: 获取当前天气
parameters:
- name: city
in: query
required: true
schema:
type: string
description: 城市名称(中文)
responses:
'200':
description: 成功进入 工具 → 自定义工具,粘贴上述 YAML,并配置真实 API 地址(可结合自己的代理服务)。
或者,使用 代码工具(Code Tool) 直接编写 Python 函数:
import requests
def get_weather(city: str) -> str:
# 示例:使用免费天气API
url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_KEY&units=metric"
resp = requests.get(url)
if resp.status_code == 200:
data = resp.json()
return f"{city}当前温度{data['main']['temp']}℃,天气{data['weather'][0]['description']}"
return "无法获取天气信息"将代码粘贴到 Dify 代码工具中,并声明输入参数 city 和输出格式。
在聊天界面输入:“请查询产品手册中的保修条款,并告诉我今天北京天气。”
Agent 会:
Dify 提供完整的 REST API,可将智能体嵌入企业微信、网站或内部系统。
在应用详情页,点击 API 访问,生成密钥。
import requests
url = "https://your-dify-domain/v1/chat-messages"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"inputs": {},
"query": "如何申请年假?",
"response_mode": "streaming", # 或 "blocking"
"user": "user_123"
}
response = requests.post(url, json=payload, headers=headers, stream=True)
for line in response.iter_lines():
if line:
print(line.decode())Dify 也提供知识库管理 API,可实现文档自动入库,保持知识库实时同步。
# 上传文档至知识库
upload_url = "https://your-dify-domain/v1/datasets/{dataset_id}/documents"
files = {"file": open("new_policy.pdf", "rb")}
data = {"name": "2026年休假政策"}
resp = requests.post(upload_url, files=files, data=data, headers=headers)通过 CI/CD 管道,可将企业新文档自动注入知识库,实现“零接触”更新。
user 标识,结合 Dify 的 访问控制 插件进行过滤。我们已为某金融企业构建了一个 IT 服务台 Agent,支持:
实现效果:每月节省 200+ 人工工时,问题解决率提升至 85%。
关键代码片段(自定义工单工具):
import requests
def create_ticket(title: str, description: str, requester: str) -> str:
payload = {
"subject": title,
"description": description,
"requester_email": requester + "@company.com"
}
resp = requests.post("https://internal-ticketing.com/api/tickets",
json=payload, headers={"Authorization": "Bearer xxx"})
if resp.status_code == 201:
return f"工单已创建,编号:{resp.json()['id']}"
else:
return "工单创建失败,请重试"将该工具挂载到 Agent,并在提示词中说明“当用户要求创建工单时调用此工具”,即可实现端到端自动化。
本文全面展示了如何利用 DeepSeek 和 Dify 快速构建企业级智能体与知识库系统,从模型接入、知识库搭建、Agent 编排到 API 集成与优化,覆盖了落地过程中的关键环节。
技术亮点回顾:
未来方向:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。