使用GoHumanLoop将你的AI Agent连接到企业微信(一)

98 阅读5分钟

image.png

一. 前言

之前已经发过两篇文章,介绍GoHumanLoopLangGraphCrewAI这两个 AI Agent 框架中的实践应用。

GoHumanLoop:是一个Python库,使AI Agent能够在关键阶段动态请求人类输入(批准/反馈/对话)。

之前的应用主要通过本地终端来获取人类的输入-审批、反馈等。在GoHumanLoop也支持通过API Provider 来对接外部的审批系统。
最近我开发了一个对接到企业微信的 API Service,能将GoHumanLoop 的审批、获取信息等请求与用户的企业微信系统进行链接,帮助用户完成AI Agent 连接到企业微信,实现更强大的Human-in-the-Loop
今天我们来一起看一下这个 API Service - GoHumanLoop-WeWork

二. 项目介绍

GoHumanLoop WeWork 是针对GoHumanLoop在企业微信场景下进行审批、获取信息操作的示例服务。方便用户在使用GohumanLoop时,对接到自己的企业微信环境中。

✈️✈️✈️ GitHub项目地址: GoHumanLoop-WeWork


GoHumanLoop与Gohumanloop-Wework架构关系

从上图看出

  • GoHumanLoop提供了一套统一的 API 接口,通过API Provider对外提供。
  • gohumanloop-wework实现了API Consumer的功能,通过API Provider来获取审批相关的信息,并且通过企业微信 WeWork API 实现了与用户的企业微信应用进行交互,发送审批请求和获取审批事件回调等。

gohumanloop-wework采用Beego作为 Web 框架。sqlite作为简单的数据存储。go-workwx作为企业微信 API 实现。提供一个可拓展的 GoHumanLoop 企业微信审批示例服务。

  • 访问 Swagger 文档:

image.png

gohumanloop-wework 提供两大类接口,一个对接GoHumanLoop的 API Provider 的 HumanLoop接口。另一个是获取 API Key 的接口,方便安全认证。

三. 项目部署

💡💡💡 💡💡💡💡💡💡 需要用户提前准备好企业微信和企业微信应用 详情见:work.weixin.qq.com/

  1. 用户需要获取企业微信企业ID
  2. 用户需要在企业微信中创建应用GoHumanLoop,获取应用ID应用Secret
  3. 用户需要在应用中,开启 API 接收消息。获取TokenEncodingAESKey 用于接收审批消息事件。审批应用中设置可调用接口的应用,关联新创建的应用。
  4. 用户需要将企业ID应用ID应用SecretTokenEncodingAESKey配置到 GoHumanLoop 中
  5. 用户需要在企业微信中创建审批模板,获取审批模板ID信息模板ID
  6. 用户需要将审批模板ID信息模板ID创建人ID审批人ID配置到 GoHumanLoop 中

1. 配置文件

  • 项目配置样例文件在conf/app.conf.example
appname = gohumanloop-wework
httpport = 8080 # HTTP 端口按需配置

# wework
agentid = 1000003 # 企业微信应用ID
corpsecret = XXXXX # 应用Secret
corpid = XXXXX # 企业ID
ptoken = XXXXX # Token
pkey = XXXXX # EncodingAESKey

# template
approve_template_id = 8TmoaR5xEaZsuzKyRT4Zt82FLYCYXVN5EVk6R # 审批模板ID
info_template_id = 3WN63LowuwFRsDXft1GbiQi4NrYyLApeejYCBs3S # 信息模板ID
creator_userid = ChenFuDong # 创建人ID,详情参考企业微信文档
approver_userid = ChenFuDong # 审批人ID (默认审批人,实际可通过 GoHumanLoop Metadata数据指定)

# database
datapath = ./data/gohumanloop.db # 数据库路径
  • 修改配置文件
mv conf/app.conf.example conf/app.conf

2. 企业微信审批模板

目前这个版本中,支持审批和信息获取。分别使用两个模板,模板格式固定,需要参考以下配置:


审批模板
  • 参考图片内的字段,都是文本控件和多行文本控件。包括以下字段
    1. 任务 ID
    2. 对话 ID
    3. 请求 ID
    4. HumanLoop 类型
    5. 申请内容
    6. 申请问题
    7. 申请说明

以上字段由 GoHumanLoop 库来传输并自动填充并自动发起审批流程


审批模板
  • 审批流程可以参考上图设置,审批人设置为自选

信息获取模板
  • 参考图片内的字段,都是文本控件和多行文本控件。详情同审批流程模板和说明

信息获取模板
  • 信息获取流程不需要具体审批,只需要获取具体信息。没有设置审批人,只设置了办理人,专用于获取信息。

3. 部署方式

GoHumanLoop Wework 支持两种部署方式手动部署和 Docker 部署。

[!WARNING] 这两种方式均需要有企业微信同一注册主体下的服务器。服务器和域名需要已备案,开启 API 接收消息时也需要域名验证是否是同一注册主体下

1. 手动部署

Go 版本要求:1.23.0

  • 下载代码
git clone https://github.com/ptonlix/gohumanloop-wework.git
  • 编译
make build
  • 运行
./gohumanloop-wework

2. Docker 部署

  • 提前安装好 Docker 服务
  • 拉取镜像
docker pull ptonlix/gohumanloop-wework:latest
  • 运行容器
docker run -d \
  --name gohumanloop-wework \
  -v /path/to/local/conf:/app/conf \
  -v /path/to/local/data:/app/data \
  -p 9800:9800 \
  ptonlix/gohumanloop-wework:latest

配置反向代理

以 Nginx 为例,可以参考在 Nginx 配置文件中添加以下路由配置

location ^~ /humanloop/ {
        proxy_pass http://127.0.0.1:9800/gohumanloop/callback;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-Port $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ^~ /api/v1/humanloop/ {
        proxy_pass http://127.0.0.1:9800;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-Port $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ^~ /api/v1/apikey/ {
        proxy_pass http://127.0.0.1:9800;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-Port $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

四. 实践案例

以我自己创建的企业微信为例,我用同一个企业主体下备案过的腾讯云服务器

  • 企业微信创建好应用

image.png

  • 配置腾讯云Docker加速地址
vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
]
}
  • 拉取镜像
docker pull ptonlix/gohumanloop-wework:latest
  • 运行容器
docker run -d \
  --name gohumanloop-wework \
  -v /path/to/local/conf:/app/conf \
  -v /path/to/local/data:/app/data \
  -p 9800:9800 \
  ptonlix/gohumanloop-wework:latest

image.png

  • 企业微信配置好API接收消息

image.png

五. 总结

好了,以上就是我们的GoHumanLoop-WeWork链接企业微信进行Human-in-the-Loop的准备工作,下一步让我们看看怎么利用GoHumanLoop结合到我们的AI Agent中。

✈️✈️✈️ GitHub项目地址: GoHumanLoop-WeWork

如果觉得对你有帮助的话,欢迎Star🌟

如果感兴趣的话,可以联系我进一步交流🤝

谢谢~