Warning
WeLM 是一个非常擅长理解和生成文本的通用语言模型。你可以通过调用 WeLM 的 API 解决多种多样涉及文本的任务。
在本教程中,我们将快速构建一个给猫咪取名字的程序以及一个简单的问答程序。在此过程中,你将学习到将 WeLM API 用于其他任务(包括且不限于对话、文本风格转换、阅读理解、翻译等)的关键概念和步骤,更多如何构造prompt的例子和关键tips还可以阅读功能介绍。
「补全」是 WeLM API 的核心思想。 输入文本作为 Prompt(提示),API 将返回文本,并尝试补全您提供的任何上下文。
如果你给的 prompt 是,
我今天很
模型也许会返回文本:“开心,因为看了一本书。”。
如果你给的 prompt 是,
问题:百年孤独的作者是?\n 回答:
模型也许会返回文本:“加西亚·马尔克斯”。
下面我们将利用 WeLM 的补全能力首先实现一个给猫咪取名字的功能。
在很多场景下,详细告诉 WeLM 你想要做什么任务是有帮助的。 你可以尝试在playground中输入,
给我的猫取个名字
但你会发现效果似乎不尽人意,这是因为这个任务不太常见,你需要告诉 WeLM 一些例子让它「举一反三」。
接下来我们提供几个例子给 WeLM:
给自己的猫咪取个特色的名字。
描述:美短 动漫角色
名字:哆啦
描述:英短 黑色 饮品
名字:可乐
描述:橘猫 黄色 食物
名字:
你可以再次粘贴到Playground中,你会发现这次 WeLM 返回的效果很棒,有很多名字你可以选择。这说明提供你期望的输入和输出样例有助于WeLM返回更好的结果。
如果你不完全不熟悉深度学习的概念,你主要修改的参数是 temperature,当temperature 为0,就是稳定输出同一个结果,当temperature越大,生成不同内容的可能性越发散,更多内容可以跳转至开放文档。
你可以用你熟悉的编程语言请求WeLM的API,
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer your_api_token' https://welm.weixin.qq.com/v1/completions -d \
'{
"prompt":"给自己的猫咪取个特色的名字。\n\n描述:美短 动漫角色\n名字:哆啦\n描述:英短 黑色 饮品\n名字:可乐\n描述:橘猫 黄色 食物\n名字:",
"model":"xl",
"max_tokens":16,
"temperature":0.85,
"top_p":0.95,
"top_k":10,
"n":5,
"echo":false,
"stop":"\n"
}'
这里我们设置停用词(对应参数stop)为换行符"\n",因为按照 WeLM 强大的补全能力,它可以持续的补全出多个【描述】和【名字】,"\n"可以很好的截断提取出我们需要的部分,你可以根据你的prompt格式或者内容设置其他停用词。
我们再用WeLM实现一个简单的问答程序。
按照上一个例子里学到的,你可以尝试在playground中输入,
下面我们做个问答任务
问题:二战转折点是?
回答:
此处为了答案的确定性设置参数 temperature 为0。但是我们发现答案似乎还不够正确。
接下来我们提供几个例子给 WeLM
下面我们做个问答任务
问题:百年孤独的作者是?
回答:加西亚·马尔克斯
问题:二战转折点是?
回答:
再次粘贴到Playground中,你会发现这次 WeLM 返回的结果更好了。用一个例子或者多个例子能让 WeLM 更清楚的知道它应该如何处理以及返回什么内容。
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer your_api_token' https://welm.weixin.qq.com/v1/completions -d \
'{
"prompt":"下面我们做个问答任务\n\n问题:百年孤独的作者是?\n回答:加西亚·马尔克斯\n问题:二战转折点是?\n回答:",
"model":"xl",
"max_tokens":20,
"temperature":0.0,
"top_p":0.0,
"top_k":0,
"n":1,
"echo":false,
"stop":"\n"
}'
注意这里的temperature等参数设置和给猫咪取名字的程序有所不同。