前言
我在公众号后台设置了关键词自动回复,但经常收到很多读者的错别字,导致无法触发。 恰巧我前段时间刚刚申请了WeLM的使用权,所以想升级我的公众号。
WeLM 简介
WeLM是腾讯开发的一种通用语言模型,擅长理解和生成文本。 官方文档:
主要功能如下,输入示例内容即可获取答案
阅读理解
例子:
阅读文章:《经审理查明,被告人张××、杜×、杨某均为辽宁省辽阳市第一监狱五监区服刑人员。2015年11月3日13时00分左右被告人张××因杜安发生争执,被告人杨二上前抓住被害人于某的手臂,用手击打被害人颈部两下,被告人张某、杜某上前对被害人挥拳殴打。于某的脸部、头部和腹部分别被赶到的警察拦住,受害人××被殴打,面部受伤,鼻子流血,当天下午14:00左右,被送往监区医院。经治疗,诊断为:鼻子中部向左偏畸形,11月5日在监狱医院X光检查诊断为鼻骨骨折。2015年11月18日,经襄平法医鉴定辽阳鉴定所显示,受害人于某身体伤害程度为轻伤二级。 被告人张××、杜某?”答:
开放域问答
例子:
请根据所学知识回答以下问题:《一百年孤独》的作者是谁? 答案:加西亚·马尔克斯问题:第二次世界大战的转折点是什么? 回答:
文本分类
例子:
判断这条微博的情绪是正面的还是负面的 微博:本命年第一天厕所堵了,[泪]添加到堵塞类别:负面微博:华丽亮眼! [爱你] 分类: 正能量 微博: 很有娱乐精神[嘻嘻] 分类:
文字样式转换
例子:
有这样一段文字,{医生微笑着递给小明一根棒棒糖,让小明吃药。 重写这段话,让它更可怕。 {医生让小明吃药,眼神很凶,小明感到很害怕}。 有这样一段文字:{雨下得很大}重写这段文字,使其更加具体。 {刹那间,雨滴排成了一条线,大雨从天而降,犹如天塌陷一般。 }。 有这样一段文字,{王老师离开电影院,外面已经天黑了}重写这一段,加入更多的电影信息。 {这部电影比小王预想的时间要长。 虽然口碑很好,但离开电影院的时候小王还是有些失望。 } 有这样一段文字,{男人站在超市外面打电话}重写这段文字来描述一个小丑。 {男人站在马戏团外面拿着气球打电话}有这样一段文字,{风铃在响}这段文字被重写,让它变得更丰富。 {我对这个风铃的喜爱是因为它清脆的声音。 每当风吹过,风铃就会发出非常美妙的声音,听起来是那么乐观、豁达,就像小女孩的咯咯笑声。 } 有这样一段文字,{我想家}重写这段文字,加入更多悲伤的感情。 {
个性化对话生成
例子:
李白,又名太白,又名千莲居书,别称“流仙”,是唐代伟大的浪漫主义诗人,被后人誉为“诗仙”。 我:今天我们穿越时空去见见李白。 李白,你喜欢喝酒吗? 李白:当然。 花间一壶酒,独酌无相亲。 举杯邀明日,令三人面面相觑。 我:你觉得杜甫怎么样? 李白:他很欣赏我,但他有自己的风格。 我:你怎么这么无忧无虑? 李白:我天生就有用,钱花光了我还会回来的! 我:你去哪儿了? 李白:
翻译
例子:
“微信AI推出のWeLM就是那个いろいろな任务をができる”的中文翻译是:
书写或文字延续
例子:
中国幅员辽阔,资源丰富,自然风光优美。 大自然的鬼斧神工,创造了许多令人叹为观止的美景。
总之,尽量输入一些样本,否则语料太短,很难输出好的结果。
调用接口
WeLM调用接口如下:
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer your_api_token' https://welm.weixin.qq.com/v1/completions -d \ '{ "prompt":"测试", "model":"xl", "max_tokens":16, "temperature":0.0, "top_p":0.0, "top_k":10, "n":1, "echo":false, "stop":",,.。" }'
复制
参数含义:
返回状态码含义:
调用示例
我们先用它来调用接口,编写测试程序。
# -- coding: utf-8 -- """ @Time:2022-10-29 23:36 @Author:zstar @File:te_WeLM.py @Describe:测试WeLM """ import requests url = 'https://welm.weixin.qq.com/v1/completions' prompt = "“I am a programmer in Tencent”的中文翻译是:" data = { "prompt": prompt, "model": "xl", "max_tokens": "16", "temperature": "0.0", "top_p": "0.0", "top_k": "10", "n": "1", "echo": False, "stop": ",,.。", } header = { "Content-Type": "application/json", "Authorization": "自己的token" } if __name__ == '__main__': response = requests.post(url, json=data, headers=header) result = eval(response.text) # str -> dict # print(result) print(result["choices"][0]["text"])
复制
把这里的替换成你自己的
微信公众号开发
本地测试完成后,下一步就是部署到微信公众号上。 微信公众号官方文档:
顺便说一句,我想在这里投诉一下。 微信公众号提供的例程是基于.7的。 我使用的版本是.8。 部署过程中存在很多陷阱。
设置服务器配置
微信公众号开发需要一台有公网IP地址的服务器,而我手头正好有一台云服务器。 首先需要在公众号后台绑定服务器。
现在在服务器上配置,首先安装web库
pip install web.py
复制
然后编写main.py并测试:
# -*- coding: utf-8 -*- # filename: main.py import web from handle import Handle urls = ( '/wx', 'Handle', ) if __name__ == '__main__': app = web.application(urls, globals()) app.run()
复制
终端输入:
python3 main.py 80
复制
正常运行如下图所示。 如果报错,则说明80端口可能被其他程序占用,需要手动调整。
在此插入图片描述
测试完成后,到微信公众号后台设置自己的URL:服务器域名/wx. 您需要自行设置。 建议使用工具来生成。 如果太短,很容易被别人重复,导致后面出现其他错误,然后随机生成Key。
在此插入图片描述
直接点击提交会失败,需要在服务器端设置:
创建一个新的.py并将其修改为您自己的设置
# -*- coding: utf-8 -*- # filename: handle.py import hashlib import web class Handle(object): def GET(self): try: data = web.input() if len(data) == 0: return "hello, this is handle view" signature = data.signature timestamp = data.timestamp nonce = data.nonce echostr = data.echostr token = "自己的token" #请按照公众平台官网\基本配置中信息填写 list =[token, timestamp, nonce] list.sort() sha1=hashlib.sha1() sha1.update(list[0].encode('utf-8')) sha1.update(list[1].encode('utf-8')) sha1.update(list[2].encode('utf-8')) hashcode= sha1.hexdigest() print("handle/GET func: hashcode, signature: ", hashcode, signature) if hashcode == signature: return echostr else: return "" except Exception: return ""
复制
然后重新运行:
python3 main.py 80
复制
此时,进入公众号后台,点击提交。 如果提交成功,则设置完成。