当前位置:   article > 正文

零成本打造公众号聊天机器人:Cloudflare人工智能免费利用指南_workers cloudflare ai

workers cloudflare ai

Cloudflare Workers AI 现在可以免费使用了,把它集成到我们的公众号作为聊天机器人,先看成品,直接发送消息,由AI回复

Cloudflare Workers AI提供了文本生成、翻译、图像生成、图像分类、语言识别等多种模型, 每天可以有100000次的免费请求

Cloudflare Workers AI 目前为开放 Beta 版,不建议用于生产数据和流量,限制 + 访问可能会发生变化

Cloudflare AI 使用

直接使用cloudflare AI接口(建议)

cloudflare提供接口可以直接使用

使用 Workers 来布署(相对复杂)

这种方式更加自由,可以自定义更多功能。

公众号回复服务

要求:需要一台服务器和基础编程能力

当用户给公众号发消息时,公众号会把消息发送到我们的服务器,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

由于cloudflare接口在国外,网络原因请求可以会超过5秒,以下是我的处理过程:

  • 当收到消息时会把当前 msg_id 作为hash键保存到redis中,msg_id: {“error”: “错误信息”, “content”: “接口返回结果”}
  • 创建一个apscheduler任务去发起请求,当请求完成后把结果保存到当前msg_id键的hash中,
  • 在接口中每隔300ms检查一次是否有结果(5秒超时),有结果返回。
  1. @router.post("/wx", )
  2. def message(request: Request, param = Body()):
  3. """"""
  4. try:
  5. params = xmltodict(param.decode())
  6. event = params.get("Event")
  7. to_user = params.get("FromUserName")
  8. content = params.get("Content")
  9. msg_id = params.get("MsgId")
  10. # 回复文本消息
  11. if params.get("MsgType") == "text":
  12. # 检查是否存在当前msg_id, 没有则添加任务发送请求
  13. if redis.exists(replay_key(msg_id)) == 0:
  14. add_task(replay_key(msg_id), cf_request, (content, msg_id))
  15. delay = 5000 # 等待时间5s
  16. step = 300 # 间隔检查时间300ms
  17. while delay > 0:
  18. logger.info(f"{delay}_{msg_id}_{str(redis.hgetall(replay_key(msg_id)))}")
  19. # 检查是否有错误
  20. if redis.hget(replay_key(msg_id), "error"):
  21. redis.delete(replay_key(msg_id))
  22. return Response(replay_msg(to_user, "系统错误"))
  23. content = redis.hget(replay_key(msg_id), "content")
  24. # 有结果返回结果
  25. if content:
  26. redis.delete(replay_key(msg_id))
  27. return Response(replay_msg(to_user, content))
  28. delay -= step
  29. time.sleep(step/1000)
  30. # 用户关注回复消息
  31. if event == "subscribe":
  32. result = """[让我看看]"""
  33. return Response(replay_msg(to_user, result))
  34. except Exception as e:
  35. logger.exception(e)
  36. return Response("success")

对于这个过程还有什么优化方法,欢迎大佬指正

公众号回复服务2

还可以直接使用cloudflare的Workers来实现,不需要服务器,具体后续分享

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/370787
推荐阅读
相关标签
  

闽ICP备14008679号