OpenNLU开放域文本理解模型

说明

支持的领域/任务:OpenNLU可以在任意领域完成各类NLU任务。

OpenNLU全称Open Domain Natural Language Understanding,是开箱即用的文本理解大模型,适用于中文、英文在零样本条件下进行文本理解任务,如信息抽取、文本分类等。

OpenNLUNLU任务分成两个大类:抽取和分类。抽取任务目标是从给定文本中抽取一些片段,如实体识别、事件抽取、关键词抽取等。分类任务目标是将给定文本按照给定的类别体系进行分类,如主题分类、情感分类、意图分类等。

重要

虽然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最长限制1024tokens,为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 调用来响应客户请求。

前提条件

提交接口调用

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最长限制1024tokens,为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_tokensinput_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"
}

异常响应示例

在访问请求出错的情况下,输出的结果中会通过codemessage指明出错原因。

{
    "code":"InvalidApiKey",
    "message":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}

状态码说明

大模型服务平台通用状态码请查阅:错误码