OpenNLU开放域文本理解模型
支持的领域/任务:OpenNLU可以在任意领域完成各类NLU任务。
OpenNLU全称Open Domain Natural Language Understanding,是开箱即用的文本理解大模型,适用于中文、英文在零样本条件下进行文本理解任务,如信息抽取、文本分类等。
OpenNLU将NLU任务分成两个大类:抽取和分类。抽取任务目标是从给定文本中抽取一些片段,如实体识别、事件抽取、关键词抽取等。分类任务目标是将给定文本按照给定的类别体系进行分类,如主题分类、情感分类、意图分类等。
虽然OpenNLU已经在大量任务上训练且具备泛化性,但由于实际NLU任务的多样性、复杂性,其在不同具体任务上的效果可能有较大差别,请谨慎评估模型效果是否符合需求。
模型概览
模型名 | 模型简介 |
opennlu-v1 | 开箱即用的文本理解大模型,适用于中文、英文零样本条件下进行文本理解任务,如信息抽取、文本分类等。 |
SDK使用
前提条件
以下示例展示了调用OpenNLU模型对一个用户指令进行响应的代码。
请先参考“配置API-KEY到环境变量”正确设置您的API-KEY。
# coding=utf-8
# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html
from dashscope import Understanding
from http import HTTPStatus
import json
response = Understanding.call(
model='opennlu-v1',
sentence='老师今天表扬我了',
labels='积极,消极',
task='classification')
if response.status_code == HTTPStatus.OK:
print(json.dumps(response.output, indent=4, ensure_ascii=False))
else:
print('Code: %d, status: %s, message: %s' % (response.status_code, response.code, response.message))
import com.alibaba.dashscope.nlp.understanding.Understanding;
import com.alibaba.dashscope.nlp.understanding.UnderstandingParam;
import com.alibaba.dashscope.nlp.understanding.UnderstandingResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static void main(String[] args) {
try{
UnderstandingParam param =
UnderstandingParam.builder()
.model(Understanding.Models.OPENNLU_V1)
.sentence("老师今天表扬我了")
.labels("积极,消极")
.task("classification")
.build();
// 如果正常返回即可以直接使用
// 否则会抛出ApiException异常,检查e.getStatus()即可拿到错误信息
Understanding understanding = new Understanding();
UnderstandingResult result = understanding.call(param);
System.out.println(result.getOutput().getText());
System.exit(0);
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
e.printStackTrace();
}
}
}
参数配置
参数 | 类型 | 必选 | 描述 | 示例值 |
model | String | 是 | 指明需要调用的模型。 | opennlu-v1 |
task | String | 否 | 任务类型,可选项是 extraction classification,默认为extraction | |
sentence | String | 是 | 用户输入的需要处理的文本内容,支持中英文。(input最长限制1024个tokens,为input所有字段的总和) | 老师今天表扬我了 |
labels | String | 是 | 对于抽取任务,label为需要抽取的类型名称。对于分类任务,label为分类体系。不同标签用中文逗号分隔。 | 抽取任务: 实体识别:人名,地名 阅读理解:小明的年龄是多少?,小明的身高是多少? 分类任务: 主题分类:体育新闻,娱乐新闻 情感分类:积极,消极 |
返回结果
返回结果示例
{
"status_code": 200,
"request_id": "39a41abe-1bed-430a-b9b5-277130c7eb82",
"code": "",
"message": "",
"output": {
"text": "积极;"
},
"usage": {
"output_tokens":2,
"input_tokens":11,
"total_tokens":13
}
}
返回参数说明
返回参数 | 类型 | 说明 |
status_code | int | 200(HTTPStatus.OK)表示请求成功,否则表示请求失败,可以通过code获取错误码,通过message字段获取错误详细信息。 |
request_Id | string | 系统生成的标志本次调用的id。 |
code | string | 表示请求失败,表示错误码,成功忽略。 |
message | string | 失败,表示失败详细信息,成功忽略。 |
output | dict | 调用结果信息,包含输出text。 |
output.text | string | 模型生成回复。 |
usage | dict | 计量信息,表示本次请求计量数据。 |
usage.input_tokens | int | 用户输入文本转换成Token后的长度。 |
usage.output_tokens | int | 模型生成回复转换为Token后的长度。 |
usage.total_tokens | int | input_tokens + output_tokens。 |
HTTP调用接口
功能描述
OpenNLU模型支持 HTTP 调用来响应客户请求。
前提条件
已开通服务并获得API-KEY:获取API-KEY。
提交接口调用
POST https://dashscope.aliyuncs.com/api/v1/services/nlp/nlu/understanding
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
Content-Type | String | Header | 是 | 请求类型:application/json | application/json |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
X-DashScope-WorkSpace | String | Header | 否 | 指明本次调用需要使用的workspace;需要注意的是,对于子账号Apikey调用,此参数为必选项,子账号必须归属于某个workspace才能调用;对于主账号Apikey此项为可选项,添加则使用对应的workspace身份,不添加则使用主账号身份。 | ws_QTggmeAxxxxx |
model | String | Body | 是 | 指明需要调用的模型。 | opennlu-v1 |
input.task | String | Body | 否 | 任务类型,可选项是 extraction classification,默认是 extraction | |
input.sentence | String | Body | 是 | 用户输入的需要处理的文本内容,支持中英文。(input最长限制1024个tokens,为input所有字段的总和) | 老师今天表扬我了 |
input.labels | String | Body | 是 | 对于抽取任务,label为需要抽取的类型名称。对于分类任务,label为分类体系。不同标签用中文逗号分隔。 | 抽取任务: 实体识别:人名,地名 阅读理解:小明的年龄是多少?,小明的身高是多少? 分类任务: 主题分类:体育新闻,娱乐新闻 情感分类:积极,消极 |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.text | String | 本次请求的算法输出内容。 | 积极 |
usage.output_tokens | Integer | 本次请求算法输出内容的token数目。 | 200 |
usage.input_tokens | Integer | 本次请求输入内容的 token 数目,包括input所有内容 | 20 |
usage.total_tokens | Integer | 本次请求用量计量的总内容,上面output_tokens和input_tokens的和。 | 220 |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
以下示例展示通过CURL命令来调用 opennlu-v1 模型的脚本。
需要使用您的API-KEY替换示例中的 your-api-key ,代码才能正常运行。
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/nlp/nlu/understanding' \
--header 'Authorization: Bearer <<YOUR_API_KEY> \
--header 'Content-Type: application/json' \
--data '{
"model": "opennlu-v1",
"input":{
"sentence":"老师今天表扬我了",
"task": "classification",
"labels":"积极,消极"
},
"parameters": {
}
}'
响应示例
{
"output":{
"text":"积极",
},
"usage":{
"output_tokens":2,
"input_tokens":11,
"total_tokens":13
},
"request_id":"d89c06fb-46a1-47b6-acb9-bfb17f814969"
}
异常响应示例
在访问请求出错的情况下,输出的结果中会通过code和message指明出错原因。
{
"code":"InvalidApiKey",
"message":"Invalid API-key provided.",
"request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}
状态码说明
大模型服务平台通用状态码请查阅:错误码