Files
hsa/.venv/lib/python3.10/site-packages/dashscope/nlp/understanding.py
2025-09-11 13:29:12 +00:00

63 lines
2.7 KiB
Python

from dashscope.api_entities.dashscope_response import DashScopeAPIResponse
from dashscope.client.base_api import BaseApi
from dashscope.common.error import InputRequired, ModelRequired
from dashscope.common.logging import logger
from dashscope.common.utils import _get_task_group_and_task
class Understanding(BaseApi):
nlu_task = 'nlu'
"""API for AI-Generated Content(AIGC) models.
"""
class Models:
opennlu_v1 = 'opennlu-v1'
@classmethod
def call(cls,
model: str,
sentence: str = None,
labels: str = None,
task: str = None,
api_key: str = None,
**kwargs) -> DashScopeAPIResponse:
"""Call generation model service.
Args:
model (str): The requested model, such as opennlu-v1
sentence (str): The text content entered by the user that needs to be processed supports both Chinese and English. (The maximum limit for input is 1024 tokens, which is the sum of all input fields).
labels (list): For the extraction task, label is the name of the type that needs to be extracted. For classification tasks, label is the classification system. Separate different labels with Chinese commas..
task (str): Task type, optional as extraction or classification, default as extraction.
api_key (str, optional): The api api_key, can be None,
if None, will get by default rule(TODO: api key doc).
Returns:
DashScopeAPIResponse: The understanding result.
"""
if (sentence is None or not sentence) or (labels is None
or not labels):
raise InputRequired('sentence and labels is required!')
if model is None or not model:
raise ModelRequired('Model is required!')
if kwargs.pop('stream', False): # not support stream
logger.warning('stream option not supported for Understanding.')
task_group, function = _get_task_group_and_task(__name__)
input, parameters = cls._build_input_parameters(
model, sentence, labels, task, **kwargs)
return super().call(model=model,
task_group=task_group,
task=Understanding.nlu_task,
function=function,
api_key=api_key,
input=input,
**parameters)
@classmethod
def _build_input_parameters(cls, model, sentence, labels, task, **kwargs):
parameters = {}
input = {'sentence': sentence, 'labels': labels}
if task is not None and task:
input['task'] = task
return input, {**parameters, **kwargs}