现在需要对接智谱AI、微信公众号了。
因为前两步骤我们都准备好了,这里其实就相对简单,前面我们有公众号的业务代码:
from wechatpy import parse_message
from wechatpy.replies import TextReply
@app.post(
"/robot/api"
)
async def handle_wx(request: Request):
xml = await request.body()
msg = parse_message(xml)
print(msg)
if msg.type == "text":
content = f"Reply: {msg.content}"
reply = TextReply(content=content, message=msg)
# 转换成 XML
return reply.render()
return TextReply(content="Not support type", message=msg)
注意,在代码的第14
行,我们实际上是返回了一个固定的回复,即在用户消息前面加上了Reply:
,所以这里实际上只需要调用智谱AI的接口就行了,简单来说改成如下:
# before
content = f"Reply: {msg.content}"
# after
response = get_completion(msg.content)
content = response.choices[0].message
至此,一个简单的对话就实现了。
如何开发更复杂的功能呢?比如:
- 多轮对话
- 支持富文本
其实公众号是可以拿到一个FromUserName
信息,可以根据这个信息,将用户历史发送的消息-系统回复
进行存储,如存在内存或redis
、mysql
都是可以的。这样每次请求需要将消息都传给大模型服务,这样就可以实现了。
富文本也是支持的,请参考微信公众号开发文档,以及智谱AI的相关文档。