在微信中接入Dify创建的AI应用

文章目录[x]
  1. 1:一、框架选择
  2. 1.1:1.大模型应用平台 Dify
  3. 1.2:2.微信聊天接口 Gewechat
  4. 1.3:3.聊天机器人 Dify-on-wechat
  5. 2:二、安装
  6. 3:三、配置Dify应用
  7. 4:附加 function calling 与 React对比
  8. 4.1:1. 定位与目标
  9. 4.2:2. 交互方式
  10. 4.3:3. 流程复杂度
  11. 4.4:4. 实现示例
  12. 4.5:5. 优缺点对比
  13. 4.6:6. 适用场景
  14. 4.7:总结

一、框架选择

  • 1.大模型应用平台 Dify

    网址:https://dify.ai
    Dify 是一个开源的 LLM 应用开发平台,提供从 Agent 构建到 AI 工作流编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。 由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

  • 2.微信聊天接口 Gewechat

    网址:https://github.com/Devo919/Gewechat
    gewechat的作用是模拟一个微信客户端,并向外提供一系列的功能接口,如:登录、获取好友列表、接收消息、发送消息(文字、图片、链接)等等。

框架优势

简单易用,无接入难度。比itchat安全,不易封号,区别于其他开源项目,本框架无需用户安装电脑微信,无需安装手机破解插件,只需扫码登录即可使用,操作简单。

主要功能

      • 消息自动化:可向指定对象(好友、群组)发送文本、图片、文件、emoji 表情、小程序、语音等消息。
      • 自定义消息处理:支持自动回复、自定义关键词回复、AI 回复、各种自定义类型、RPA 自动化业务交互。
      • 群管理及好友管理:设置好友备注、邀请好友统计、拉好友进群等。
  • 3.聊天机器人 Dify-on-wechat

    网址:https://github.com/hanfangyuan4396/dify-on-wechat
    作为连接Dify和gewechat的桥梁,把收到的消息转成Dify API需要的格式,再把Dify返回的内容转成gewechat的格式。

二、安装

Dify、gewechat、dify-on-wechat采用 Docker 进行安装。

  1. Dify安装
  • 1.下载源码 2.修改环境参数.env文件 3.使用docker compose创建docker服务。
  1. gewechat安装
  • 拉取镜像
docker pull http://registry.cn-hangzhou.aliyuncs.com/gewe/gewe:latest docker tag http://registry.cn-hangzhou.aliyuncs.com/gewe/gewe gewe
  • 运行镜像容器
mkdir -p /root/temp docker run -itd -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/init
  • 将容器设置成开机运行
docker update --restart=always gewe
  1. dify-on-wechat安装
  • 1.下载源码 2.修改环境变量.evn 3.使用docker运行服务。
{
    "channel_type": "gewechat",
    "dify_api_base": "http://dify/v1",
    "dify_api_key": "dify应用的key",
    "dify_app_type": "agent/chatbot/workflow 根据dify创建的应用类型选择",
    "gewechat_app_id": "gewechat生成的ipad设备id,初始不用填gewechat返回后自动传入",
    "gewechat_base_url": "http://gewechat:2536/v2/api",
    "gewechat_callback_url": "http://dify-on-chat:9919/v2/api/callback/collect",
    "gewechat_download_url": "http://gewechat:2537/download",
    "gewechat_token": "gewechat微信id,用来区分微信账户",
    其余参数根据实际情况自行配置...
}

三、配置Dify应用

dify应用创建可以查看官方文档https://docs.dify.ai/zh-hans
使用dify创建的应用交互方式有多种:1.使用dify提供的界面 2.使用dify提供的iframe代码嵌入到已有的web页面中 3.使用api的方式
dify-on-wechat使用的是api的方式,dify-on-wechat已经提供好对接接口了,只需要配置app-key就可以。

附加 function calling 与 React对比

大语言模型(LLM)的工具调用能力是其扩展功能边界的关键技术,Function CallingReAct是两种典型的实现方式。以下是两者的对比分析:

1. 定位与目标

维度 Function Calling ReAct
核心目标 结构化调用外部工具(API/函数) 结合推理(Reasoning)和行动(Acting)解决问题
设计理念 工具导向:模型直接触发预定义的工具调用 过程导向:模型自主规划推理步骤和工具调用
适用场景 简单、明确的工具调用需求(如天气查询、计算器) 复杂、多步骤的任务(如数据分析、多工具协作)

2. 交互方式

维度 Function Calling ReAct
输入输出格式 依赖结构化输入/输出(如JSON Schema) 基于自然语言生成推理步骤和动作指令
调用过程 模型直接返回工具名和参数,开发者执行工具并反馈结果 模型自主生成推理链(如“Think: ...”)和动作(如“Action: call_api(...)”)
灵活性 工具需预先定义,调用逻辑固定 动态生成调用步骤,支持多工具组合和复杂逻辑

3. 流程复杂度

维度 Function Calling ReAct
单次调用 单次请求-响应,适合简单任务 可能需多轮交互(思考→行动→观察→再思考)
错误处理 依赖开发者处理工具调用失败 模型可通过推理修正错误(如参数错误后重新尝试)
可解释性 黑盒调用,缺乏中间过程展示 白盒过程,推理链提供透明解释

4. 实现示例

Function Calling

# 预定义工具(如天气查询)
tools = [{
    "name": "get_weather",
    "parameters": {"location": "string"}
}]

# 模型返回结构化调用请求
response = llm.generate(
    query="北京天气如何?",
    tools=tools
)
# 输出示例:{"name": "get_weather", "parameters": {"location": "北京"}}

ReAct

用户问:上海人口比北京多吗?
模型输出:
Think: 需要分别查询上海和北京的人口数据,再比较。
Action: call_api("get_population", {"city": "上海"})
Observation: 上海人口为2487万。
Think: 现在查询北京的人口。
Action: call_api("get_population", {"city": "北京"})
Observation: 北京人口为2184万。
Think: 比较结果:上海人口更多。
Answer: 上海人口(2487万)比北京(2184万)多。

5. 优缺点对比

维度 Function Calling ReAct
优点 - 开发简单,适合标准化工具
- 低延迟
- 灵活处理复杂任务
- 支持自主纠错和推理
缺点 - 依赖预定义工具
- 无法处理多步骤逻辑
- 生成过程长,延迟高
- 需要解析自然语言输出

6. 适用场景

  • Function Calling
    适合工具接口固定、任务简单的场景(如查询类API、计算器)。
  • ReAct
    适合需动态规划、多工具协作的任务(如复杂问题解答、数据分析)。

总结

  • 选择Function Calling:若需求明确、工具固定,追求快速开发和高效率。
  • 选择ReAct:若任务复杂、需动态推理,且对可解释性要求高。
  • 混合使用:实践中可结合两者(如用ReAct规划流程,用Function Calling执行具体调用)。
点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像(已失效)