Skip to Content
🚀 ThinkDoc 体验版已上线!探索与你的知识库对话
开发者指南如何集成Dify

如何集成Dify

本指南详细介绍如何将ThinkDoc与Dify平台无缝集成,构建强大的AI应用。通过集成,您可以在Dify应用中调用ThinkDoc的知识库能力,实现基于企业文档的智能问答和内容生成。


集成架构概述

ThinkDoc + Dify集成采用API调用模式,ThinkDoc作为知识检索和问答服务,Dify作为应用编排和用户交互平台。

集成流程

  1. Dify应用 → 接收用户查询
  2. 调用ThinkDoc API → 检索相关知识
  3. 返回检索结果 → 结合LLM生成最终回答
  4. 展示给用户 → 包含引用来源

准备工作

ThinkDoc端配置
  1. 创建API Key

    • 登录ThinkDoc控制台
    • 进入”账号设置” → “API管理”
    • 创建API Key
    • 记录密钥:td-xxxxxx
  2. 准备知识库

    • 创建专用知识库(如”Dify集成知识库”)
    • 上传相关文档并完成解析
    • 记录知识库ID:xxxxxx
Dify端配置
  1. 创建应用

    • 登录Dify平台
    • 创建新的对话应用或工作流应用
    • 配置基础提示词和模型
  2. 准备HTTP请求节点

    • 在Dify工作流中添加HTTP Request节点
    • 配置ThinkDoc API调用

集成方案

适用于需要更精细控制检索过程的场景,分别调用检索和生成接口。

步骤1:检索

# 检索节点配置 Method: POST URL: https://doc.bluedigit.ai/api/retrieve Headers: Authorization: Bearer {{$secret.THINKDOC_API_KEY}} Content-Type: application/json Body: query: "{{$input.user_query}}" kb_ids: ["kb_xxxxxx"] retrieval_setting: top_k: 10 score_threshold: 0.5

步骤2:生成

# 生成节点提示词 基于以下检索到的知识片段,回答用户问题: 检索到的相关内容: {{#each $node.retrieve.response.records}} 片段{{@index + 1}}: {{text}} 来源:{{file_name}} 相关度:{{score}} --- {{/each}} 用户问题:{{$input.user_query}} 请基于检索结果生成准确、详细的回答,并在回答中明确标注信息来源。

Dify工作流配置示例

节点配置详情

  1. 输入预处理节点
// 清理和标准化用户输入 const cleanQuery = $input.user_query.trim(); const enhancedQuery = `请基于企业知识库回答:${cleanQuery}`; return { enhanced_query: enhancedQuery };
  1. 知识库选择节点
// 根据查询类型选择知识库 const query = $input.user_query.toLowerCase(); let kbIds = []; if (query.includes('政策') || query.includes('法规')) { kbIds.push('kb_policy'); } if (query.includes('产品') || query.includes('服务')) { kbIds.push('kb_product'); } if (query.includes('技术') || query.includes('开发')) { kbIds.push('kb_tech'); } return { selected_kb_ids: kbIds };
  1. ThinkDoc检索节点
Method: POST URL: https://doc.bluedigit.ai/api/retrieve Headers: Authorization: Bearer {{$secret.THINKDOC_API_KEY}} Content-Type: application/json Body: prompt: "{{$node.preprocess.enhanced_query}}" kb_ids: {{$node.kb_selector.selected_kb_ids}} retrieval_setting: top_k: 20 score_threshold: 0.5
  1. 结果处理节点
// 处理ThinkDoc返回结果 const response = $node.thinkdoc_retrieve.response; const answer = response.answer; const sources = response.sources || []; // 格式化引用来源 const formattedSources = sources.map(source => ({ content: source.content.substring(0, 200) + '...', file: source.metadata.file_name, score: source.score })); return { answer: answer, sources: formattedSources, has_sources: sources.length > 0 };
  1. LLM生成节点
# 最终生成提示词 你是一个专业的AI助手,基于ThinkDoc检索到的企业知识回答用户问题。 检索到的答案: {{$node.result_process.answer}} 引用来源: {{#each $node.result_process.sources}} - {{file}} (相关度: {{score}}) {{content}} {{/each}} 用户问题:{{$input.user_query}} 请基于检索结果生成专业、准确的回答。如果检索结果不足以回答问题,请明确说明并建议用户提供更多信息。 回答要求: 1. 保持专业性和准确性 2. 明确标注信息来源 3. 如果信息不足,主动说明 4. 使用清晰的结构化格式

环境变量配置

在Dify中配置以下环境变量:

# ThinkDoc API配置 THINKDOC_API_KEY=td-xxxxxx THINKDOC_BASE_URL=https://doc.bluedigit.ai/api

Dify环境变量设置

  1. 进入应用设置 → “环境变量”
  2. 添加上述变量
  3. 在节点中通过 {{$secret.VARIABLE_NAME}} 引用